{"version":3,"file":"remote-mf_core.js","mappings":"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","sources":["webpack:///webpack/runtime/load script","webpack:///webpack/runtime/consumes","webpack:///./node_modules/@datadog/browser-core/src/tools/display.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/catchUserErrors.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/monitor.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/utils/polyfills.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/getGlobalObject.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/utils/byteUtils.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/getZoneJsOriginalValue.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/timer.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/utils/functionUtils.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/serialisation/jsonStringify.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/utils/objectUtils.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/context/customerDataTracker.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/utils/typeUtils.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/mergeInto.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/serialisation/sanitize.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/observable.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/context/contextManager.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/trackingConsent.ts","webpack:///./node_modules/@datadog/browser-core/src/browser/addEventListener.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/context/storeContextManager.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/encoder.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/stackTrace/computeStackTrace.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/stackTrace/handlingStack.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/error/error.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/experimentalFeatures.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/configuration/intakeSites.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/utils/numberUtils.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/utils/timeUtils.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/sendToExtension.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/connectivity/connectivity.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/utils/arrayUtils.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/boundedBuffer.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/telemetry/rawTelemetryEvent.types.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/telemetry/telemetry.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/user/user.ts","webpack:///./node_modules/@datadog/browser-core/src/boot/displayAlreadyInitializedError.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/utils/stringUtils.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/vital/vitalCollection.ts","webpack:///./node_modules/@datadog/browser-core/src/transport/eventBridge.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/instrumentMethod.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/utils/urlPolyfill.ts","webpack:///./node_modules/@datadog/browser-core/src/browser/fetchObservable.ts","webpack:///./node_modules/@datadog/browser-core/src/browser/cookie.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/synthetics/syntheticsWorkerValues.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/utils/browserDetection.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/session/storeStrategies/sessionStoreStrategy.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/session/sessionConstants.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/session/sessionState.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/session/oldCookiesMigration.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/session/storeStrategies/sessionInCookie.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/session/storeStrategies/sessionInLocalStorage.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/session/sessionStoreOperations.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/session/sessionStore.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/configuration/endpointBuilder.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/configuration/tags.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/configuration/configuration.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/configuration/transportConfiguration.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/matchOption.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/tracing/tracer.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/configuration/configuration.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/configuration/remoteConfiguration.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/boot/preStartRum.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/plugins.ts","webpack:///./node_modules/@datadog/browser-core/src/browser/pageExitObservable.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/browser/domMutationObservable.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/error/error.types.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/eventRateLimiter/createEventRateLimiter.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/limitModification.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/assembly.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/contexts/syntheticsContext.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/abstractLifeCycle.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/lifeCycle.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/valueHistory.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/contexts/viewHistory.ts","webpack:///./node_modules/@datadog/browser-core/src/browser/xhrObservable.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/resource/resourceUtils.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/requestCollection.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/browser/performanceObservable.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/utils/responseUtils.ts","webpack:///./node_modules/@datadog/browser-core/src/tools/readBytesFromStream.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/discardNegativeDuration.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/trackEventCounts.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/browser/firstInputPolyfill.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/waitPageActivityEnd.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/browser/polyfills.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/browser/htmlDomUtils.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/privacy.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/action/getActionNameFromElement.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/getSelectorFromElement.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/action/clickChain.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/action/listenActionEvents.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/action/computeFrustration.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/action/interactionSelectorCache.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/action/trackClickActions.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/action/actionCollection.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/error/trackRuntimeError.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/console/consoleObservable.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/report/reportObservable.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/error/errorCollection.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/error/trackConsoleError.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/error/trackReportError.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/resource/matchRequestResourceEntry.ts","webpack:///./node_modules/@datadog/browser-core/src/browser/runOnReadyState.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/tracing/getDocumentTraceId.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/browser/performanceUtils.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/resource/retrieveInitialDocumentResourceTiming.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/resource/resourceCollection.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackFirstContentfulPaint.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackLargestContentfulPaint.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackFirstHidden.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackInitialViewMetrics.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackNavigationTimings.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackFirstInput.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackCumulativeLayoutShift.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/interactionCountPolyfill.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/browser/viewportObservable.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackInteractionToNextPaint.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/browser/scroll.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackScrollMetrics.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackCommonViewMetrics.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackLoadingTime.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/trackViews.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/viewCollection.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/view/trackViewEventCounts.ts","webpack:///./node_modules/@datadog/browser-core/src/domain/session/sessionManager.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/rumSessionManager.ts","webpack:///./node_modules/@datadog/browser-core/src/transport/batch.ts","webpack:///./node_modules/@datadog/browser-core/src/transport/sendWithRetryStrategy.ts","webpack:///./node_modules/@datadog/browser-core/src/transport/httpRequest.ts","webpack:///./node_modules/@datadog/browser-core/src/transport/flushController.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/contexts/urlContexts.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/browser/locationChangeObservable.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/contexts/featureFlagContext.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/startCustomerDataTelemetry.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/contexts/pageStateHistory.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/browser/cookieObservable.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/contexts/ciVisibilityContext.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/replayStats.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/serialization/serializationUtils.ts","webpack:///./node_modules/@datadog/browser-rum/src/types/sessionReplayConstants.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeStyleSheets.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeAttribute.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeAttributes.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeNode.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeDocument.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/eventsUtils.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/viewports.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/assembly.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/trackers/trackMove.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/trackers/trackMouseInteraction.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/trackers/trackScroll.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/trackers/trackViewportResize.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/trackers/trackMediaInteraction.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/trackers/trackStyleSheet.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/trackers/trackFocus.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/trackers/trackFrustration.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/trackers/trackViewEnd.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/trackers/trackInput.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/mutationBatch.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/trackers/trackMutation.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/record.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/elementsScrollPositions.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/shadowRootsController.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/startFullSnapshots.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/record/recordIds.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/segmentCollection/segment.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/segmentCollection/segmentCollection.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/segmentCollection/buildReplayPayload.ts","webpack:///./node_modules/@datadog/browser-rum/src/boot/isBrowserSupported.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/getSessionReplayLink.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/getSessionReplayUrl.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/deflate/deflateEncoder.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/deflate/deflateWorker.ts","webpack:///./node_modules/@datadog/browser-rum/src/entries/main.ts","webpack:///./node_modules/@datadog/browser-core/src/boot/init.ts","webpack:///./node_modules/@datadog/browser-rum/src/boot/recorderApi.ts","webpack:///./node_modules/@datadog/browser-rum/src/boot/startRecording.ts","webpack:///./node_modules/@datadog/browser-rum/src/domain/startRecordBridge.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/boot/rumPublicApi.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/contexts/commonContext.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/boot/startRum.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/transport/startRumEventBridge.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/transport/startRumBatch.ts","webpack:///./node_modules/@datadog/browser-core/src/transport/startBatchWithReplica.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/contexts/displayContext.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/longAnimationFrame/longAnimationFrameCollection.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/longTask/longTaskCollection.ts","webpack:///./node_modules/@datadog/browser-rum-core/src/domain/contexts/internalContext.ts","webpack:///webpack/container-entry","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","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/sharing","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/runtime/nonce","webpack:///webpack/startup"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"mf_core:\";\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 || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { 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\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\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};","var parseVersion = (str) => {\n\t// see webpack/lib/util/semver.js for original code\n\tvar p=p=>{return p.split(\".\").map((p=>{return+p==p?+p:p}))},n=/^([^-+]+)?(?:-([^+]+))?(?:\\+(.+))?$/.exec(str),r=n[1]?p(n[1]):[];return n[2]&&(r.length++,r.push.apply(r,p(n[2]))),n[3]&&(r.push([]),r.push.apply(r,p(n[3]))),r;\n}\nvar versionLt = (a, b) => {\n\t// see webpack/lib/util/semver.js for original code\n\ta=parseVersion(a),b=parseVersion(b);for(var r=0;;){if(r>=a.length)return r=b.length)return\"u\"==n;var t=b[r],f=(typeof t)[0];if(n!=f)return\"o\"==n&&\"n\"==f||(\"s\"==f||\"u\"==n);if(\"o\"!=n&&\"u\"!=n&&e!=t)return e {\n\t// see webpack/lib/util/semver.js for original code\n\tvar r=range[0],n=\"\";if(1===range.length)return\"*\";if(r+.5){n+=0==r?\">=\":-1==r?\"<\":1==r?\"^\":2==r?\"~\":r>0?\"=\":\"!=\";for(var e=1,a=1;a0?\".\":\"\")+(e=2,t)}return n}var g=[];for(a=1;a {\n\t// see webpack/lib/util/semver.js for original code\n\tif(0 in range){version=parseVersion(version);var e=range[0],r=e<0;r&&(e=-e-1);for(var n=0,i=1,a=!0;;i++,n++){var f,s,g=i=version.length||\"o\"==(s=(typeof(f=version[n]))[0]))return!a||(\"u\"==g?i>e&&!r:\"\"==g!=r);if(\"u\"==s){if(!a||\"u\"!=g)return!1}else if(a)if(g==s)if(i<=e){if(f!=range[i])return!1}else{if(r?f>range[i]:f {\n\tvar scope = __webpack_require__.S[scopeName];\n\tif(!scope || !__webpack_require__.o(scope, key)) throw new Error(\"Shared module \" + key + \" doesn't exist in shared scope \" + scopeName);\n\treturn scope;\n};\nvar findVersion = (scope, key) => {\n\tvar versions = scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key]\n};\nvar findSingletonVersionKey = (scope, key) => {\n\tvar versions = scope[key];\n\treturn Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;\n\t}, 0);\n};\nvar getInvalidSingletonVersionMessage = (scope, key, version, requiredVersion) => {\n\treturn \"Unsatisfied version \" + version + \" from \" + (version && scope[key][version].from) + \" of shared singleton module \" + key + \" (required \" + rangeToString(requiredVersion) + \")\"\n};\nvar getSingleton = (scope, scopeName, key, requiredVersion) => {\n\tvar version = findSingletonVersionKey(scope, key);\n\treturn get(scope[key][version]);\n};\nvar getSingletonVersion = (scope, scopeName, key, requiredVersion) => {\n\tvar version = findSingletonVersionKey(scope, key);\n\tif (!satisfy(requiredVersion, version)) warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\treturn get(scope[key][version]);\n};\nvar getStrictSingletonVersion = (scope, scopeName, key, requiredVersion) => {\n\tvar version = findSingletonVersionKey(scope, key);\n\tif (!satisfy(requiredVersion, version)) throw new Error(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\treturn get(scope[key][version]);\n};\nvar findValidVersion = (scope, key, requiredVersion) => {\n\tvar versions = scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\tif (!satisfy(requiredVersion, b)) return a;\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key]\n};\nvar getInvalidVersionMessage = (scope, scopeName, key, requiredVersion) => {\n\tvar versions = scope[key];\n\treturn \"No satisfying version (\" + rangeToString(requiredVersion) + \") of shared module \" + key + \" found in shared scope \" + scopeName + \".\\n\" +\n\t\t\"Available versions: \" + Object.keys(versions).map((key) => {\n\t\treturn key + \" from \" + versions[key].from;\n\t}).join(\", \");\n};\nvar getValidVersion = (scope, scopeName, key, requiredVersion) => {\n\tvar entry = findValidVersion(scope, key, requiredVersion);\n\tif(entry) return get(entry);\n\tthrow new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));\n};\nvar warn = (msg) => {\n\tif (typeof console !== \"undefined\" && console.warn) console.warn(msg);\n};\nvar warnInvalidVersion = (scope, scopeName, key, requiredVersion) => {\n\twarn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));\n};\nvar get = (entry) => {\n\tentry.loaded = 1;\n\treturn entry.get()\n};\nvar init = (fn) => (function(scopeName, a, b, c) {\n\tvar promise = __webpack_require__.I(scopeName);\n\tif (promise && promise.then) return promise.then(fn.bind(fn, scopeName, __webpack_require__.S[scopeName], a, b, c));\n\treturn fn(scopeName, __webpack_require__.S[scopeName], a, b, c);\n});\n\nvar load = /*#__PURE__*/ init((scopeName, scope, key) => {\n\tensureExistence(scopeName, key);\n\treturn get(findVersion(scope, key));\n});\nvar loadFallback = /*#__PURE__*/ init((scopeName, scope, key, fallback) => {\n\treturn scope && __webpack_require__.o(scope, key) ? get(findVersion(scope, key)) : fallback();\n});\nvar loadVersionCheck = /*#__PURE__*/ init((scopeName, scope, key, version) => {\n\tensureExistence(scopeName, key);\n\treturn get(findValidVersion(scope, key, version) || warnInvalidVersion(scope, scopeName, key, version) || findVersion(scope, key));\n});\nvar loadSingleton = /*#__PURE__*/ init((scopeName, scope, key) => {\n\tensureExistence(scopeName, key);\n\treturn getSingleton(scope, scopeName, key);\n});\nvar loadSingletonVersionCheck = /*#__PURE__*/ init((scopeName, scope, key, version) => {\n\tensureExistence(scopeName, key);\n\treturn getSingletonVersion(scope, scopeName, key, version);\n});\nvar loadStrictVersionCheck = /*#__PURE__*/ init((scopeName, scope, key, version) => {\n\tensureExistence(scopeName, key);\n\treturn getValidVersion(scope, scopeName, key, version);\n});\nvar loadStrictSingletonVersionCheck = /*#__PURE__*/ init((scopeName, scope, key, version) => {\n\tensureExistence(scopeName, key);\n\treturn getStrictSingletonVersion(scope, scopeName, key, version);\n});\nvar loadVersionCheckFallback = /*#__PURE__*/ init((scopeName, scope, key, version, fallback) => {\n\tif(!scope || !__webpack_require__.o(scope, key)) return fallback();\n\treturn get(findValidVersion(scope, key, version) || warnInvalidVersion(scope, scopeName, key, version) || findVersion(scope, key));\n});\nvar loadSingletonFallback = /*#__PURE__*/ init((scopeName, scope, key, fallback) => {\n\tif(!scope || !__webpack_require__.o(scope, key)) return fallback();\n\treturn getSingleton(scope, scopeName, key);\n});\nvar loadSingletonVersionCheckFallback = /*#__PURE__*/ init((scopeName, scope, key, version, fallback) => {\n\tif(!scope || !__webpack_require__.o(scope, key)) return fallback();\n\treturn getSingletonVersion(scope, scopeName, key, version);\n});\nvar loadStrictVersionCheckFallback = /*#__PURE__*/ init((scopeName, scope, key, version, fallback) => {\n\tvar entry = scope && __webpack_require__.o(scope, key) && findValidVersion(scope, key, version);\n\treturn entry ? get(entry) : fallback();\n});\nvar loadStrictSingletonVersionCheckFallback = /*#__PURE__*/ init((scopeName, scope, key, version, fallback) => {\n\tif(!scope || !__webpack_require__.o(scope, key)) return fallback();\n\treturn getStrictSingletonVersion(scope, scopeName, key, version);\n});\nvar installedModules = {};\nvar moduleToHandlerMapping = {\n\t21527: () => (loadSingletonVersionCheckFallback(\"default\", \"react\", [4,18,2,0], () => (__webpack_require__.e(7810).then(() => (() => (__webpack_require__(77810))))))),\n\t62031: () => (loadSingletonVersionCheckFallback(\"default\", \"@emotion/cache\", [1,11,11,0], () => (__webpack_require__.e(2661).then(() => (() => (__webpack_require__(92661))))))),\n\t31874: () => (loadSingletonVersionCheckFallback(\"default\", \"@emotion/react\", [1,11,11,4], () => (Promise.all([__webpack_require__.e(9303), __webpack_require__.e(2031)]).then(() => (() => (__webpack_require__(29303))))))),\n\t34118: () => (loadSingletonVersionCheckFallback(\"default\", \"@emotion/styled\", [1,11,11,0], () => (__webpack_require__.e(4578).then(() => (() => (__webpack_require__(24578))))))),\n\t19309: () => (loadStrictVersionCheckFallback(\"default\", \"@mui/system\", [4,5,15,14], () => (__webpack_require__.e(4245).then(() => (() => (__webpack_require__(84245))))))),\n\t85929: () => (loadSingletonVersionCheckFallback(\"default\", \"react-dom\", [4,18,2,0], () => (__webpack_require__.e(2483).then(() => (() => (__webpack_require__(22483))))))),\n\t360: () => (loadStrictVersionCheckFallback(\"default\", \"html-react-parser\", [1,5,1,8], () => (__webpack_require__.e(900).then(() => (() => (__webpack_require__(10900))))))),\n\t48177: () => (loadStrictVersionCheckFallback(\"default\", \"date-fns\", [1,2,28,0], () => (__webpack_require__.e(5531).then(() => (() => (__webpack_require__(75531))))))),\n\t15720: () => (loadStrictVersionCheckFallback(\"default\", \"@okta/okta-auth-js\", [4,7,4,3], () => (Promise.all([__webpack_require__.e(6146), __webpack_require__.e(3610), __webpack_require__.e(5870)]).then(() => (() => (__webpack_require__(13610))))))),\n\t22503: () => (loadSingletonVersionCheckFallback(\"default\", \"react-router-dom\", [4,6,22,2], () => (Promise.all([__webpack_require__.e(1534), __webpack_require__.e(1342), __webpack_require__.e(5929), __webpack_require__.e(5563)]).then(() => (() => (__webpack_require__(81342))))))),\n\t58771: () => (loadStrictVersionCheckFallback(\"default\", \"@okta/okta-auth-js\", [4,7,4,3], () => (Promise.all([__webpack_require__.e(6146), __webpack_require__.e(5843), __webpack_require__.e(3489)]).then(() => (() => (__webpack_require__(95843))))))),\n\t95563: () => (loadSingletonVersionCheckFallback(\"default\", \"react-router\", [4,6,22,2], () => (Promise.all([__webpack_require__.e(1534), __webpack_require__.e(8689)]).then(() => (() => (__webpack_require__(28689))))))),\n\t19677: () => (loadStrictVersionCheckFallback(\"default\", \"jwt-decode\", [1,3,1,2], () => (__webpack_require__.e(3487).then(() => (() => (__webpack_require__(43487))))))),\n\t22951: () => (loadStrictVersionCheckFallback(\"default\", \"wretch\", [4,1,7,6], () => (__webpack_require__.e(2960).then(() => (() => (__webpack_require__(12960))))))),\n\t48820: () => (loadSingletonVersionCheckFallback(\"default\", \"@im/react-localization\", [1,1,0,349], () => (Promise.all([__webpack_require__.e(3122), __webpack_require__.e(7000), __webpack_require__.e(8412), __webpack_require__.e(5850), __webpack_require__.e(394), __webpack_require__.e(2031), __webpack_require__.e(1874), __webpack_require__.e(5929), __webpack_require__.e(4118), __webpack_require__.e(9309), __webpack_require__.e(360), __webpack_require__.e(8177)]).then(() => (() => (__webpack_require__(80394))))))),\n\t60358: () => (loadStrictVersionCheckFallback(\"default\", \"@fullstory/browser\", [1,1,5,1], () => (__webpack_require__.e(4825).then(() => (() => (__webpack_require__(64825))))))),\n\t91319: () => (loadStrictVersionCheckFallback(\"default\", \"@okta/okta-react\", [4,6,7,0], () => (Promise.all([__webpack_require__.e(1844), __webpack_require__.e(5720)]).then(() => (() => (__webpack_require__(41844))))))),\n\t11422: () => (loadStrictVersionCheckFallback(\"default\", \"uuid\", [1,8,3,2], () => (__webpack_require__.e(5836).then(() => (() => (__webpack_require__(35836))))))),\n\t46296: () => (loadSingletonVersionCheckFallback(\"default\", \"@tanstack/react-query\", [4,5,32,1], () => (__webpack_require__.e(6311).then(() => (() => (__webpack_require__(86311))))))),\n\t45459: () => (loadSingletonVersionCheckFallback(\"default\", \"recoil\", [4,0,7,7], () => (Promise.all([__webpack_require__.e(7006), __webpack_require__.e(1527), __webpack_require__.e(5929)]).then(() => (() => (__webpack_require__(27006))))))),\n\t1740: () => (loadStrictVersionCheckFallback(\"default\", \"react-helmet-async\", [1,2,0,4], () => (__webpack_require__.e(300).then(() => (() => (__webpack_require__(70300))))))),\n\t25337: () => (loadSingletonVersionCheckFallback(\"default\", \"@datadog/browser-rum\", [4,5,29,0], () => (() => (__webpack_require__(82702))))),\n\t50766: () => (loadStrictVersionCheckFallback(\"default\", \"@okta/okta-signin-widget\", [4,7,11,2], () => (Promise.all([__webpack_require__.e(4687), __webpack_require__.e(8771)]).then(() => (() => (__webpack_require__(64687))))))),\n\t62701: () => (loadStrictVersionCheckFallback(\"default\", \"@mui/x-license-pro\", [4,6,10,2], () => (__webpack_require__.e(4243).then(() => (() => (__webpack_require__(14243))))))),\n\t68350: () => (loadSingletonVersionCheckFallback(\"default\", \"@im/im-theme\", [1,2,0,878], () => (__webpack_require__.e(8598).then(() => (() => (__webpack_require__(58598)))))))\n};\n// no consumes in initial chunks\nvar chunkMapping = {\n\t\"360\": [\n\t\t360\n\t],\n\t\"1422\": [\n\t\t11422\n\t],\n\t\"1527\": [\n\t\t21527\n\t],\n\t\"1644\": [\n\t\t360,\n\t\t15720,\n\t\t25337,\n\t\t50766\n\t],\n\t\"1740\": [\n\t\t1740\n\t],\n\t\"1874\": [\n\t\t31874\n\t],\n\t\"2019\": [\n\t\t19677,\n\t\t22951\n\t],\n\t\"2031\": [\n\t\t62031\n\t],\n\t\"2503\": [\n\t\t22503\n\t],\n\t\"4118\": [\n\t\t34118\n\t],\n\t\"4256\": [\n\t\t62701,\n\t\t68350\n\t],\n\t\"5459\": [\n\t\t45459\n\t],\n\t\"5563\": [\n\t\t95563\n\t],\n\t\"5720\": [\n\t\t15720\n\t],\n\t\"5929\": [\n\t\t85929\n\t],\n\t\"7431\": [\n\t\t46296\n\t],\n\t\"8177\": [\n\t\t48177\n\t],\n\t\"8771\": [\n\t\t58771\n\t],\n\t\"9309\": [\n\t\t19309\n\t],\n\t\"9925\": [\n\t\t22503,\n\t\t48820,\n\t\t60358,\n\t\t91319,\n\t\t95563\n\t]\n};\nvar startedInstallModules = {};\n__webpack_require__.f.consumes = (chunkId, promises) => {\n\tif(__webpack_require__.o(chunkMapping, chunkId)) {\n\t\tchunkMapping[chunkId].forEach((id) => {\n\t\t\tif(__webpack_require__.o(installedModules, id)) return promises.push(installedModules[id]);\n\t\t\tif(!startedInstallModules[id]) {\n\t\t\tvar onFactory = (factory) => {\n\t\t\t\tinstalledModules[id] = 0;\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tmodule.exports = factory();\n\t\t\t\t}\n\t\t\t};\n\t\t\tstartedInstallModules[id] = true;\n\t\t\tvar onError = (error) => {\n\t\t\t\tdelete installedModules[id];\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tvar promise = moduleToHandlerMapping[id]();\n\t\t\t\tif(promise.then) {\n\t\t\t\t\tpromises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));\n\t\t\t\t} else onFactory(promise);\n\t\t\t} catch(e) { onError(e); }\n\t\t\t}\n\t\t});\n\t}\n}","/* 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 */\n\nexport const ConsoleApiName = {\n log: 'log',\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error',\n} as const\n\nexport type ConsoleApiName = (typeof ConsoleApiName)[keyof typeof ConsoleApiName]\n\ninterface Display {\n debug: typeof console.debug\n log: typeof console.log\n info: typeof console.info\n warn: typeof console.warn\n error: typeof console.error\n}\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\n\nexport const originalConsoleMethods = {} as Display\nObject.keys(ConsoleApiName).forEach((name) => {\n originalConsoleMethods[name as ConsoleApiName] = globalConsole[name as ConsoleApiName]\n})\n\nconst PREFIX = 'Datadog Browser SDK:'\n\nexport const display: 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}\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","import { display } from './display'\n\nexport function catchUserErrors(fn: (...args: Args) => R, errorMsg: string) {\n return (...args: Args) => {\n try {\n return fn(...args)\n } catch (err) {\n display.error(errorMsg, err)\n }\n }\n}\n","import { display } from './display'\n\nlet onMonitorErrorCollected: undefined | ((error: unknown) => void)\nlet debugMode = false\n\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected: (error: unknown) => void) {\n onMonitorErrorCollected = newOnMonitorErrorCollected\n}\n\nexport function setDebugMode(newDebugMode: boolean) {\n debugMode = newDebugMode\n}\n\nexport function resetMonitor() {\n onMonitorErrorCollected = undefined\n debugMode = false\n}\n\nexport function monitored unknown>(\n _: any,\n __: string,\n descriptor: TypedPropertyDescriptor\n) {\n const originalMethod = descriptor.value!\n descriptor.value = function (this: any, ...args: Parameters) {\n const decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod\n return decorated.apply(this, args) as ReturnType\n } as T\n}\n\nexport function monitor any>(fn: T): T {\n return function (this: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return callMonitored(fn, this, arguments as unknown as Parameters)\n } as unknown as T // consider output type has input type\n}\n\nexport function callMonitored any>(\n fn: T,\n context: ThisParameterType,\n args: Parameters\n): ReturnType | undefined\nexport function callMonitored any>(fn: T): ReturnType | undefined\nexport function callMonitored any>(\n fn: T,\n context?: any,\n args?: any\n): ReturnType | undefined {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return fn.apply(context, args)\n } catch (e) {\n displayIfDebugEnabled(e)\n if (onMonitorErrorCollected) {\n try {\n onMonitorErrorCollected(e)\n } catch (e) {\n displayIfDebugEnabled(e)\n }\n }\n }\n}\n\nexport function displayIfDebugEnabled(...args: any[]) {\n if (debugMode) {\n display.error('[MONITOR]', ...args)\n }\n}\n","export function includes(candidate: string, search: string): boolean\nexport function includes(candidate: T[], search: T): boolean\nexport function includes(candidate: string | unknown[], search: any) {\n return candidate.indexOf(search) !== -1\n}\n\nexport function arrayFrom(arrayLike: ArrayLike | Set): T[] {\n if (Array.from) {\n return Array.from(arrayLike)\n }\n\n const array = []\n\n if (arrayLike instanceof Set) {\n arrayLike.forEach((item) => array.push(item))\n } else {\n for (let i = 0; i < arrayLike.length; i++) {\n array.push(arrayLike[i])\n }\n }\n\n return array\n}\n\nexport function find(\n array: ArrayLike,\n predicate: (item: T, index: number) => item is S\n): S | undefined\nexport function find(array: ArrayLike, predicate: (item: T, index: number) => boolean): T | undefined\nexport function find(array: ArrayLike, predicate: (item: unknown, index: number) => boolean): unknown {\n for (let i = 0; i < array.length; i += 1) {\n const item = array[i]\n if (predicate(item, i)) {\n return item\n }\n }\n return undefined\n}\n\nexport function findLast(\n array: T[],\n predicate: (item: T, index: number, array: T[]) => item is S\n): S | undefined {\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\nexport function forEach(\n list: List,\n callback: (value: List[number], index: number, parent: List) => void\n) {\n Array.prototype.forEach.call(list, callback as any)\n}\n\nexport function objectValues(object: { [key: string]: T }) {\n return Object.keys(object).map((key) => object[key])\n}\n\nexport function objectEntries(object: { [key: string]: T }): Array<[string, T]> {\n return Object.keys(object).map((key) => [key, object[key]])\n}\n\nexport function startsWith(candidate: string, search: string) {\n return candidate.slice(0, search.length) === search\n}\n\nexport function endsWith(candidate: string, search: string) {\n return candidate.slice(-search.length) === search\n}\n\ninterface Assignable {\n [key: string]: any\n}\n\nexport function assign(target: T, source: U): T & U\nexport function assign(target: T, source1: U, source2: V): T & U & V\nexport function assign(target: T, source1: U, source2: V, source3: W): T & U & V & W\nexport function assign(target: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X\nexport function assign(target: Assignable, ...toAssign: Assignable[]) {\n toAssign.forEach((source: Assignable) => {\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n })\n return target\n}\n","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\n\nexport function getGlobalObject(): T {\n if (typeof globalThis === 'object') {\n return globalThis as unknown as T\n }\n Object.defineProperty(Object.prototype, '_dd_temp_', {\n get() {\n return this as object\n },\n configurable: true,\n })\n // @ts-ignore _dd_temp is defined using defineProperty\n let globalObject: unknown = _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 } else if (typeof window === 'object') {\n globalObject = window\n } else {\n globalObject = {}\n }\n }\n return globalObject as T\n}\n","export const ONE_KIBI_BYTE = 1024\nexport const ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE\n\n// eslint-disable-next-line no-control-regex\nconst HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/\n\nexport function computeBytesCount(candidate: string): number {\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\n if (window.TextEncoder !== undefined) {\n return new TextEncoder().encode(candidate).length\n }\n\n return new Blob([candidate]).size\n}\n\nexport function concatBuffers(buffers: Uint8Array[]) {\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","import { getGlobalObject } from './getGlobalObject'\n\nexport interface BrowserWindowWithZoneJs extends Window {\n Zone?: {\n // All Zone.js versions expose the __symbol__ method, but we observed that some website have a\n // 'Zone' global variable unrelated to Zone.js, so let's consider this method optional\n // nonetheless.\n __symbol__?: (name: string) => string\n }\n}\n\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(\n target: Target,\n name: Name\n): Target[Name] {\n const browserWindow = getGlobalObject()\n let original: Target[Name] | undefined\n if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n original = (target as any)[browserWindow.Zone.__symbol__(name)]\n }\n if (!original) {\n original = target[name]\n }\n return original\n}\n","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue'\nimport { monitor } from './monitor'\nimport { getGlobalObject } from './getGlobalObject'\n\nexport type TimeoutId = ReturnType\n\nexport function setTimeout(callback: () => void, delay?: number): TimeoutId {\n return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(monitor(callback), delay)\n}\n\nexport function clearTimeout(timeoutId: TimeoutId | undefined) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId)\n}\n\nexport function setInterval(callback: () => void, delay?: number): TimeoutId {\n return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay)\n}\n\nexport function clearInterval(timeoutId: TimeoutId | undefined) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId)\n}\n","import type { TimeoutId } from '../timer'\nimport { setTimeout, clearTimeout } from '../timer'\n\n// use lodash API\nexport function throttle void>(\n fn: T,\n wait: number,\n options?: { leading?: boolean; trailing?: boolean }\n) {\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: Parameters | undefined\n let pendingTimeoutId: TimeoutId\n\n return {\n throttled: (...parameters: Parameters) => {\n if (inWaitPeriod) {\n pendingExecutionWithParameters = parameters\n return\n }\n if (needLeadingExecution) {\n fn(...parameters)\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\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() {}\n","import { noop } from '../utils/functionUtils'\n\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(\n value: unknown,\n replacer?: Array,\n space?: string | number\n): string | undefined {\n if (typeof value !== 'object' || value === null) {\n return JSON.stringify(value)\n }\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\n try {\n return JSON.stringify(value, replacer, space)\n } catch {\n return ''\n } finally {\n restoreObjectPrototypeToJson()\n restoreArrayPrototypeToJson()\n restoreValuePrototypeToJson()\n restoreValueToJson()\n }\n}\n\nexport interface ObjectWithToJsonMethod {\n toJSON?: () => unknown\n}\n\nexport function detachToJsonMethod(value: object) {\n const object = value as ObjectWithToJsonMethod\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","import { assign } from './polyfills'\n\nexport function shallowClone(object: T): T & Record {\n return assign({}, object)\n}\n\nexport function objectHasValue(object: T, value: unknown): value is T[keyof T] {\n return Object.keys(object).some((key) => object[key] === value)\n}\n\nexport function isEmptyObject(object: object) {\n return Object.keys(object).length === 0\n}\n\nexport function mapValues(object: { [key: string]: A }, fn: (arg: A) => B) {\n const newObject: { [key: string]: B } = {}\n for (const key of Object.keys(object)) {\n newObject[key] = fn(object[key])\n }\n return newObject\n}\n","import { ONE_KIBI_BYTE, computeBytesCount } from '../../tools/utils/byteUtils'\nimport { throttle } from '../../tools/utils/functionUtils'\nimport type { Context } from '../../tools/serialisation/context'\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify'\nimport { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../../tools/display'\nimport { isEmptyObject } from '../../tools/utils/objectUtils'\nimport type { CustomerDataType } from './contextConstants'\n\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\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\n\nexport const BYTES_COMPUTATION_THROTTLING_DELAY = 200\n\nexport type CustomerDataTracker = ReturnType\nexport type CustomerDataTrackerManager = ReturnType\n\nexport const enum CustomerDataCompressionStatus {\n Unknown,\n Enabled,\n Disabled,\n}\n\nexport function createCustomerDataTrackerManager(\n compressionStatus: CustomerDataCompressionStatus = CustomerDataCompressionStatus.Disabled\n) {\n const customerDataTrackers = new Map()\n\n let alreadyWarned = false\n function checkCustomerDataLimit(initialBytesCount = 0) {\n if (alreadyWarned || compressionStatus === CustomerDataCompressionStatus.Unknown) {\n return\n }\n\n const bytesCountLimit =\n compressionStatus === CustomerDataCompressionStatus.Disabled\n ? CUSTOMER_DATA_BYTES_LIMIT\n : CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT\n\n let bytesCount = initialBytesCount\n customerDataTrackers.forEach((tracker) => {\n bytesCount += tracker.getBytesCount()\n })\n\n if (bytesCount > bytesCountLimit) {\n displayCustomerDataLimitReachedWarning(bytesCountLimit)\n alreadyWarned = true\n }\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 /**\n * Creates a tracker if it doesn't exist, and returns it.\n */\n getOrCreateTracker: (type: CustomerDataType) => {\n if (!customerDataTrackers.has(type)) {\n customerDataTrackers.set(type, createCustomerDataTracker(checkCustomerDataLimit))\n }\n return customerDataTrackers.get(type)!\n },\n\n setCompressionStatus: (newCompressionStatus: CustomerDataCompressionStatus) => {\n if (compressionStatus === CustomerDataCompressionStatus.Unknown) {\n compressionStatus = newCompressionStatus\n checkCustomerDataLimit()\n }\n },\n\n getCompressionStatus: () => compressionStatus,\n\n stop: () => {\n customerDataTrackers.forEach((tracker) => tracker.stop())\n customerDataTrackers.clear()\n },\n }\n}\n\nexport function createCustomerDataTracker(checkCustomerDataLimit: () => void) {\n let bytesCountCache = 0\n\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: Context) => {\n bytesCountCache = computeBytesCount(jsonStringify(context)!)\n checkCustomerDataLimit()\n }, BYTES_COMPUTATION_THROTTLING_DELAY)\n\n const resetBytesCount = () => {\n cancelComputeBytesCount()\n bytesCountCache = 0\n }\n\n return {\n updateCustomerData: (context: Context) => {\n if (isEmptyObject(context)) {\n resetBytesCount()\n } else {\n computeBytesCountThrottled(context)\n }\n },\n resetCustomerData: resetBytesCount,\n getBytesCount: () => bytesCountCache,\n stop: () => {\n cancelComputeBytesCount()\n },\n }\n}\n\nfunction displayCustomerDataLimitReachedWarning(bytesCountLimit: number) {\n display.warn(\n `Customer data exceeds the recommended ${\n bytesCountLimit / ONE_KIBI_BYTE\n }KiB threshold. ${MORE_DETAILS} ${DOCS_TROUBLESHOOTING}/#customer-data-exceeds-the-recommended-threshold-warning`\n )\n}\n","/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value: unknown) {\n if (value === null) {\n return 'null'\n }\n if (Array.isArray(value)) {\n return 'array'\n }\n return typeof value\n}\n","import { getType } from './utils/typeUtils'\n\ntype Merged =\n // case 1 - source is undefined - return destination\n TSource extends undefined\n ? TDestination\n : // case 2 - destination is undefined - return source\n TDestination extends undefined\n ? TSource\n : // case 3 - source is an array - see if it merges or overwrites\n TSource extends any[]\n ? TDestination extends any[]\n ? TDestination & TSource\n : TSource\n : // case 4 - source is an object - see if it merges or overwrites\n TSource extends object\n ? TDestination extends object\n ? TDestination extends any[]\n ? TSource\n : TDestination & TSource\n : TSource\n : // case 5 - cannot merge - return source\n TSource\n\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(\n destination: D,\n source: S,\n circularReferenceChecker = createCircularReferenceChecker()\n): Merged {\n // ignore the source if it is undefined\n if (source === undefined) {\n return destination as Merged\n }\n\n if (typeof source !== 'object' || source === null) {\n // primitive values - just return source\n return source as Merged\n } else if (source instanceof Date) {\n return new Date(source.getTime()) as unknown as Merged\n } else if (source instanceof RegExp) {\n const flags =\n 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) as unknown as Merged\n }\n\n if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n // remove circular references\n return undefined as unknown as Merged\n } else if (Array.isArray(source)) {\n const merged: any[] = 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 as unknown as Merged\n }\n\n const merged = getType(destination) === 'object' ? (destination as Record) : {}\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 as unknown as Merged\n}\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: T): T {\n return mergeInto(undefined, value) as T\n}\n\ntype Combined = A extends null ? B : B extends null ? A : Merged\n\n/*\n * Performs a deep merge of objects and arrays.\n * - Arguments won't be mutated\n * - Object and arrays in the output value are de-referenced (\"deep cloned\")\n * - Arrays values are merged index by index\n * - Objects are merged by keys\n * - Values get replaced, unless undefined\n */\nexport function combine(a: A, b: B): Combined\nexport function combine(a: A, b: B, c: C): Combined, C>\nexport function combine(a: A, b: B, c: C, d: D): Combined, C>, D>\nexport function combine(\n a: A,\n b: B,\n c: C,\n d: D,\n e: E\n): Combined, C>, D>, E>\nexport function combine(\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n f: F\n): Combined, C>, D>, E>, F>\nexport function combine(\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n f: F,\n g: G\n): Combined, C>, D>, E>, F>, G>\nexport function combine(\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n f: F,\n g: G,\n h: H\n): Combined, C>, D>, E>, F>, G>, H>\nexport function combine(...sources: any[]): unknown {\n let destination: any\n\n for (const source of sources) {\n // Ignore any undefined or null sources.\n if (source === undefined || source === null) {\n continue\n }\n\n destination = mergeInto(destination, source)\n }\n\n return destination as unknown\n}\n\ninterface CircularReferenceChecker {\n hasAlreadyBeenSeen(value: any): boolean\n}\n\nfunction createCircularReferenceChecker(): CircularReferenceChecker {\n if (typeof WeakSet !== 'undefined') {\n const set: WeakSet = 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: any[] = []\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","import { display } from '../display'\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils'\nimport type { Context, ContextArray, ContextValue } from './context'\nimport type { ObjectWithToJsonMethod } from './jsonStringify'\nimport { detachToJsonMethod } from './jsonStringify'\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype PrimitivesAndFunctions = string | number | boolean | undefined | null | symbol | bigint | Function\ntype ExtendedContextValue = PrimitivesAndFunctions | object | ExtendedContext | ExtendedContextArray\ntype ExtendedContext = { [key: string]: ExtendedContextValue }\ntype ExtendedContextArray = ExtendedContextValue[]\n\ntype ContainerElementToProcess = {\n source: ExtendedContextArray | ExtendedContext\n target: ContextArray | Context\n path: string\n}\n\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\n// Symbol for the root element of the JSONPath used for visited objects\nconst JSON_PATH_ROOT_ELEMENT = '$'\n\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\n\n/**\n * Ensures user-provided data is 'safe' for the SDK\n * - Deep clones data\n * - Removes cyclic references\n * - Transforms unserializable types to a string representation\n *\n * LIMITATIONS:\n * - Size is in characters, not byte count (may differ according to character encoding)\n * - Size does not take into account indentation that can be applied to JSON.stringify\n * - Non-numerical properties of Arrays are ignored. Same behavior as JSON.stringify\n *\n * @param source User-provided data meant to be serialized using JSON.stringify\n * @param maxCharacterCount Maximum number of characters allowed in serialized form\n */\nexport function sanitize(source: string, maxCharacterCount?: number): string | undefined\nexport function sanitize(source: Context, maxCharacterCount?: number): Context\nexport function sanitize(source: unknown, maxCharacterCount?: number): ContextValue\nexport function sanitize(source: unknown, 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\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n const containerQueue: ContainerElementToProcess[] = []\n const visitedObjectsWithPath = new WeakMap()\n const sanitizedData = sanitizeProcessor(\n source as ExtendedContextValue,\n JSON_PATH_ROOT_ELEMENT,\n undefined,\n containerQueue,\n visitedObjectsWithPath\n )\n const serializedSanitizedData = JSON.stringify(sanitizedData)\n let accumulatedCharacterCount = serializedSanitizedData ? serializedSanitizedData.length : 0\n\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source)\n return undefined\n }\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\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(\n containerToProcess.source[key],\n containerToProcess.path,\n key,\n containerQueue,\n visitedObjectsWithPath\n )\n\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length\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 ;(containerToProcess.target as ContextArray)[key] = targetData\n }\n } else {\n for (const key in containerToProcess.source) {\n if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n const targetData = sanitizeProcessor(\n containerToProcess.source[key],\n containerToProcess.path,\n key,\n containerQueue,\n visitedObjectsWithPath\n )\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 ;(containerToProcess.target as Context)[key] = targetData\n }\n }\n }\n }\n\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson()\n restoreArrayPrototypeToJson()\n\n return sanitizedData\n}\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(\n source: ExtendedContextValue,\n parentPath: string,\n key: string | number | undefined,\n queue: ContainerElementToProcess[],\n visitedObjectsWithPath: WeakMap\n) {\n // Start by handling toJSON, as we want to sanitize its output\n const sourceToSanitize = tryToApplyToJSON(source)\n\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize)\n }\n\n const sanitizedSource = sanitizeObjects(sourceToSanitize)\n if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n return sanitizedSource\n }\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 as object\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return `[Reference seen at ${visitedObjectsWithPath.get(sourceAsObject)!}]`\n }\n\n // Add processed source to queue\n const currentPath = key !== undefined ? `${parentPath}.${key}` : parentPath\n const target = Array.isArray(sourceToSanitize) ? ([] as ContextArray) : ({} as Context)\n visitedObjectsWithPath.set(sourceAsObject, currentPath)\n queue.push({ source: sourceToSanitize as ExtendedContext | ExtendedContextArray, target, path: currentPath })\n\n return target\n}\n\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value: PrimitivesAndFunctions) {\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 // symbol.description is part of ES2019+\n type symbolWithDescription = symbol & { description: string }\n return `[Symbol] ${(value as symbolWithDescription).description || value.toString()}`\n }\n\n return value\n}\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 * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value: object) {\n try {\n // Handle events - Keep a simple implementation to avoid breaking changes\n if (value instanceof Event) {\n return {\n isTrusted: value.isTrusted,\n }\n }\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 } catch {\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}\n\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value: ExtendedContextValue) {\n const object = value as ObjectWithToJsonMethod\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON() as ExtendedContextValue\n } catch {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n\n return value\n}\n\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount: number, changeType: 'discarded' | 'truncated', source: unknown) {\n display.warn(\n `The data provided has been ${changeType} as it is over the limit of ${maxCharacterCount} characters:`,\n source\n )\n}\n","export interface Subscription {\n unsubscribe: () => void\n}\n\n// eslint-disable-next-line no-restricted-syntax\nexport class Observable {\n private observers: Array<(data: T) => void> = []\n private onLastUnsubscribe?: () => void\n\n constructor(private onFirstSubscribe?: (observable: Observable) => (() => void) | void) {}\n\n subscribe(f: (data: T) => void): Subscription {\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\n notify(data: T) {\n this.observers.forEach((observer) => observer(data))\n }\n}\n\nexport function mergeObservables(...observables: Array>) {\n return new Observable((globalObservable) => {\n const subscriptions: Subscription[] = observables.map((observable) =>\n observable.subscribe((data) => globalObservable.notify(data))\n )\n return () => subscriptions.forEach((subscription) => subscription.unsubscribe())\n })\n}\n","import { deepClone } from '../../tools/mergeInto'\nimport { getType } from '../../tools/utils/typeUtils'\nimport { sanitize } from '../../tools/serialisation/sanitize'\nimport type { Context } from '../../tools/serialisation/context'\nimport { Observable } from '../../tools/observable'\nimport type { CustomerDataTracker } from './customerDataTracker'\n\nexport type ContextManager = ReturnType\n\nexport function createContextManager(customerDataTracker?: CustomerDataTracker) {\n let context: Context = {}\n const changeObservable = new Observable()\n\n const contextManager = {\n getContext: () => deepClone(context),\n\n setContext: (newContext: Context) => {\n if (getType(newContext) === 'object') {\n context = sanitize(newContext)\n customerDataTracker && customerDataTracker.updateCustomerData(context)\n } else {\n contextManager.clearContext()\n }\n changeObservable.notify()\n },\n\n setContextProperty: (key: string, property: any) => {\n context[key] = sanitize(property)\n customerDataTracker && customerDataTracker.updateCustomerData(context)\n changeObservable.notify()\n },\n\n removeContextProperty: (key: string) => {\n delete context[key]\n customerDataTracker && customerDataTracker.updateCustomerData(context)\n changeObservable.notify()\n },\n\n clearContext: () => {\n context = {}\n customerDataTracker && customerDataTracker.resetCustomerData()\n changeObservable.notify()\n },\n\n changeObservable,\n }\n return contextManager\n}\n","import { Observable } from '../tools/observable'\n\nexport const TrackingConsent = {\n GRANTED: 'granted',\n NOT_GRANTED: 'not-granted',\n} as const\nexport type TrackingConsent = (typeof TrackingConsent)[keyof typeof TrackingConsent]\n\nexport interface TrackingConsentState {\n tryToInit: (trackingConsent: TrackingConsent) => void\n update: (trackingConsent: TrackingConsent) => void\n isGranted: () => boolean\n observable: Observable\n}\n\nexport function createTrackingConsentState(currentConsent?: TrackingConsent): TrackingConsentState {\n const observable = new Observable()\n\n return {\n tryToInit(trackingConsent: TrackingConsent) {\n if (!currentConsent) {\n currentConsent = trackingConsent\n }\n },\n update(trackingConsent: TrackingConsent) {\n currentConsent = trackingConsent\n observable.notify()\n },\n isGranted() {\n return currentConsent === TrackingConsent.GRANTED\n },\n observable,\n }\n}\n","import { monitor } from '../tools/monitor'\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue'\nimport type { CookieStore, CookieStoreEventMap, VisualViewport, VisualViewportEventMap } from './browser.types'\n\nexport type TrustableEvent = E & { __ddIsTrusted?: boolean }\n\nexport const enum DOM_EVENT {\n BEFORE_UNLOAD = 'beforeunload',\n CLICK = 'click',\n DBL_CLICK = 'dblclick',\n KEY_DOWN = 'keydown',\n LOAD = 'load',\n POP_STATE = 'popstate',\n SCROLL = 'scroll',\n TOUCH_START = 'touchstart',\n TOUCH_END = 'touchend',\n TOUCH_MOVE = 'touchmove',\n VISIBILITY_CHANGE = 'visibilitychange',\n PAGE_SHOW = 'pageshow',\n FREEZE = 'freeze',\n RESUME = 'resume',\n DOM_CONTENT_LOADED = 'DOMContentLoaded',\n POINTER_DOWN = 'pointerdown',\n POINTER_UP = 'pointerup',\n POINTER_CANCEL = 'pointercancel',\n HASH_CHANGE = 'hashchange',\n PAGE_HIDE = 'pagehide',\n MOUSE_DOWN = 'mousedown',\n MOUSE_UP = 'mouseup',\n MOUSE_MOVE = 'mousemove',\n FOCUS = 'focus',\n BLUR = 'blur',\n CONTEXT_MENU = 'contextmenu',\n RESIZE = 'resize',\n CHANGE = 'change',\n INPUT = 'input',\n PLAY = 'play',\n PAUSE = 'pause',\n SECURITY_POLICY_VIOLATION = 'securitypolicyviolation',\n SELECTION_CHANGE = 'selectionchange',\n STORAGE = 'storage',\n}\n\ninterface AddEventListenerOptions {\n once?: boolean\n capture?: boolean\n passive?: boolean\n}\n\ntype EventMapFor = T extends Window\n ? WindowEventMap & {\n // TS 4.9.5 does not support `freeze` and `resume` events yet\n freeze: Event\n resume: Event\n // TS 4.9.5 does not define `visibilitychange` on Window (only Document)\n visibilitychange: Event\n }\n : T extends Document\n ? DocumentEventMap\n : T extends HTMLElement\n ? HTMLElementEventMap\n : T extends VisualViewport\n ? VisualViewportEventMap\n : T extends ShadowRoot\n ? // ShadowRootEventMap is not yet defined in our supported TS version. Instead, use\n // GlobalEventHandlersEventMap which is more than enough as we only need to listen for events bubbling\n // through the ShadowRoot like \"change\" or \"input\"\n GlobalEventHandlersEventMap\n : T extends XMLHttpRequest\n ? XMLHttpRequestEventMap\n : T extends Performance\n ? PerformanceEventMap\n : T extends Worker\n ? WorkerEventMap\n : T extends CookieStore\n ? CookieStoreEventMap\n : Record\n\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 & string>(\n configuration: { allowUntrustedEvents?: boolean | undefined },\n eventTarget: Target,\n eventName: EventName,\n listener: (event: EventMapFor[EventName] & { type: EventName }) => void,\n options?: AddEventListenerOptions\n) {\n return addEventListeners(configuration, eventTarget, [eventName], listener, options)\n}\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 & string>(\n configuration: { allowUntrustedEvents?: boolean | undefined },\n eventTarget: Target,\n eventNames: EventName[],\n listener: (event: EventMapFor[EventName] & { type: EventName }) => void,\n { once, capture, passive }: AddEventListenerOptions = {}\n) {\n const listenerWithMonitor = monitor((event: TrustableEvent) => {\n if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {\n return\n }\n if (once) {\n stop()\n }\n listener(event as unknown as EventMapFor[EventName] & { type: EventName })\n })\n\n const options = passive ? { capture, passive } : capture\n\n const add = getZoneJsOriginalValue(eventTarget, 'addEventListener')\n eventNames.forEach((eventName) => add.call(eventTarget, eventName, listenerWithMonitor, options))\n\n function stop() {\n const remove = getZoneJsOriginalValue(eventTarget, 'removeEventListener')\n eventNames.forEach((eventName) => remove.call(eventTarget, eventName, listenerWithMonitor, options))\n }\n\n return {\n stop,\n }\n}\n","import { addEventListener, DOM_EVENT } from '../../browser/addEventListener'\nimport type { Context } from '../../tools/serialisation/context'\nimport type { Configuration } from '../configuration'\nimport { combine } from '../../tools/mergeInto'\nimport type { ContextManager } from './contextManager'\nimport type { CustomerDataType } from './contextConstants'\n\nconst CONTEXT_STORE_KEY_PREFIX = '_dd_c'\n\nconst storageListeners: Array<{ stop: () => void }> = []\n\nexport function storeContextManager(\n configuration: Configuration,\n contextManager: ContextManager,\n productKey: string,\n customerDataType: CustomerDataType\n) {\n const storageKey = buildStorageKey(productKey, customerDataType)\n\n storageListeners.push(\n addEventListener(configuration, window, DOM_EVENT.STORAGE, ({ key }) => {\n if (storageKey === key) {\n synchronizeWithStorage()\n }\n })\n )\n contextManager.changeObservable.subscribe(dumpToStorage)\n\n contextManager.setContext(combine(getFromStorage(), contextManager.getContext()))\n\n function synchronizeWithStorage() {\n contextManager.setContext(getFromStorage())\n }\n\n function dumpToStorage() {\n localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()))\n }\n\n function getFromStorage() {\n const rawContext = localStorage.getItem(storageKey)\n return rawContext !== null ? (JSON.parse(rawContext) as Context) : {}\n }\n}\n\nexport function buildStorageKey(productKey: string, customerDataType: CustomerDataType) {\n return `${CONTEXT_STORE_KEY_PREFIX}_${productKey}_${customerDataType}`\n}\n\nexport function removeStorageListeners() {\n storageListeners.map((listener) => listener.stop())\n}\n","import { computeBytesCount } from './utils/byteUtils'\n\nexport interface Encoder {\n /**\n * Whether this encoder might call the provided callbacks asynchronously\n */\n isAsync: boolean\n\n /**\n * Whether some data has been written since the last finish() or finishSync() call\n */\n isEmpty: boolean\n\n /**\n * Write a string to be encoded.\n *\n * This operation can be synchronous or asynchronous depending on the encoder implementation.\n *\n * If specified, the callback will be invoked when the operation finishes, unless the operation is\n * asynchronous and finish() or finishSync() is called in the meantime.\n */\n write(data: string, callback?: (additionalEncodedBytesCount: number) => void): void\n\n /**\n * Waits for pending data to be encoded and resets the encoder state.\n *\n * This operation can be synchronous or asynchronous depending on the encoder implementation.\n *\n * The callback will be invoked when the operation finishes, unless the operation is asynchronous\n * and another call to finish() or finishSync() occurs in the meantime.\n */\n finish(callback: (result: EncoderResult) => void): void\n\n /**\n * Resets the encoder state then returns the encoded data and any potential pending data directly,\n * discarding all pending write operations and finish() callbacks.\n */\n finishSync(): EncoderResult & { pendingData: string }\n\n /**\n * Returns a rough estimation of the bytes count if the data was encoded.\n */\n estimateEncodedBytesCount(data: string): number\n}\n\nexport interface EncoderResult {\n output: Output\n outputBytesCount: number\n\n /**\n * An encoding type supported by HTTP Content-Encoding, if applicable.\n * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding#directives\n */\n encoding?: 'deflate'\n\n /**\n * Total bytes count of the input strings encoded to UTF-8.\n */\n rawBytesCount: number\n}\n\nexport function createIdentityEncoder(): Encoder {\n let output = ''\n let outputBytesCount = 0\n\n return {\n isAsync: false,\n\n get isEmpty() {\n return !output\n },\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\n finish(callback) {\n callback(this.finishSync())\n },\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\n estimateEncodedBytesCount(data) {\n return data.length\n },\n }\n}\n","/**\n * Cross-browser stack trace computation.\n *\n * Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js\n */\n\nimport { startsWith } from '../utils/polyfills'\n\nexport interface StackFrame {\n url?: string\n func?: string\n /** The arguments passed to the function, if known. */\n args?: string[]\n line?: number\n column?: number\n /** An array of source code lines; the middle element corresponds to the correct line. */\n context?: string[]\n}\n\nexport interface StackTrace {\n name?: string\n message?: string\n url?: string\n stack: StackFrame[]\n incomplete?: boolean\n partial?: boolean\n}\n\nconst UNKNOWN_FUNCTION = '?'\n\nexport function computeStackTrace(ex: unknown): StackTrace {\n const stack: StackFrame[] = []\n\n let stackProperty = tryToGetString(ex, 'stack')\n const exString = String(ex)\n if (stackProperty && startsWith(stackProperty, exString)) {\n stackProperty = stackProperty.slice(exString.length)\n }\n if (stackProperty) {\n stackProperty.split('\\n').forEach((line) => {\n const stackFrame =\n parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line)\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION\n }\n\n stack.push(stackFrame)\n }\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|native|eval|webpack|snippet||\\\\w+\\\\.|\\\\/).*?)'\nconst filePosition = '(?::(\\\\d+))'\nconst CHROME_LINE_RE = new RegExp(`^\\\\s*at (.*?) ?\\\\(${fileUrl}${filePosition}?${filePosition}?\\\\)?\\\\s*$`, 'i')\n\nconst CHROME_EVAL_RE = new RegExp(`\\\\((\\\\S*)${filePosition}${filePosition}\\\\)`)\n\nfunction parseChromeLine(line: string): StackFrame | undefined {\n const parts = CHROME_LINE_RE.exec(line)\n\n if (!parts) {\n return\n }\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\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\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}\n\nconst CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(`^\\\\s*at ?${fileUrl}${filePosition}?${filePosition}??\\\\s*$`, 'i')\n\nfunction parseChromeAnonymousLine(line: string): StackFrame | undefined {\n const parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line)\n\n if (!parts) {\n return\n }\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}\n\nconst WINJS_LINE_RE =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i\n\nfunction parseWinLine(line: string): StackFrame | undefined {\n const parts = WINJS_LINE_RE.exec(line)\n if (!parts) {\n return\n }\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}\n\nconst GECKO_LINE_RE =\n /^\\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\n\nfunction parseGeckoLine(line: string): StackFrame | undefined {\n const parts = GECKO_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1\n const submatch = GECKO_EVAL_RE.exec(parts[3])\n\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\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}\n\nfunction tryToGetString(candidate: unknown, property: string) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined\n }\n const value = (candidate as { [k: string]: unknown })[property]\n return typeof value === 'string' ? value : undefined\n}\n\nexport function computeStackTraceFromOnErrorMessage(messageObj: unknown, url?: string, line?: number, column?: number) {\n const stack = [{ url, column, line }]\n const { name, message } = tryToParseMessage(messageObj)\n return {\n name,\n message,\n stack,\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nconst ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/\n\nfunction tryToParseMessage(messageObj: unknown) {\n let name\n let message\n if ({}.toString.call(messageObj) === '[object String]') {\n ;[, name, message] = ERROR_TYPES_RE.exec(messageObj as string)!\n }\n return { name, message }\n}\n","import { callMonitored } from '../monitor'\nimport { noop } from '../utils/functionUtils'\nimport type { StackTrace } from './computeStackTrace'\nimport { computeStackTrace } from './computeStackTrace'\n\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(): string {\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: string\n\n // IE needs to throw the error to fill in the stack trace\n if (!error.stack) {\n try {\n throw error\n } catch (e) {\n noop()\n }\n }\n\n callMonitored(() => {\n const stackTrace = computeStackTrace(error)\n stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip)\n formattedStack = toStackTraceString(stackTrace)\n })\n\n return formattedStack!\n}\n\nexport function toStackTraceString(stack: StackTrace) {\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}\n\nexport function formatErrorMessage(stack: StackTrace) {\n return `${stack.name || 'Error'}: ${stack.message!}`\n}\n","import { sanitize } from '../../tools/serialisation/sanitize'\nimport type { ClocksState } from '../../tools/utils/timeUtils'\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify'\nimport type { StackTrace } from '../../tools/stackTrace/computeStackTrace'\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace'\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack'\nimport type { ErrorSource, ErrorHandling, RawError, RawErrorCause, ErrorWithCause, NonErrorPrefix } from './error.types'\n\nexport const NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error'\n\ntype RawErrorParams = {\n stackTrace?: StackTrace\n originalError: unknown\n\n handlingStack?: string\n startClocks: ClocksState\n nonErrorPrefix: NonErrorPrefix\n source: ErrorSource\n handling: ErrorHandling\n}\n\nexport function computeRawError({\n stackTrace,\n originalError,\n handlingStack,\n startClocks,\n nonErrorPrefix,\n source,\n handling,\n}: RawErrorParams): RawError {\n const isErrorInstance = originalError instanceof Error\n\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 as ErrorWithCause, source) : undefined\n const type = stackTrace ? stackTrace.name : undefined\n const fingerprint = tryToGetFingerprint(originalError)\n\n return {\n startClocks,\n source,\n handling,\n handlingStack,\n originalError,\n type,\n message,\n stack,\n causes,\n fingerprint,\n }\n}\n\nfunction computeMessage(\n stackTrace: StackTrace | undefined,\n isErrorInstance: boolean,\n nonErrorPrefix: NonErrorPrefix,\n originalError: unknown\n) {\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?.message && stackTrace?.name\n ? stackTrace.message\n : !isErrorInstance\n ? `${nonErrorPrefix} ${jsonStringify(sanitize(originalError))!}`\n : 'Empty message'\n}\n\nfunction hasUsableStack(isErrorInstance: boolean, stackTrace?: StackTrace): stackTrace is 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}\n\nexport function tryToGetFingerprint(originalError: unknown) {\n return originalError instanceof Error && 'dd_fingerprint' in originalError\n ? String(originalError.dd_fingerprint)\n : undefined\n}\n\nexport function getFileFromStackTraceString(stack: string) {\n return /@ (.+)/.exec(stack)?.[1]\n}\n\nexport function flattenErrorCauses(error: ErrorWithCause, parentSource: ErrorSource): RawErrorCause[] | undefined {\n let currentError = error\n const causes: RawErrorCause[] = []\n while (currentError?.cause instanceof Error && causes.length < 10) {\n const stackTrace = computeStackTrace(currentError.cause)\n causes.push({\n message: currentError.cause.message,\n source: parentSource,\n type: stackTrace?.name,\n stack: stackTrace && toStackTraceString(stackTrace),\n })\n currentError = currentError.cause\n }\n return causes.length ? causes : undefined\n}\n","/**\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\n\nimport { objectHasValue } from './utils/objectUtils'\n\n// eslint-disable-next-line no-restricted-syntax\nexport enum ExperimentalFeature {\n WRITABLE_RESOURCE_GRAPHQL = 'writable_resource_graphql',\n REMOTE_CONFIGURATION = 'remote_configuration',\n UPDATE_VIEW_NAME = 'update_view_name',\n LONG_ANIMATION_FRAME = 'long_animation_frame',\n REDUCE_SEGMENT_LIMIT_BATCH_TIME = 'reduce_segment_limit_batch_time',\n}\n\nconst enabledExperimentalFeatures: Set = new Set()\n\nexport function initFeatureFlags(enableExperimentalFeatures?: string[] | undefined) {\n if (Array.isArray(enableExperimentalFeatures)) {\n addExperimentalFeatures(\n enableExperimentalFeatures.filter((flag): flag is ExperimentalFeature =>\n objectHasValue(ExperimentalFeature, flag)\n )\n )\n }\n}\n\nexport function addExperimentalFeatures(enabledFeatures: ExperimentalFeature[]): void {\n enabledFeatures.forEach((flag) => {\n enabledExperimentalFeatures.add(flag)\n })\n}\n\nexport function isExperimentalFeatureEnabled(featureName: ExperimentalFeature): boolean {\n return enabledExperimentalFeatures.has(featureName)\n}\n\nexport function resetExperimentalFeatures(): void {\n enabledExperimentalFeatures.clear()\n}\n\nexport function getExperimentalFeatures(): Set {\n return enabledExperimentalFeatures\n}\n","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'\n\nexport const PCI_INTAKE_HOST_US1 = 'pci.browser-intake-datadoghq.com'\n","/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold: number): boolean {\n return threshold !== 0 && Math.random() * 100 <= threshold\n}\n\nexport function round(num: number, decimals: 0 | 1 | 2 | 3 | 4) {\n return +num.toFixed(decimals)\n}\n\nexport function isPercentage(value: unknown) {\n return isNumber(value) && value >= 0 && value <= 100\n}\n\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number'\n}\n","import { isNumber, round } from './numberUtils'\n\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\n\nexport type Duration = number & { d: 'Duration in ms' }\nexport type ServerDuration = number & { s: 'Duration in ns' }\nexport type TimeStamp = number & { t: 'Epoch time' }\nexport type RelativeTime = number & { r: 'Time relative to navigation start' } & { d: 'Duration in ms' }\nexport type ClocksState = { relative: RelativeTime; timeStamp: TimeStamp }\n\nexport function relativeToClocks(relative: RelativeTime) {\n return { relative, timeStamp: getCorrectedTimeStamp(relative) }\n}\n\nexport function timeStampToClocks(timeStamp: TimeStamp) {\n return { relative: getRelativeTime(timeStamp), timeStamp }\n}\n\nfunction getCorrectedTimeStamp(relativeTime: RelativeTime) {\n const correctedOrigin = (dateNow() - performance.now()) as TimeStamp\n // apply correction only for positive drift\n if (correctedOrigin > getNavigationStart()) {\n return Math.round(addDuration(correctedOrigin, relativeTime)) as TimeStamp\n }\n return getTimeStamp(relativeTime)\n}\n\nexport function currentDrift() {\n return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now() as Duration))\n}\n\nexport function toServerDuration(duration: Duration): ServerDuration\nexport function toServerDuration(duration: Duration | undefined): ServerDuration | undefined\nexport function toServerDuration(duration: Duration | undefined) {\n if (!isNumber(duration)) {\n return duration\n }\n return round(duration * 1e6, 0) as ServerDuration\n}\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}\n\nexport function timeStampNow() {\n return dateNow() as TimeStamp\n}\n\nexport function relativeNow() {\n return performance.now() as RelativeTime\n}\n\nexport function clocksNow() {\n return { relative: relativeNow(), timeStamp: timeStampNow() }\n}\n\nexport function clocksOrigin() {\n return { relative: 0 as RelativeTime, timeStamp: getNavigationStart() }\n}\n\nexport function elapsed(start: TimeStamp, end: TimeStamp): Duration\nexport function elapsed(start: RelativeTime, end: RelativeTime): Duration\nexport function elapsed(start: number, end: number) {\n return (end - start) as Duration\n}\n\nexport function addDuration(a: TimeStamp, b: Duration): TimeStamp\nexport function addDuration(a: RelativeTime, b: Duration): RelativeTime\nexport function addDuration(a: Duration, b: Duration): Duration\nexport function addDuration(a: number, b: number) {\n return a + b\n}\n\n/**\n * Get the time since the navigation was started.\n *\n * Note: this does not use `performance.timeOrigin` because it doesn't seem to reflect the actual\n * time on which the navigation has started: it may be much farther in the past, at least in Firefox 71.\n * Related issue in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926\n */\nexport function getRelativeTime(timestamp: TimeStamp) {\n return (timestamp - getNavigationStart()) as RelativeTime\n}\n\nexport function getTimeStamp(relativeTime: RelativeTime) {\n return Math.round(addDuration(getNavigationStart(), relativeTime)) as TimeStamp\n}\n\nexport function looksLikeRelativeTime(time: RelativeTime | TimeStamp): time is RelativeTime {\n return time < ONE_YEAR\n}\n\n/**\n * Navigation start slightly change on some rare cases\n */\nlet navigationStart: TimeStamp | undefined\n\nfunction getNavigationStart() {\n if (navigationStart === undefined) {\n navigationStart = performance.timing.navigationStart as TimeStamp\n }\n return navigationStart\n}\n","interface BrowserWindow {\n __ddBrowserSdkExtensionCallback?: (message: unknown) => void\n}\n\ntype ExtensionMessageType = 'logs' | 'record' | 'rum' | 'telemetry'\n\nexport function sendToExtension(type: ExtensionMessageType, payload: unknown) {\n const callback = (window as BrowserWindow).__ddBrowserSdkExtensionCallback\n if (callback) {\n callback({ type, payload })\n }\n}\n","export type NetworkInterface = 'bluetooth' | 'cellular' | 'ethernet' | 'none' | 'wifi' | 'wimax' | 'other' | 'unknown'\nexport type EffectiveType = 'slow-2g' | '2g' | '3g' | '4g'\n\ninterface BrowserNavigator extends Navigator {\n connection?: NetworkInformation\n}\n\nexport interface NetworkInformation {\n type?: NetworkInterface\n effectiveType?: EffectiveType\n}\n\nexport interface Connectivity {\n status: 'connected' | 'not_connected'\n interfaces?: NetworkInterface[]\n effective_type?: EffectiveType\n [key: string]: unknown\n}\n\nexport function getConnectivity(): Connectivity {\n const navigator = window.navigator as BrowserNavigator\n return {\n status: navigator.onLine ? 'connected' : 'not_connected',\n interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : undefined,\n effective_type: navigator.connection?.effectiveType,\n }\n}\n","import { arrayFrom } from './polyfills'\n\nexport function removeDuplicates(array: T[]) {\n const set = new Set()\n array.forEach((item) => set.add(item))\n return arrayFrom(set)\n}\n\nexport function removeItem(array: T[], item: T) {\n const index = array.indexOf(item)\n if (index >= 0) {\n array.splice(index, 1)\n }\n}\n","import { removeItem } from './utils/arrayUtils'\n\nconst BUFFER_LIMIT = 500\n\nexport interface BoundedBuffer {\n add: (callback: (arg: T) => void) => void\n remove: (callback: (arg: T) => void) => void\n drain: (arg: T) => void\n}\n\nexport function createBoundedBuffer(): BoundedBuffer {\n const buffer: Array<(arg: T) => void> = []\n\n const add: BoundedBuffer['add'] = (callback: (arg: T) => void) => {\n const length = buffer.push(callback)\n if (length > BUFFER_LIMIT) {\n buffer.splice(0, 1)\n }\n }\n\n const remove: BoundedBuffer['remove'] = (callback: (arg: T) => void) => {\n removeItem(buffer, callback)\n }\n\n const drain = (arg: T) => {\n buffer.forEach((callback) => callback(arg))\n buffer.length = 0\n }\n\n return {\n add,\n remove,\n drain,\n }\n}\n","import type { TelemetryEvent, TelemetryConfigurationEvent, TelemetryUsageEvent } from './telemetryEvent.types'\n\nexport const TelemetryType = {\n log: 'log',\n configuration: 'configuration',\n usage: 'usage',\n} as const\n\nexport const enum StatusType {\n debug = 'debug',\n error = 'error',\n}\n\nexport interface RuntimeEnvInfo {\n is_local_file: boolean\n is_worker: boolean\n}\n\nexport type RawTelemetryEvent = TelemetryEvent['telemetry']\nexport type RawTelemetryConfiguration = TelemetryConfigurationEvent['telemetry']['configuration']\nexport type RawTelemetryUsage = TelemetryUsageEvent['telemetry']['usage']\n","import type { Context } from '../../tools/serialisation/context'\nimport { ConsoleApiName } from '../../tools/display'\nimport { NO_ERROR_STACK_PRESENT_MESSAGE } from '../error/error'\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack'\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures'\nimport type { Configuration } from '../configuration'\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 { startsWith, arrayFrom, includes, assign } from '../../tools/utils/polyfills'\nimport { performDraw } from '../../tools/utils/numberUtils'\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify'\nimport { combine } from '../../tools/mergeInto'\nimport { NonErrorPrefix } from '../error/error.types'\nimport type { StackTrace } from '../../tools/stackTrace/computeStackTrace'\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace'\nimport { getConnectivity } from '../connectivity'\nimport { createBoundedBuffer } from '../../tools/boundedBuffer'\nimport type { TelemetryEvent } from './telemetryEvent.types'\nimport type {\n RawTelemetryConfiguration,\n RawTelemetryEvent,\n RuntimeEnvInfo,\n RawTelemetryUsage,\n} from './rawTelemetryEvent.types'\nimport { StatusType, TelemetryType } from './rawTelemetryEvent.types'\n\n// replaced at build time\ndeclare const __BUILD_ENV__SDK_VERSION__: string\ndeclare const __BUILD_ENV__SDK_SETUP__: string\n\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]\n\nexport const enum TelemetryService {\n LOGS = 'browser-logs-sdk',\n RUM = 'browser-rum-sdk',\n}\n\nexport interface Telemetry {\n setContextProvider: (provider: () => Context) => void\n observable: Observable\n enabled: boolean\n}\n\nconst TELEMETRY_EXCLUDED_SITES: string[] = [INTAKE_SITE_US1_FED]\n\n// eslint-disable-next-line local-rules/disallow-side-effects\nlet preStartTelemetryBuffer = createBoundedBuffer()\nlet onRawTelemetryEventCollected = (event: RawTelemetryEvent) => {\n preStartTelemetryBuffer.add(() => onRawTelemetryEventCollected(event))\n}\n\nexport function startTelemetry(telemetryService: TelemetryService, configuration: Configuration): Telemetry {\n let contextProvider: () => Context\n const observable = new Observable()\n const alreadySentEvents = new Set()\n\n const telemetryEnabled =\n !includes(TELEMETRY_EXCLUDED_SITES, configuration.site) && performDraw(configuration.telemetrySampleRate)\n\n const telemetryEnabledPerType = {\n [TelemetryType.log]: telemetryEnabled,\n [TelemetryType.configuration]: telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate),\n [TelemetryType.usage]: telemetryEnabled && performDraw(configuration.telemetryUsageSampleRate),\n }\n\n const runtimeEnvInfo = getRuntimeEnvInfo()\n onRawTelemetryEventCollected = (rawEvent: RawTelemetryEvent) => {\n const stringifiedEvent = jsonStringify(rawEvent)!\n if (\n telemetryEnabledPerType[rawEvent.type!] &&\n alreadySentEvents.size < configuration.maxTelemetryEventsPerPage &&\n !alreadySentEvents.has(stringifiedEvent)\n ) {\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\n function toTelemetryEvent(\n telemetryService: TelemetryService,\n event: RawTelemetryEvent,\n runtimeEnvInfo: RuntimeEnvInfo\n ): TelemetryEvent & Context {\n return combine(\n {\n type: 'telemetry' as const,\n date: timeStampNow(),\n service: telemetryService,\n version: __BUILD_ENV__SDK_VERSION__,\n source: 'browser' as const,\n _dd: {\n format_version: 2 as const,\n },\n telemetry: combine(event, {\n runtime_env: runtimeEnvInfo,\n connectivity: getConnectivity(),\n sdk_setup: __BUILD_ENV__SDK_SETUP__,\n }),\n experimental_features: arrayFrom(getExperimentalFeatures()),\n },\n contextProvider !== undefined ? contextProvider() : {}\n ) as TelemetryEvent & Context\n }\n\n return {\n setContextProvider: (provider: () => Context) => {\n contextProvider = provider\n },\n observable,\n enabled: telemetryEnabled,\n }\n}\nfunction getRuntimeEnvInfo(): RuntimeEnvInfo {\n return {\n is_local_file: window.location.protocol === 'file:',\n is_worker: 'WorkerGlobalScope' in self,\n }\n}\n\nexport function startFakeTelemetry() {\n const events: RawTelemetryEvent[] = []\n\n onRawTelemetryEventCollected = (event: RawTelemetryEvent) => {\n events.push(event)\n }\n\n return events\n}\n\n// need to be called after telemetry context is provided and observers are registered\nexport function drainPreStartTelemetry() {\n preStartTelemetryBuffer.drain()\n}\n\nexport function resetTelemetry() {\n preStartTelemetryBuffer = createBoundedBuffer()\n onRawTelemetryEventCollected = (event: RawTelemetryEvent) => {\n preStartTelemetryBuffer.add(() => onRawTelemetryEventCollected(event))\n }\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: Configuration) {\n return configuration.site === INTAKE_SITE_STAGING\n}\n\nexport function addTelemetryDebug(message: string, context?: Context) {\n displayIfDebugEnabled(ConsoleApiName.debug, message, context)\n onRawTelemetryEventCollected(\n assign(\n {\n type: TelemetryType.log,\n message,\n status: StatusType.debug,\n },\n context\n )\n )\n}\n\nexport function addTelemetryError(e: unknown, context?: Context) {\n onRawTelemetryEventCollected(\n assign(\n {\n type: TelemetryType.log,\n status: StatusType.error,\n },\n formatError(e),\n context\n )\n )\n}\n\nexport function addTelemetryConfiguration(configuration: RawTelemetryConfiguration) {\n onRawTelemetryEventCollected({\n type: TelemetryType.configuration,\n configuration,\n })\n}\n\nexport function addTelemetryUsage(usage: RawTelemetryUsage) {\n onRawTelemetryEventCollected({\n type: TelemetryType.usage,\n usage,\n })\n}\n\nexport function formatError(e: unknown) {\n if (e instanceof Error) {\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: `${NonErrorPrefix.UNCAUGHT} ${jsonStringify(e)!}`,\n }\n}\n\nexport function scrubCustomerFrames(stackTrace: StackTrace) {\n stackTrace.stack = stackTrace.stack.filter(\n (frame) => !frame.url || ALLOWED_FRAME_URLS.some((allowedFrameUrl) => startsWith(frame.url!, allowedFrameUrl))\n )\n return stackTrace\n}\n","import type { Context } from '../../tools/serialisation/context'\nimport { display } from '../../tools/display'\nimport { getType } from '../../tools/utils/typeUtils'\nimport { assign } from '../../tools/utils/polyfills'\nimport type { User } from './user.types'\n\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: Context): Context {\n // We shallow clone only to prevent mutation of user data.\n const user = assign({}, newUser)\n const keys = ['id', 'name', 'email']\n keys.forEach((key) => {\n if (key in user) {\n user[key] = String(user[key])\n }\n })\n return user\n}\n\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser: User): boolean {\n const isValid = getType(newUser) === 'object'\n if (!isValid) {\n display.error('Unsupported user:', newUser)\n }\n return isValid\n}\n","import type { InitConfiguration } from '../domain/configuration'\nimport { display } from '../tools/display'\n\nexport function displayAlreadyInitializedError(sdkName: 'DD_RUM' | 'DD_LOGS', initConfiguration: InitConfiguration) {\n if (!initConfiguration.silentMultipleInit) {\n display.error(`${sdkName} is already initialized.`)\n }\n}\n","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder?: string): string {\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}\n\nconst COMMA_SEPARATED_KEY_VALUE = /([\\w-]+)\\s*=\\s*([^;]+)/g\n\nexport function findCommaSeparatedValue(rawString: string, name: string): string | undefined {\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0\n // eslint-disable-next-line no-constant-condition\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 } else {\n break\n }\n }\n}\n\nexport function findCommaSeparatedValues(rawString: string): Map {\n const result = new Map()\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString)\n if (match) {\n result.set(match[1], match[2])\n } else {\n break\n }\n }\n return result\n}\n\nexport function safeTruncate(candidate: string, length: number, suffix = '') {\n const lastChar = candidate.charCodeAt(length - 1)\n const isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff\n const correctedLength = isLastCharSurrogatePair ? length + 1 : length\n\n if (candidate.length <= correctedLength) {\n return candidate\n }\n\n return `${candidate.slice(0, correctedLength)}${suffix}`\n}\n","import type { ClocksState, Duration, Context } from '@datadog/browser-core'\nimport { clocksNow, combine, elapsed, generateUUID, toServerDuration } from '@datadog/browser-core'\nimport type { LifeCycle, RawRumEventCollectedData } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport type { RawRumVitalEvent } from '../../rawRumEvent.types'\nimport { RumEventType, VitalType } from '../../rawRumEvent.types'\nimport type { PageStateHistory } from '../contexts/pageStateHistory'\nimport { PageState } from '../contexts/pageStateHistory'\n\nexport interface DurationVitalOptions {\n context?: Context\n description?: string\n}\n\nexport interface DurationVitalReference {\n __dd_vital_reference: true\n}\n\nexport interface DurationVitalStart {\n name: string\n startClocks: ClocksState\n context?: Context\n description?: string\n}\n\nexport interface DurationVital {\n name: string\n type: VitalType.DURATION\n startClocks: ClocksState\n duration: Duration\n description?: string\n context?: Context\n}\n\nexport interface CustomVitalsState {\n vitalsByName: Map\n vitalsByReference: WeakMap\n}\n\nexport function createCustomVitalsState() {\n const vitalsByName = new Map()\n const vitalsByReference = new WeakMap()\n return { vitalsByName, vitalsByReference }\n}\n\nexport function startVitalCollection(\n lifeCycle: LifeCycle,\n pageStateHistory: PageStateHistory,\n customVitalsState: CustomVitalsState\n) {\n function isValid(vital: DurationVital) {\n return !pageStateHistory.wasInPageStateDuringPeriod(PageState.FROZEN, vital.startClocks.relative, vital.duration)\n }\n\n function addDurationVital(vital: DurationVital) {\n if (isValid(vital)) {\n lifeCycle.notify(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, processVital(vital, true))\n }\n }\n\n return {\n addDurationVital,\n startDurationVital: (name: string, options: DurationVitalOptions = {}) =>\n startDurationVital(customVitalsState, name, options),\n stopDurationVital: (nameOrRef: string | DurationVitalReference, options: DurationVitalOptions = {}) => {\n stopDurationVital(addDurationVital, customVitalsState, nameOrRef, options)\n },\n }\n}\n\nexport function startDurationVital(\n { vitalsByName, vitalsByReference }: CustomVitalsState,\n name: string,\n options: DurationVitalOptions = {}\n) {\n const vital = {\n name,\n startClocks: clocksNow(),\n context: options.context,\n description: options.description,\n }\n\n // To avoid leaking implementation details of the vital, we return a reference to it.\n const reference: DurationVitalReference = { __dd_vital_reference: true }\n\n vitalsByName.set(name, vital)\n\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\n return reference\n}\n\nexport function stopDurationVital(\n stopCallback: (vital: DurationVital) => void,\n { vitalsByName, vitalsByReference }: CustomVitalsState,\n nameOrRef: string | DurationVitalReference,\n options: DurationVitalOptions = {}\n) {\n const vitalStart = typeof nameOrRef === 'string' ? vitalsByName.get(nameOrRef) : vitalsByReference.get(nameOrRef)\n\n if (!vitalStart) {\n return\n }\n\n stopCallback(buildDurationVital(vitalStart, vitalStart.startClocks, options, clocksNow()))\n\n if (typeof nameOrRef === 'string') {\n vitalsByName.delete(nameOrRef)\n } else {\n vitalsByReference.delete(nameOrRef)\n }\n}\n\nfunction buildDurationVital(\n vitalStart: DurationVitalStart,\n startClocks: ClocksState,\n stopOptions: DurationVitalOptions,\n stopClocks: ClocksState\n): DurationVital {\n return {\n name: vitalStart.name,\n type: VitalType.DURATION,\n startClocks,\n duration: elapsed(startClocks.timeStamp, stopClocks.timeStamp),\n context: combine(vitalStart.context, stopOptions.context),\n description: stopOptions.description ?? vitalStart.description,\n }\n}\n\nfunction processVital(vital: DurationVital, valueComputedBySdk: boolean): RawRumEventCollectedData {\n const rawRumEvent: RawRumVitalEvent = {\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: RumEventType.VITAL,\n }\n\n if (valueComputedBySdk) {\n rawRumEvent._dd = {\n vital: {\n computed_value: true,\n },\n }\n }\n\n return {\n rawRumEvent,\n startTime: vital.startClocks.relative,\n customerContext: vital.context,\n domainContext: {},\n }\n}\n","import { endsWith, includes } from '../tools/utils/polyfills'\nimport { getGlobalObject } from '../tools/getGlobalObject'\nimport type { DefaultPrivacyLevel } from '../domain/configuration'\n\nexport interface BrowserWindowWithEventBridge extends Window {\n DatadogEventBridge?: DatadogEventBridge\n}\n\nexport interface DatadogEventBridge {\n getCapabilities?(): string\n getPrivacyLevel?(): DefaultPrivacyLevel\n getAllowedWebViewHosts(): string\n send(msg: string): void\n}\n\nexport const enum BridgeCapability {\n RECORDS = 'records',\n}\n\nexport function getEventBridge() {\n const eventBridgeGlobal = getEventBridgeGlobal()\n\n if (!eventBridgeGlobal) {\n return\n }\n\n return {\n getCapabilities() {\n return JSON.parse(eventBridgeGlobal.getCapabilities?.() || '[]') as BridgeCapability[]\n },\n getPrivacyLevel() {\n return eventBridgeGlobal.getPrivacyLevel?.()\n },\n getAllowedWebViewHosts() {\n return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts()) as string[]\n },\n send(eventType: T, event: E, viewId?: string) {\n const view = viewId ? { id: viewId } : undefined\n eventBridgeGlobal.send(JSON.stringify({ eventType, event, view }))\n },\n }\n}\n\nexport function bridgeSupports(capability: BridgeCapability): boolean {\n const bridge = getEventBridge()\n return !!bridge && includes(bridge.getCapabilities(), capability)\n}\n\nexport function canUseEventBridge(currentHost = getGlobalObject().location?.hostname): boolean {\n const bridge = getEventBridge()\n return (\n !!bridge &&\n bridge\n .getAllowedWebViewHosts()\n .some((allowedHost) => currentHost === allowedHost || endsWith(currentHost, `.${allowedHost}`))\n )\n}\n\nfunction getEventBridgeGlobal() {\n return getGlobalObject().DatadogEventBridge\n}\n","import { setTimeout } from './timer'\nimport { callMonitored } from './monitor'\nimport { noop } from './utils/functionUtils'\nimport { arrayFrom, startsWith } from './utils/polyfills'\nimport { createHandlingStack } from './stackTrace/handlingStack'\n\n/**\n * Object passed to the callback of an instrumented method call. See `instrumentMethod` for more\n * info.\n */\nexport type InstrumentedMethodCall = {\n /**\n * The target object on which the method was called.\n */\n target: TARGET\n\n /**\n * The parameters with which the method was called.\n *\n * Note: if needed, parameters can be mutated by the instrumentation\n */\n parameters: Parameters\n\n /**\n * Registers a callback that will be called after the original method is called, with the method\n * result passed as argument.\n */\n onPostCall: (callback: PostCallCallback) => void\n\n /**\n * The stack trace of the method call.\n */\n handlingStack?: string\n}\n\ntype PostCallCallback = (\n result: ReturnType\n) => void\n\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(\n targetPrototype: TARGET,\n method: METHOD,\n onPreCall: (this: null, callInfos: InstrumentedMethodCall) => void,\n { computeHandlingStack }: { computeHandlingStack?: boolean } = {}\n) {\n let original = targetPrototype[method]\n\n if (typeof original !== 'function') {\n if (method in targetPrototype && startsWith(method, 'on')) {\n original = noop as TARGET[METHOD]\n } else {\n return { stop: noop }\n }\n }\n\n let stopped = false\n\n const instrumentation = function (this: TARGET): ReturnType | undefined {\n if (stopped) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return original.apply(this, arguments as unknown as Parameters)\n }\n\n const parameters = arrayFrom(arguments) as Parameters\n\n let postCallCallback: PostCallCallback | undefined\n\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\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const result = original.apply(this, parameters)\n\n if (postCallCallback) {\n callMonitored(postCallCallback, null, [result])\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result\n }\n\n targetPrototype[method] = instrumentation as TARGET[METHOD]\n\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}\n\nexport function instrumentSetter(\n targetPrototype: TARGET,\n property: PROPERTY,\n after: (target: TARGET, value: TARGET[PROPERTY]) => void\n) {\n const originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property)\n if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n return { stop: noop }\n }\n\n const stoppedInstrumentation = noop\n let instrumentation = (target: TARGET, value: TARGET[PROPERTY]) => {\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\n const instrumentationWrapper = function (this: TARGET, value: TARGET[PROPERTY]) {\n originalDescriptor.set!.call(this, value)\n instrumentation(this, value)\n }\n\n Object.defineProperty(targetPrototype, property, {\n set: instrumentationWrapper,\n })\n\n return {\n stop: () => {\n if (Object.getOwnPropertyDescriptor(targetPrototype, property)?.set === instrumentationWrapper) {\n Object.defineProperty(targetPrototype, property, originalDescriptor)\n }\n instrumentation = stoppedInstrumentation\n },\n }\n}\n","import { jsonStringify } from '../serialisation/jsonStringify'\n\nexport function normalizeUrl(url: string) {\n return buildUrl(url, location.href).href\n}\n\nexport function isValidUrl(url: string) {\n try {\n return !!buildUrl(url)\n } catch {\n return false\n }\n}\n\nexport function getPathName(url: string) {\n const pathname = buildUrl(url).pathname\n return pathname[0] === '/' ? pathname : `/${pathname}`\n}\n\nexport function buildUrl(url: string, base?: string) {\n const supportedURL = getSupportedUrl()\n if (supportedURL) {\n try {\n return base !== undefined ? new supportedURL(url, base) : new supportedURL(url)\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}\n\nconst originalURL = URL\nlet isURLSupported: boolean | undefined\nfunction getSupportedUrl(): typeof URL | undefined {\n if (isURLSupported === undefined) {\n try {\n const url = new originalURL('http://test/path')\n isURLSupported = url.href === 'http://test/path'\n } catch {\n isURLSupported = false\n }\n }\n return isURLSupported ? originalURL : undefined\n}\n","import type { InstrumentedMethodCall } from '../tools/instrumentMethod'\nimport { instrumentMethod } from '../tools/instrumentMethod'\nimport { monitor } from '../tools/monitor'\nimport { Observable } from '../tools/observable'\nimport { assign } from '../tools/utils/polyfills'\nimport type { ClocksState } from '../tools/utils/timeUtils'\nimport { clocksNow } from '../tools/utils/timeUtils'\nimport { normalizeUrl } from '../tools/utils/urlPolyfill'\n\ninterface FetchContextBase {\n method: string\n startClocks: ClocksState\n input: unknown\n init?: RequestInit\n url: string\n handlingStack?: string\n}\n\nexport interface FetchStartContext extends FetchContextBase {\n state: 'start'\n}\n\nexport interface FetchResolveContext extends FetchContextBase {\n state: 'resolve'\n status: number\n response?: Response\n responseType?: string\n isAborted: boolean\n error?: Error\n}\n\nexport type FetchContext = FetchStartContext | FetchResolveContext\n\nlet fetchObservable: Observable | undefined\n\nexport function initFetchObservable() {\n if (!fetchObservable) {\n fetchObservable = createFetchObservable()\n }\n return fetchObservable\n}\n\nexport function resetFetchObservable() {\n fetchObservable = undefined\n}\n\nfunction createFetchObservable() {\n return new Observable((observable) => {\n if (!window.fetch) {\n return\n }\n\n const { stop } = instrumentMethod(window, 'fetch', (call) => beforeSend(call, observable), {\n computeHandlingStack: true,\n })\n\n return stop\n })\n}\n\nfunction beforeSend(\n { parameters, onPostCall, handlingStack }: InstrumentedMethodCall,\n observable: Observable\n) {\n const [input, init] = parameters\n let methodFromParams = init && init.method\n\n if (methodFromParams === undefined && input instanceof Request) {\n methodFromParams = input.method\n }\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\n const context: FetchStartContext = {\n state: 'start',\n init,\n input,\n method,\n startClocks,\n url,\n handlingStack,\n }\n\n observable.notify(context)\n\n // Those properties can be changed by observable subscribers\n parameters[0] = context.input as RequestInfo | URL\n parameters[1] = context.init\n\n onPostCall((responsePromise) => afterSend(observable, responsePromise, context))\n}\n\nfunction afterSend(\n observable: Observable,\n responsePromise: Promise,\n startContext: FetchStartContext\n) {\n const context = startContext as unknown as FetchResolveContext\n\n function reportFetch(partialContext: Partial) {\n context.state = 'resolve'\n assign(context, partialContext)\n observable.notify(context)\n }\n\n responsePromise.then(\n monitor((response) => {\n reportFetch({\n response,\n responseType: response.type,\n status: response.status,\n isAborted: false,\n })\n }),\n monitor((error: Error) => {\n reportFetch({\n status: 0,\n isAborted:\n context.init?.signal?.aborted || (error instanceof DOMException && error.code === DOMException.ABORT_ERR),\n error,\n })\n })\n )\n}\n","import { display } from '../tools/display'\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils'\nimport { findCommaSeparatedValue, findCommaSeparatedValues, generateUUID } from '../tools/utils/stringUtils'\n\nexport interface CookieOptions {\n secure?: boolean\n crossSite?: boolean\n partitioned?: boolean\n domain?: string\n}\n\nexport function setCookie(name: string, value: string, expireDelay: number, options?: CookieOptions) {\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}\n\nexport function getCookie(name: string) {\n return findCommaSeparatedValue(document.cookie, name)\n}\n\nlet initCookieParsed: Map | undefined\n\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: string) {\n if (!initCookieParsed) {\n initCookieParsed = findCommaSeparatedValues(document.cookie)\n }\n return initCookieParsed.get(name)\n}\n\nexport function resetInitCookies() {\n initCookieParsed = undefined\n}\n\nexport function deleteCookie(name: string, options?: CookieOptions) {\n setCookie(name, '', 0, options)\n}\n\nexport function areCookiesAuthorized(options: CookieOptions): boolean {\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 } catch (error) {\n display.error(error)\n return false\n }\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: string | undefined\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\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","import { getInitCookie } from '../../browser/cookie'\n\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'\n\nexport interface BrowserWindow extends Window {\n _DATADOG_SYNTHETICS_PUBLIC_ID?: unknown\n _DATADOG_SYNTHETICS_RESULT_ID?: unknown\n _DATADOG_SYNTHETICS_INJECTS_RUM?: unknown\n}\n\nexport function willSyntheticsInjectRum(): boolean {\n return Boolean(\n (window as BrowserWindow)._DATADOG_SYNTHETICS_INJECTS_RUM || getInitCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME)\n )\n}\n\nexport function getSyntheticsTestId(): string | undefined {\n const value = (window as BrowserWindow)._DATADOG_SYNTHETICS_PUBLIC_ID || getInitCookie(SYNTHETICS_TEST_ID_COOKIE_NAME)\n return typeof value === 'string' ? value : undefined\n}\n\nexport function getSyntheticsResultId(): string | undefined {\n const value =\n (window as BrowserWindow)._DATADOG_SYNTHETICS_RESULT_ID || getInitCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME)\n return typeof value === 'string' ? value : undefined\n}\n","// Exported only for tests\nexport const enum Browser {\n IE,\n CHROMIUM,\n SAFARI,\n OTHER,\n}\n\nexport function isIE() {\n return detectBrowserCached() === Browser.IE\n}\n\nexport function isChromium() {\n return detectBrowserCached() === Browser.CHROMIUM\n}\n\nexport function isSafari() {\n return detectBrowserCached() === Browser.SAFARI\n}\n\nlet browserCache: Browser | undefined\nfunction detectBrowserCached() {\n return browserCache ?? (browserCache = detectBrowser())\n}\n\n// Exported only for tests\nexport function detectBrowser(browserWindow: Window = window) {\n const userAgent = browserWindow.navigator.userAgent\n if ((browserWindow as any).chrome || /HeadlessChrome/.test(userAgent)) {\n return Browser.CHROMIUM\n }\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 browserWindow.navigator.vendor?.indexOf('Apple') === 0 ||\n (/safari/i.test(userAgent) && !/chrome|android/i.test(userAgent))\n ) {\n return Browser.SAFARI\n }\n\n if ((browserWindow.document as any).documentMode) {\n return Browser.IE\n }\n\n return Browser.OTHER\n}\n","import type { CookieOptions } from '../../../browser/cookie'\nimport type { SessionState } from '../sessionState'\n\nexport const SESSION_STORE_KEY = '_dd_s'\n\nexport type SessionStoreStrategyType = { type: 'Cookie'; cookieOptions: CookieOptions } | { type: 'LocalStorage' }\n\nexport interface SessionStoreStrategy {\n isLockEnabled: boolean\n persistSession: (session: SessionState) => void\n retrieveSession: () => SessionState\n expireSession: () => void\n}\n","import { ONE_HOUR, ONE_MINUTE } from '../../tools/utils/timeUtils'\n\nexport const SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR\nexport const SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE\n","import { isEmptyObject } from '../../tools/utils/objectUtils'\nimport { objectEntries } from '../../tools/utils/polyfills'\nimport { dateNow } from '../../tools/utils/timeUtils'\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from './sessionConstants'\n\nconst SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/\nconst SESSION_ENTRY_SEPARATOR = '&'\n\nexport const EXPIRED = '1'\n\nexport interface SessionState {\n id?: string\n created?: string\n expire?: string\n isExpired?: typeof EXPIRED\n\n [key: string]: string | undefined\n}\n\nexport function getExpiredSessionState(): SessionState {\n return {\n isExpired: EXPIRED,\n }\n}\n\nexport function isSessionInNotStartedState(session: SessionState) {\n return isEmptyObject(session)\n}\n\nexport function isSessionStarted(session: SessionState) {\n return !isSessionInNotStartedState(session)\n}\n\nexport function isSessionInExpiredState(session: SessionState) {\n return session.isExpired !== undefined || !isActiveSession(session)\n}\n\n// An active session is a session in either `Tracked` or `NotTracked` state\nfunction isActiveSession(sessionState: 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 (\n (sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&\n (sessionState.expire === undefined || dateNow() < Number(sessionState.expire))\n )\n}\n\nexport function expandSessionState(session: SessionState) {\n session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY)\n}\n\nexport function toSessionString(session: SessionState) {\n return objectEntries(session)\n .map(([key, value]) => `${key}=${value}`)\n .join(SESSION_ENTRY_SEPARATOR)\n}\n\nexport function toSessionState(sessionString: string | undefined | null) {\n const session: SessionState = {}\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 session[key] = value\n }\n })\n }\n return session\n}\n\nfunction isValidSessionString(sessionString: string | undefined | null): sessionString is string {\n return (\n !!sessionString &&\n (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString))\n )\n}\n","import { getInitCookie } from '../../browser/cookie'\nimport type { SessionStoreStrategy } from './storeStrategies/sessionStoreStrategy'\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy'\nimport type { SessionState } from './sessionState'\nimport { expandSessionState, isSessionStarted } from './sessionState'\n\nexport const OLD_SESSION_COOKIE_NAME = '_dd'\nexport const OLD_RUM_COOKIE_NAME = '_dd_r'\nexport const OLD_LOGS_COOKIE_NAME = '_dd_l'\n\n// duplicate values to avoid dependency issues\nexport const RUM_SESSION_KEY = 'rum'\nexport const LOGS_SESSION_KEY = 'logs'\n\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: SessionStoreStrategy) {\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: SessionState = {}\n\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\n if (isSessionStarted(session)) {\n expandSessionState(session)\n cookieStoreStrategy.persistSession(session)\n }\n }\n}\n","import { isChromium } from '../../../tools/utils/browserDetection'\nimport type { CookieOptions } from '../../../browser/cookie'\nimport { getCurrentSite, areCookiesAuthorized, getCookie, setCookie } from '../../../browser/cookie'\nimport type { InitConfiguration } from '../../configuration'\nimport { tryOldCookiesMigration } from '../oldCookiesMigration'\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from '../sessionConstants'\nimport type { SessionState } from '../sessionState'\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState'\nimport type { SessionStoreStrategy, SessionStoreStrategyType } from './sessionStoreStrategy'\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy'\n\nexport function selectCookieStrategy(initConfiguration: InitConfiguration): SessionStoreStrategyType | undefined {\n const cookieOptions = buildCookieOptions(initConfiguration)\n return areCookiesAuthorized(cookieOptions) ? { type: 'Cookie', cookieOptions } : undefined\n}\n\nexport function initCookieStrategy(cookieOptions: CookieOptions): SessionStoreStrategy {\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: () => expireSessionCookie(cookieOptions),\n }\n\n tryOldCookiesMigration(cookieStore)\n\n return cookieStore\n}\n\nfunction persistSessionCookie(options: CookieOptions) {\n return (session: SessionState) => {\n setCookie(SESSION_STORE_KEY, toSessionString(session), SESSION_EXPIRATION_DELAY, options)\n }\n}\n\nfunction expireSessionCookie(options: CookieOptions) {\n setCookie(SESSION_STORE_KEY, toSessionString(getExpiredSessionState()), SESSION_TIME_OUT_DELAY, options)\n}\n\nfunction retrieveSessionCookie(): SessionState {\n const sessionString = getCookie(SESSION_STORE_KEY)\n return toSessionState(sessionString)\n}\n\nexport function buildCookieOptions(initConfiguration: InitConfiguration) {\n const cookieOptions: CookieOptions = {}\n\n cookieOptions.secure =\n !!initConfiguration.useSecureSessionCookie ||\n !!initConfiguration.usePartitionedCrossSiteSessionCookie ||\n !!initConfiguration.useCrossSiteSessionCookie\n cookieOptions.crossSite =\n !!initConfiguration.usePartitionedCrossSiteSessionCookie || !!initConfiguration.useCrossSiteSessionCookie\n cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie\n\n if (initConfiguration.trackSessionAcrossSubdomains) {\n cookieOptions.domain = getCurrentSite()\n }\n\n return cookieOptions\n}\n","import { generateUUID } from '../../../tools/utils/stringUtils'\nimport type { SessionState } from '../sessionState'\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState'\nimport type { SessionStoreStrategy, SessionStoreStrategyType } from './sessionStoreStrategy'\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy'\n\nconst LOCAL_STORAGE_TEST_KEY = '_dd_test_'\n\nexport function selectLocalStorageStrategy(): SessionStoreStrategyType | undefined {\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: 'LocalStorage' } : undefined\n } catch (e) {\n return undefined\n }\n}\n\nexport function initLocalStorageStrategy(): SessionStoreStrategy {\n return {\n isLockEnabled: false,\n persistSession: persistInLocalStorage,\n retrieveSession: retrieveSessionFromLocalStorage,\n expireSession: expireSessionFromLocalStorage,\n }\n}\n\nfunction persistInLocalStorage(sessionState: SessionState) {\n localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState))\n}\n\nfunction retrieveSessionFromLocalStorage(): SessionState {\n const sessionString = localStorage.getItem(SESSION_STORE_KEY)\n return toSessionState(sessionString)\n}\n\nfunction expireSessionFromLocalStorage() {\n persistInLocalStorage(getExpiredSessionState())\n}\n","import { setTimeout } from '../../tools/timer'\nimport { generateUUID } from '../../tools/utils/stringUtils'\nimport { assign } from '../../tools/utils/polyfills'\nimport type { SessionStoreStrategy } from './storeStrategies/sessionStoreStrategy'\nimport type { SessionState } from './sessionState'\nimport { expandSessionState, isSessionInExpiredState } from './sessionState'\n\ntype Operations = {\n process: (sessionState: SessionState) => SessionState | undefined\n after?: (sessionState: SessionState) => void\n}\n\nexport const LOCK_RETRY_DELAY = 10\nexport const LOCK_MAX_TRIES = 100\nconst bufferedOperations: Operations[] = []\nlet ongoingOperations: Operations | undefined\n\nexport function processSessionStoreOperations(\n operations: Operations,\n sessionStoreStrategy: SessionStoreStrategy,\n numberOfRetries = 0\n) {\n const { isLockEnabled, persistSession, expireSession } = sessionStoreStrategy\n const persistWithLock = (session: SessionState) => persistSession(assign({}, session, { lock: currentLock }))\n const retrieveStore = () => {\n const session = sessionStoreStrategy.retrieveSession()\n const lock = session.lock\n\n if (session.lock) {\n delete session.lock\n }\n\n return {\n session,\n lock,\n }\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: string\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()\n } else {\n expandSessionState(processedSession)\n isLockEnabled ? persistWithLock(processedSession) : persistSession(processedSession)\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 operations.after?.(processedSession || currentStore.session)\n next(sessionStoreStrategy)\n}\n\nfunction retryLater(operations: Operations, sessionStore: SessionStoreStrategy, currentNumberOfRetries: number) {\n setTimeout(() => {\n processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1)\n }, LOCK_RETRY_DELAY)\n}\n\nfunction next(sessionStore: SessionStoreStrategy) {\n ongoingOperations = undefined\n const nextOperations = bufferedOperations.shift()\n if (nextOperations) {\n processSessionStoreOperations(nextOperations, sessionStore)\n }\n}\n","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 type { InitConfiguration } from '../configuration'\nimport { assign } from '../../tools/utils/polyfills'\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie'\nimport type { SessionStoreStrategyType } from './storeStrategies/sessionStoreStrategy'\nimport {\n getExpiredSessionState,\n isSessionInExpiredState,\n isSessionInNotStartedState,\n isSessionStarted,\n} from './sessionState'\nimport type { SessionState } from './sessionState'\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage'\nimport { processSessionStoreOperations } from './sessionStoreOperations'\n\nexport interface SessionStore {\n expandOrRenewSession: () => void\n expandSession: () => void\n getSession: () => SessionState\n restartSession: () => void\n renewObservable: Observable\n expireObservable: Observable\n sessionStateUpdateObservable: Observable<{ previousState: SessionState; newState: SessionState }>\n expire: () => void\n stop: () => void\n updateSessionState: (state: Partial) => void\n}\n\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/**\n * Checks if cookies are available as the preferred storage\n * Else, checks if LocalStorage is allowed and available\n */\nexport function selectSessionStoreStrategyType(\n initConfiguration: InitConfiguration\n): SessionStoreStrategyType | undefined {\n let sessionStoreStrategyType = selectCookieStrategy(initConfiguration)\n if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n sessionStoreStrategyType = selectLocalStorageStrategy()\n }\n return sessionStoreStrategyType\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(\n sessionStoreStrategyType: SessionStoreStrategyType,\n productKey: string,\n computeSessionState: (rawTrackingType?: string) => { trackingType: TrackingType; isTracked: boolean }\n): SessionStore {\n const renewObservable = new Observable()\n const expireObservable = new Observable()\n const sessionStateUpdateObservable = new Observable<{ previousState: SessionState; newState: SessionState }>()\n\n const sessionStoreStrategy =\n sessionStoreStrategyType.type === 'Cookie'\n ? initCookieStrategy(sessionStoreStrategyType.cookieOptions)\n : initLocalStorageStrategy()\n const { expireSession } = sessionStoreStrategy\n\n const watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY)\n let sessionCache: SessionState\n\n startSession()\n\n const { throttled: throttledExpandOrRenewSession, cancel: cancelExpandOrRenewSession } = throttle(() => {\n processSessionStoreOperations(\n {\n process: (sessionState) => {\n if (isSessionInNotStartedState(sessionState)) {\n return\n }\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 },\n sessionStoreStrategy\n )\n }, STORAGE_POLL_DELAY)\n\n function expandSession() {\n processSessionStoreOperations(\n {\n process: (sessionState) => (hasSessionInCache() ? synchronizeSession(sessionState) : undefined),\n },\n sessionStoreStrategy\n )\n }\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 {\n process: (sessionState) => (isSessionInExpiredState(sessionState) ? getExpiredSessionState() : undefined),\n after: synchronizeSession,\n },\n sessionStoreStrategy\n )\n }\n\n function synchronizeSession(sessionState: SessionState) {\n if (isSessionInExpiredState(sessionState)) {\n sessionState = getExpiredSessionState()\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache()\n } else {\n sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState })\n sessionCache = sessionState\n }\n }\n return sessionState\n }\n\n function startSession() {\n processSessionStoreOperations(\n {\n process: (sessionState) => {\n if (isSessionInNotStartedState(sessionState)) {\n return getExpiredSessionState()\n }\n },\n after: (sessionState) => {\n sessionCache = sessionState\n },\n },\n sessionStoreStrategy\n )\n }\n\n function expandOrRenewSessionState(sessionState: SessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return false\n }\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\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined\n }\n\n function isSessionInCacheOutdated(sessionState: SessionState) {\n return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey]\n }\n\n function expireSessionInCache() {\n sessionCache = getExpiredSessionState()\n expireObservable.notify()\n }\n\n function renewSessionInCache(sessionState: SessionState) {\n sessionCache = sessionState\n renewObservable.notify()\n }\n\n function updateSessionState(partialSessionState: Partial) {\n processSessionStoreOperations(\n {\n process: (sessionState) => assign({}, sessionState, partialSessionState),\n after: synchronizeSession,\n },\n sessionStoreStrategy\n )\n }\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()\n synchronizeSession(getExpiredSessionState())\n },\n stop: () => {\n clearInterval(watchSessionTimeoutId)\n },\n updateSessionState,\n }\n}\n","import type { Payload } from '../../transport'\nimport { timeStampNow } from '../../tools/utils/timeUtils'\nimport { normalizeUrl } from '../../tools/utils/urlPolyfill'\nimport { generateUUID } from '../../tools/utils/stringUtils'\nimport type { InitConfiguration } from './configuration'\nimport { INTAKE_SITE_US1, INTAKE_SITE_FED_STAGING, PCI_INTAKE_HOST_US1 } from './intakeSites'\n\n// replaced at build time\ndeclare const __BUILD_ENV__SDK_VERSION__: string\n\nexport type TrackType = 'logs' | 'rum' | 'replay'\nexport type ApiType =\n | 'xhr'\n | 'fetch'\n | 'beacon'\n // 'manual' reflects that the request have been sent manually, outside of the SDK (ex: via curl or\n // a Node.js script).\n | 'manual'\n\nexport type EndpointBuilder = ReturnType\n\nexport function createEndpointBuilder(\n initConfiguration: InitConfiguration,\n trackType: TrackType,\n configurationTags: string[]\n) {\n const buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType)\n\n return {\n build(api: ApiType, payload: Payload) {\n const parameters = buildEndpointParameters(initConfiguration, trackType, configurationTags, api, payload)\n return buildUrlWithParameters(parameters)\n },\n urlPrefix: buildUrlWithParameters(''),\n trackType,\n }\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(\n initConfiguration: InitConfiguration,\n trackType: TrackType\n): (parameters: string) => string {\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}\n\nfunction buildEndpointHost(trackType: TrackType, initConfiguration: InitConfiguration & { usePciIntake?: boolean }) {\n const { site = INTAKE_SITE_US1, internalAnalyticsSubdomain } = initConfiguration\n\n if (trackType === 'logs' && initConfiguration.usePciIntake && site === INTAKE_SITE_US1) {\n return PCI_INTAKE_HOST_US1\n }\n\n if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n return `${internalAnalyticsSubdomain}.${INTAKE_SITE_US1}`\n }\n\n if (site === INTAKE_SITE_FED_STAGING) {\n return `http-intake.logs.${site}`\n }\n\n const domainParts = site.split('.')\n const extension = domainParts.pop()\n return `browser-intake-${domainParts.join('-')}.${extension!}`\n}\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(\n { clientToken, internalAnalyticsSubdomain }: InitConfiguration,\n trackType: TrackType,\n configurationTags: string[],\n api: ApiType,\n { retry, encoding }: Payload\n) {\n const tags = [`sdk_version:${__BUILD_ENV__SDK_VERSION__}`, `api:${api}`].concat(configurationTags)\n if (retry) {\n tags.push(`retry_count:${retry.count}`, `retry_after:${retry.lastFailureStatus}`)\n }\n\n const parameters = [\n 'ddsource=browser',\n `ddtags=${encodeURIComponent(tags.join(','))}`,\n `dd-api-key=${clientToken}`,\n `dd-evp-origin-version=${encodeURIComponent(__BUILD_ENV__SDK_VERSION__)}`,\n 'dd-evp-origin=browser',\n `dd-request-id=${generateUUID()}`,\n ]\n\n if (encoding) {\n parameters.push(`dd-evp-encoding=${encoding}`)\n }\n\n if (trackType === 'rum') {\n parameters.push(`batch_time=${timeStampNow()}`)\n }\n\n if (internalAnalyticsSubdomain) {\n parameters.reverse()\n }\n\n return parameters.join('&')\n}\n","import { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display'\nimport type { InitConfiguration } from './configuration'\n\nexport const TAG_SIZE_LIMIT = 200\n\nexport function buildTags(configuration: InitConfiguration): string[] {\n const { env, service, version, datacenter } = configuration\n const tags = []\n\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\n return tags\n}\n\nexport function buildTag(key: string, rawValue: string) {\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\n if (rawValue.length > valueSizeLimit || hasForbiddenCharacters(rawValue)) {\n display.warn(\n `${key} value doesn't meet tag requirements and will be sanitized. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/tagging/#defining-tags`\n )\n }\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\n return `${key}:${sanitizedValue}`\n}\n\nfunction hasForbiddenCharacters(rawValue: string) {\n // Unicode property escapes is not supported in all browsers, so we use a try/catch.\n // Todo: Remove the try/catch when dropping IE11.\n if (!supportUnicodePropertyEscapes()) {\n return false\n }\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}\n\nexport function supportUnicodePropertyEscapes() {\n try {\n new RegExp('[\\\\p{Ll}]', 'u')\n return true\n } catch {\n return false\n }\n}\n","import { catchUserErrors } from '../../tools/catchUserErrors'\nimport { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display'\nimport type { RawTelemetryConfiguration } from '../telemetry'\nimport type { Duration } from '../../tools/utils/timeUtils'\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 { assign } from '../../tools/utils/polyfills'\nimport { selectSessionStoreStrategyType } from '../session/sessionStore'\nimport type { SessionStoreStrategyType } from '../session/storeStrategies/sessionStoreStrategy'\nimport { TrackingConsent } from '../trackingConsent'\nimport type { TransportConfiguration } from './transportConfiguration'\nimport { computeTransportConfiguration } from './transportConfiguration'\n\nexport const DefaultPrivacyLevel = {\n ALLOW: 'allow',\n MASK: 'mask',\n MASK_USER_INPUT: 'mask-user-input',\n} as const\nexport type DefaultPrivacyLevel = (typeof DefaultPrivacyLevel)[keyof typeof DefaultPrivacyLevel]\n\nexport const TraceContextInjection = {\n ALL: 'all',\n SAMPLED: 'sampled',\n} as const\n\nexport type TraceContextInjection = (typeof TraceContextInjection)[keyof typeof TraceContextInjection]\n\nexport interface InitConfiguration {\n /**\n * The client token for Datadog. Required for authenticating your application with Datadog.\n */\n clientToken: string\n beforeSend?: GenericBeforeSendCallback | undefined\n /**\n * The percentage of sessions tracked. A value between 0 and 100.\n * @default 100\n */\n sessionSampleRate?: number | undefined\n /**\n * The percentage of telemetry events sent. A value between 0 and 100.\n * @default 20\n */\n telemetrySampleRate?: number | undefined\n /**\n * Initialization fails silently if the RUM Browser SDK is already initialized on the page.\n * @default false\n */\n silentMultipleInit?: boolean | undefined\n /**\n * Allows the use of localStorage when cookies cannot be set. This enables the RUM Browser SDK to run in environments that do not provide cookie support.\n * See [Monitor Electron Applications Using the Browser SDK](https://docs.datadoghq.com/real_user_monitoring/guide/monitor-electron-applications-using-browser-sdk) for further information.\n * @default false\n */\n allowFallbackToLocalStorage?: boolean | undefined\n /**\n * Allow listening to DOM events dispatched programmatically ([untrusted events](https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted)). Enabling this option can be useful if you heavily rely on programmatic events, such as in an automated UI test environment.\n * @default false\n */\n allowUntrustedEvents?: boolean | undefined\n /**\n * Store global context and user context in localStorage to preserve them along the user navigation.\n * See [Contexts life cycle](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/?tab=npm#contexts-life-cycle) for further information.\n * @default false\n */\n storeContextsAcrossPages?: boolean | undefined\n /**\n * Set the initial user tracking consent state.\n * See [User tracking consent](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/?tab=npm#user-tracking-consent) for further information.\n * @default granted\n */\n trackingConsent?: TrackingConsent | undefined\n\n // transport options\n /**\n * Optional proxy URL, for example: https://www.proxy.com/path.\n * See [Proxy Your Browser RUM Data](https://docs.datadoghq.com/real_user_monitoring/guide/proxy-rum-data) for further information.\n */\n proxy?: string | ProxyFn | undefined\n /**\n * The Datadog [site](https://docs.datadoghq.com/getting_started/site) parameter of your organization.\n * @default datadoghq.com\n */\n site?: string | undefined\n\n // tag and context options\n /**\n * The service name for your application. Follows the [tag syntax requirements](https://docs.datadoghq.com/getting_started/tagging/#define-tags).\n */\n service?: string | undefined | null\n /**\n * The application’s environment, for example: prod, pre-prod, and staging. Follows the [tag syntax requirements](https://docs.datadoghq.com/getting_started/tagging/#define-tags).\n */\n env?: string | undefined | null\n /**\n * The application’s version, for example: 1.2.3, 6c44da20, and 2020.02.13. Follows the [tag syntax requirements](https://docs.datadoghq.com/getting_started/tagging/#define-tags).\n */\n version?: string | undefined | null\n\n // cookie options\n /**\n * Whether a secure cross-site session cookie is used\n * @default false\n * @deprecated use usePartitionedCrossSiteSessionCookie instead\n */\n useCrossSiteSessionCookie?: boolean | undefined\n /**\n * Use a partitioned secure cross-site session cookie. This allows the RUM Browser SDK to run when the site is loaded from another one (iframe). Implies `useSecureSessionCookie`.\n * @default false\n */\n usePartitionedCrossSiteSessionCookie?: boolean | undefined\n /**\n * Use a secure session cookie. This disables RUM events sent on insecure (non-HTTPS) connections.\n * @default false\n */\n useSecureSessionCookie?: boolean | undefined\n /**\n * Preserve the session across subdomains for the same site.\n * @default false\n */\n trackSessionAcrossSubdomains?: boolean | undefined\n\n // internal options\n /**\n * [Internal option] Enable experimental features\n */\n enableExperimentalFeatures?: string[] | undefined\n /**\n * [Internal option] Configure the dual chipping to another datacenter\n */\n replica?: ReplicaUserConfiguration | undefined\n /**\n * [Internal option] Set the datacenter from where the data is dual chipped\n */\n datacenter?: string\n /**\n * [Internal option] Datadog internal analytics subdomain\n */\n // TODO next major: remove this option and replace usages by proxyFn\n internalAnalyticsSubdomain?: string\n /**\n * [Internal option] The percentage of telemetry configuration sent. A value between 0 and 100.\n * @default 5\n */\n telemetryConfigurationSampleRate?: number\n /**\n * [Internal option] The percentage of telemetry usage sent. A value between 0 and 100.\n * @default 5\n */\n telemetryUsageSampleRate?: number\n}\n\n// This type is only used to build the core configuration. Logs and RUM SDKs are using a proper type\n// for this option.\ntype GenericBeforeSendCallback = (event: any, context?: any) => unknown\n\n/**\n * path: /api/vX/product\n * parameters: xxx=yyy&zzz=aaa\n */\ntype ProxyFn = (options: { path: string; parameters: string }) => string\n\ninterface ReplicaUserConfiguration {\n applicationId?: string\n clientToken: string\n}\n\nexport interface Configuration extends TransportConfiguration {\n // Built from init configuration\n beforeSend: GenericBeforeSendCallback | undefined\n sessionStoreStrategyType: SessionStoreStrategyType | undefined\n sessionSampleRate: number\n telemetrySampleRate: number\n telemetryConfigurationSampleRate: number\n telemetryUsageSampleRate: number\n service: string | undefined\n silentMultipleInit: boolean\n allowUntrustedEvents: boolean\n trackingConsent: TrackingConsent\n storeContextsAcrossPages: boolean\n\n // Event limits\n eventRateLimiterThreshold: number // Limit the maximum number of actions, errors and logs per minutes\n maxTelemetryEventsPerPage: number\n\n // Batch configuration\n batchBytesLimit: number\n flushTimeout: Duration\n batchMessagesLimit: number\n messageBytesLimit: number\n}\n\nfunction isString(tag: unknown, tagName: string): tag is string | undefined | null {\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}\n\nfunction isDatadogSite(site: unknown) {\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}\n\nexport function isSampleRate(sampleRate: unknown, name: string) {\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}\n\nexport function validateAndBuildConfiguration(initConfiguration: InitConfiguration): Configuration | undefined {\n if (!initConfiguration || !initConfiguration.clientToken) {\n display.error('Client Token is not configured, we will not send any data.')\n return\n }\n\n if (\n !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 ) {\n return\n }\n\n if (\n initConfiguration.trackingConsent !== undefined &&\n !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)\n ) {\n display.error('Tracking Consent should be either \"granted\" or \"not-granted\"')\n return\n }\n\n return assign(\n {\n beforeSend:\n initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n sessionStoreStrategyType: selectSessionStoreStrategyType(initConfiguration),\n sessionSampleRate: initConfiguration.sessionSampleRate ?? 100,\n telemetrySampleRate: initConfiguration.telemetrySampleRate ?? 20,\n telemetryConfigurationSampleRate: initConfiguration.telemetryConfigurationSampleRate ?? 5,\n telemetryUsageSampleRate: initConfiguration.telemetryUsageSampleRate ?? 5,\n service: initConfiguration.service || undefined,\n silentMultipleInit: !!initConfiguration.silentMultipleInit,\n allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,\n trackingConsent: initConfiguration.trackingConsent ?? TrackingConsent.GRANTED,\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\n eventRateLimiterThreshold: 3000,\n maxTelemetryEventsPerPage: 15,\n\n /**\n * flush automatically, aim to be lower than ALB connection timeout\n * to maximize connection reuse.\n */\n flushTimeout: (30 * ONE_SECOND) as Duration,\n\n /**\n * Logs intake limit\n */\n batchMessagesLimit: 50,\n messageBytesLimit: 256 * ONE_KIBI_BYTE,\n },\n computeTransportConfiguration(initConfiguration)\n )\n}\n\nexport function serializeConfiguration(initConfiguration: 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_cross_site_session_cookie: initConfiguration.useCrossSiteSessionCookie,\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 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 } satisfies RawTelemetryConfiguration\n}\n","import { objectValues, assign } from '../../tools/utils/polyfills'\nimport type { InitConfiguration } from './configuration'\nimport type { EndpointBuilder } from './endpointBuilder'\nimport { createEndpointBuilder } from './endpointBuilder'\nimport { buildTags } from './tags'\nimport { INTAKE_SITE_US1, PCI_INTAKE_HOST_US1 } from './intakeSites'\n\nexport interface TransportConfiguration {\n logsEndpointBuilder: EndpointBuilder\n rumEndpointBuilder: EndpointBuilder\n sessionReplayEndpointBuilder: EndpointBuilder\n isIntakeUrl: (url: string) => boolean\n replica?: ReplicaConfiguration\n site: string\n}\n\nexport interface ReplicaConfiguration {\n applicationId?: string\n logsEndpointBuilder: EndpointBuilder\n rumEndpointBuilder: EndpointBuilder\n}\n\nexport function computeTransportConfiguration(initConfiguration: InitConfiguration): TransportConfiguration {\n const site = initConfiguration.site || INTAKE_SITE_US1\n\n const tags = buildTags(initConfiguration)\n\n const endpointBuilders = computeEndpointBuilders(initConfiguration, tags)\n const intakeUrlPrefixes = computeIntakeUrlPrefixes(endpointBuilders, site)\n\n const replicaConfiguration = computeReplicaConfiguration(initConfiguration, intakeUrlPrefixes, tags)\n\n return assign(\n {\n isIntakeUrl: (url: string) => intakeUrlPrefixes.some((intakeEndpoint) => url.indexOf(intakeEndpoint) === 0),\n replica: replicaConfiguration,\n site,\n },\n endpointBuilders\n )\n}\n\nfunction computeEndpointBuilders(initConfiguration: InitConfiguration, tags: string[]) {\n return {\n logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay', tags),\n }\n}\n\nfunction computeReplicaConfiguration(\n initConfiguration: InitConfiguration,\n intakeUrlPrefixes: string[],\n tags: string[]\n): ReplicaConfiguration | undefined {\n if (!initConfiguration.replica) {\n return\n }\n\n const replicaConfiguration: InitConfiguration = assign({}, initConfiguration, {\n site: INTAKE_SITE_US1,\n clientToken: initConfiguration.replica.clientToken,\n })\n\n const replicaEndpointBuilders = {\n logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),\n }\n\n intakeUrlPrefixes.push(...objectValues(replicaEndpointBuilders).map((builder) => builder.urlPrefix))\n\n return assign({ applicationId: initConfiguration.replica.applicationId }, replicaEndpointBuilders)\n}\n\nfunction computeIntakeUrlPrefixes(\n endpointBuilders: ReturnType,\n site: string\n): string[] {\n const intakeUrlPrefixes = objectValues(endpointBuilders).map((builder) => builder.urlPrefix)\n\n if (site === INTAKE_SITE_US1) {\n intakeUrlPrefixes.push(`https://${PCI_INTAKE_HOST_US1}/`)\n }\n\n return intakeUrlPrefixes\n}\n","import { startsWith } from './utils/polyfills'\nimport { display } from './display'\nimport { getType } from './utils/typeUtils'\n\nexport type MatchOption = string | RegExp | ((value: string) => boolean)\n\nexport function isMatchOption(item: unknown): item is MatchOption {\n const itemType = getType(item)\n return itemType === 'string' || itemType === 'function' || item instanceof RegExp\n}\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: MatchOption[], value: string, useStartsWith = false): boolean {\n return list.some((item) => {\n try {\n if (typeof item === 'function') {\n return item(value)\n } else if (item instanceof RegExp) {\n return item.test(value)\n } else if (typeof item === 'string') {\n return useStartsWith ? startsWith(value, item) : item === value\n }\n } catch (e) {\n display.error(e)\n }\n return false\n })\n}\n","import {\n objectEntries,\n shallowClone,\n performDraw,\n isNumber,\n assign,\n find,\n getType,\n isMatchOption,\n matchList,\n TraceContextInjection,\n} from '@datadog/browser-core'\nimport type { RumConfiguration } from '../configuration'\nimport type {\n RumFetchResolveContext,\n RumFetchStartContext,\n RumXhrCompleteContext,\n RumXhrStartContext,\n} from '../requestCollection'\nimport type { RumSessionManager } from '../rumSessionManager'\nimport type { PropagatorType, TracingOption } from './tracer.types'\n\nexport interface Tracer {\n traceFetch: (context: Partial) => void\n traceXhr: (context: Partial, xhr: XMLHttpRequest) => void\n clearTracingIfNeeded: (context: RumFetchResolveContext | RumXhrCompleteContext) => void\n}\n\ninterface TracingHeaders {\n [key: string]: string\n}\n\nexport function isTracingOption(item: unknown): item is TracingOption {\n const expectedItem = item as TracingOption\n return (\n getType(expectedItem) === 'object' &&\n isMatchOption(expectedItem.match) &&\n Array.isArray(expectedItem.propagatorTypes)\n )\n}\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: RumFetchResolveContext | RumXhrCompleteContext) {\n if (context.status === 0 && !context.isAborted) {\n context.traceId = undefined\n context.spanId = undefined\n context.traceSampled = undefined\n }\n}\n\nexport function startTracer(configuration: RumConfiguration, sessionManager: RumSessionManager): Tracer {\n return {\n clearTracingIfNeeded,\n traceFetch: (context) =>\n injectHeadersIfTracingAllowed(configuration, context, sessionManager, (tracingHeaders: TracingHeaders) => {\n if (context.input instanceof Request && !context.init?.headers) {\n context.input = new Request(context.input)\n Object.keys(tracingHeaders).forEach((key) => {\n ;(context.input as Request).headers.append(key, tracingHeaders[key])\n })\n } else {\n context.init = shallowClone(context.init)\n const headers: Array<[string, string]> = []\n if (context.init.headers instanceof Headers) {\n context.init.headers.forEach((value, key) => {\n headers.push([key, value])\n })\n } else if (Array.isArray(context.init.headers)) {\n context.init.headers.forEach((header) => {\n headers.push(header)\n })\n } else if (context.init.headers) {\n Object.keys(context.init.headers).forEach((key) => {\n headers.push([key, (context.init!.headers as Record)[key]])\n })\n }\n context.init.headers = headers.concat(objectEntries(tracingHeaders))\n }\n }),\n traceXhr: (context, xhr) =>\n injectHeadersIfTracingAllowed(configuration, context, sessionManager, (tracingHeaders: TracingHeaders) => {\n Object.keys(tracingHeaders).forEach((name) => {\n xhr.setRequestHeader(name, tracingHeaders[name])\n })\n }),\n }\n}\n\nfunction injectHeadersIfTracingAllowed(\n configuration: RumConfiguration,\n context: Partial,\n sessionManager: RumSessionManager,\n inject: (tracingHeaders: TracingHeaders) => void\n) {\n if (!isTracingSupported() || !sessionManager.findTrackedSession()) {\n return\n }\n\n const tracingOption = find(configuration.allowedTracingUrls, (tracingOption: TracingOption) =>\n matchList([tracingOption.match], context.url!, true)\n )\n if (!tracingOption) {\n return\n }\n context.traceSampled = !isNumber(configuration.traceSampleRate) || performDraw(configuration.traceSampleRate)\n\n if (!context.traceSampled && configuration.traceContextInjection !== TraceContextInjection.ALL) {\n return\n }\n\n context.traceId = createTraceIdentifier()\n context.spanId = createTraceIdentifier()\n\n inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled, tracingOption.propagatorTypes))\n}\n\nexport function isTracingSupported() {\n return getCrypto() !== undefined\n}\n\nexport function getCrypto() {\n return window.crypto || (window as any).msCrypto\n}\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(\n traceId: TraceIdentifier,\n spanId: TraceIdentifier,\n traceSampled: boolean,\n propagatorTypes: PropagatorType[]\n): TracingHeaders {\n const tracingHeaders: TracingHeaders = {}\n\n propagatorTypes.forEach((propagatorType) => {\n switch (propagatorType) {\n case 'datadog': {\n assign(tracingHeaders, {\n 'x-datadog-origin': 'rum',\n 'x-datadog-parent-id': spanId.toDecimalString(),\n 'x-datadog-sampling-priority': traceSampled ? '1' : '0',\n 'x-datadog-trace-id': traceId.toDecimalString(),\n })\n break\n }\n // https://www.w3.org/TR/trace-context/\n case 'tracecontext': {\n assign(tracingHeaders, {\n traceparent: `00-0000000000000000${traceId.toPaddedHexadecimalString()}-${spanId.toPaddedHexadecimalString()}-0${\n traceSampled ? '1' : '0'\n }`,\n })\n break\n }\n // https://github.com/openzipkin/b3-propagation\n case 'b3': {\n assign(tracingHeaders, {\n b3: `${traceId.toPaddedHexadecimalString()}-${spanId.toPaddedHexadecimalString()}-${\n traceSampled ? '1' : '0'\n }`,\n })\n break\n }\n case 'b3multi': {\n assign(tracingHeaders, {\n 'X-B3-TraceId': traceId.toPaddedHexadecimalString(),\n 'X-B3-SpanId': spanId.toPaddedHexadecimalString(),\n 'X-B3-Sampled': traceSampled ? '1' : '0',\n })\n break\n }\n }\n })\n return tracingHeaders\n}\n\n/* eslint-disable no-bitwise */\nexport interface TraceIdentifier {\n toDecimalString: () => string\n toPaddedHexadecimalString: () => string\n}\n\nexport function createTraceIdentifier(): TraceIdentifier {\n const buffer: Uint8Array = new Uint8Array(8)\n getCrypto().getRandomValues(buffer)\n buffer[0] = buffer[0] & 0x7f // force 63-bit\n\n function readInt32(offset: number) {\n return buffer[offset] * 16777216 + (buffer[offset + 1] << 16) + (buffer[offset + 2] << 8) + buffer[offset + 3]\n }\n\n function toString(radix: number) {\n let high = readInt32(0)\n let low = readInt32(4)\n let str = ''\n\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\n return str\n }\n\n /**\n * Format used everywhere except the trace intake\n */\n function toDecimalString() {\n return toString(10)\n }\n\n /**\n * Format used by OTel headers\n */\n function toPaddedHexadecimalString() {\n const traceId = toString(16)\n return Array(17 - traceId.length).join('0') + traceId\n }\n\n return {\n toDecimalString,\n toPaddedHexadecimalString,\n }\n}\n/* eslint-enable no-bitwise */\n","import type { Configuration, InitConfiguration, MatchOption, RawTelemetryConfiguration } from '@datadog/browser-core'\nimport {\n getType,\n arrayFrom,\n isMatchOption,\n serializeConfiguration,\n assign,\n DefaultPrivacyLevel,\n TraceContextInjection,\n display,\n objectHasValue,\n validateAndBuildConfiguration,\n isSampleRate,\n} from '@datadog/browser-core'\nimport type { RumEventDomainContext } from '../../domainContext.types'\nimport type { RumEvent } from '../../rumEvent.types'\nimport type { RumPlugin } from '../plugins'\nimport { isTracingOption } from '../tracing/tracer'\nimport type { PropagatorType, TracingOption } from '../tracing/tracer.types'\n\nexport const DEFAULT_PROPAGATOR_TYPES: PropagatorType[] = ['tracecontext', 'datadog']\n\nexport interface RumInitConfiguration extends InitConfiguration {\n // global options\n /**\n * The RUM application ID.\n */\n applicationId: string\n /**\n * Access to every event collected by the RUM SDK before they are sent to Datadog.\n * It allows:\n * - Enrich your RUM events with additional context attributes\n * - Modify your RUM events to modify their content, or redact sensitive sequences (see the list of editable properties)\n * - Discard selected RUM events\n *\n * See [Enrich And Control Browser RUM Data With beforeSend](https://docs.datadoghq.com/real_user_monitoring/guide/enrich-and-control-rum-data) for further information.\n */\n beforeSend?: ((event: RumEvent, context: RumEventDomainContext) => boolean) | undefined\n /**\n * A list of request origins ignored when computing the page activity.\n * See [How page activity is calculated](https://docs.datadoghq.com/real_user_monitoring/browser/monitoring_page_performance/#how-page-activity-is-calculated) for further information.\n */\n excludedActivityUrls?: MatchOption[] | undefined\n /**\n * URL pointing to the Datadog Browser SDK Worker JavaScript file. The URL can be relative or absolute, but is required to have the same origin as the web application.\n * See [Content Security Policy guidelines](https://docs.datadoghq.com/integrations/content_security_policy_logs/?tab=firefox#use-csp-with-real-user-monitoring-and-session-replay) for further information.\n */\n workerUrl?: string\n /**\n * Compress requests sent to the Datadog intake to reduce bandwidth usage when sending large amounts of data. The compression is done in a Worker thread.\n * See [Content Security Policy guidelines](https://docs.datadoghq.com/integrations/content_security_policy_logs/?tab=firefox#use-csp-with-real-user-monitoring-and-session-replay) for further information.\n */\n compressIntakeRequests?: boolean | undefined\n remoteConfigurationId?: string | undefined\n\n // tracing options\n /**\n * A list of request URLs used to inject tracing headers.\n * See [Connect RUM and Traces](https://docs.datadoghq.com/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.\n */\n allowedTracingUrls?: Array | undefined\n\n /**\n * The percentage of requests to trace: 100 for all, 0 for none.\n * See [Connect RUM and Traces](https://docs.datadoghq.com/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.\n */\n traceSampleRate?: number | undefined\n /**\n * If you set a `traceSampleRate`, to ensure backend services' sampling decisions are still applied, configure the `traceContextInjection` initialization parameter to sampled.\n * @default all\n * See [Connect RUM and Traces](https://docs.datadoghq.com/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.\n */\n traceContextInjection?: TraceContextInjection | undefined\n\n // replay options\n /**\n * Allow to protect end user privacy and prevent sensitive organizational information from being collected.\n * @default mask\n * See [Replay Privacy Options](https://docs.datadoghq.com/real_user_monitoring/session_replay/browser/privacy_options) for further information.\n */\n defaultPrivacyLevel?: DefaultPrivacyLevel | undefined\n /**\n * If you are accessing Datadog through a custom subdomain, you can set `subdomain` to include your custom domain in the `getSessionReplayLink()` returned URL .\n * See [Connect Session Replay To Your Third-Party Tools](https://docs.datadoghq.com/real_user_monitoring/guide/connect-session-replay-to-your-third-party-tools) for further information.\n */\n subdomain?: string\n /**\n * The percentage of tracked sessions with [Browser RUM & Session Replay pricing](https://www.datadoghq.com/pricing/?product=real-user-monitoring--session-replay#real-user-monitoring--session-replay) features: 100 for all, 0 for none.\n * See [Configure Your Setup For Browser RUM and Browser RUM & Session Replay Sampling](https://docs.datadoghq.com/real_user_monitoring/guide/sampling-browser-plans) for further information.\n */\n sessionReplaySampleRate?: number | undefined\n /**\n * If the session is sampled for Session Replay, only start the recording when `startSessionReplayRecording()` is called, instead of at the beginning of the session.\n * See [Session Replay Usage](https://docs.datadoghq.com/real_user_monitoring/session_replay/browser/#usage) for further information.\n */\n startSessionReplayRecordingManually?: boolean | undefined\n\n /**\n * Enables privacy control for action names.\n */\n enablePrivacyForActionName?: boolean | undefined // TODO next major: remove this option and make privacy for action name the default behavior\n /**\n * Enables automatic collection of users actions.\n * See [Tracking User Actions](https://docs.datadoghq.com/real_user_monitoring/browser/tracking_user_actions) for further information.\n */\n trackUserInteractions?: boolean | undefined\n /**\n * Specify your own attribute to use to name actions.\n * See [Declare a name for click actions](https://docs.datadoghq.com/real_user_monitoring/browser/tracking_user_actions/#declare-a-name-for-click-actions) for further information.\n */\n actionNameAttribute?: string | undefined\n\n // view options\n /**\n * Allows you to control RUM views creation. See [Override default RUM view names](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/?tab=npm#override-default-rum-view-names) for further information.\n */\n trackViewsManually?: boolean | undefined\n /**\n * Enables collection of resource events.\n */\n trackResources?: boolean | undefined\n /**\n * Enables collection of long task events.\n */\n trackLongTasks?: boolean | undefined\n\n /**\n * List of plugins to enable. The plugins API is unstable and experimental, and may change without\n * notice. Please use only plugins provided by Datadog matching the version of the SDK you are\n * using.\n */\n betaPlugins?: RumPlugin[] | undefined\n}\n\nexport type HybridInitConfiguration = Omit\n\nexport interface RumConfiguration extends Configuration {\n // Built from init configuration\n actionNameAttribute: string | undefined\n traceSampleRate: number | undefined\n allowedTracingUrls: TracingOption[]\n excludedActivityUrls: MatchOption[]\n workerUrl: string | undefined\n compressIntakeRequests: boolean\n applicationId: string\n defaultPrivacyLevel: DefaultPrivacyLevel\n enablePrivacyForActionName: boolean\n sessionReplaySampleRate: number\n startSessionReplayRecordingManually: boolean\n trackUserInteractions: boolean\n trackViewsManually: boolean\n trackResources: boolean\n trackLongTasks: boolean\n version?: string\n subdomain?: string\n customerDataTelemetrySampleRate: number\n traceContextInjection: TraceContextInjection\n plugins: RumPlugin[]\n}\n\nexport function validateAndBuildRumConfiguration(\n initConfiguration: RumInitConfiguration\n): RumConfiguration | undefined {\n if (!initConfiguration.applicationId) {\n display.error('Application ID is not configured, no RUM data will be collected.')\n return\n }\n\n if (\n !isSampleRate(initConfiguration.sessionReplaySampleRate, 'Session Replay') ||\n !isSampleRate(initConfiguration.traceSampleRate, 'Trace')\n ) {\n return\n }\n\n if (initConfiguration.excludedActivityUrls !== undefined && !Array.isArray(initConfiguration.excludedActivityUrls)) {\n display.error('Excluded Activity Urls should be an array')\n return\n }\n\n const allowedTracingUrls = validateAndBuildTracingOptions(initConfiguration)\n if (!allowedTracingUrls) {\n return\n }\n\n const baseConfiguration = validateAndBuildConfiguration(initConfiguration)\n if (!baseConfiguration) {\n return\n }\n\n return assign(\n {\n applicationId: initConfiguration.applicationId,\n version: initConfiguration.version || undefined,\n actionNameAttribute: initConfiguration.actionNameAttribute,\n sessionReplaySampleRate: initConfiguration.sessionReplaySampleRate ?? 0,\n startSessionReplayRecordingManually: !!initConfiguration.startSessionReplayRecordingManually,\n traceSampleRate: initConfiguration.traceSampleRate,\n allowedTracingUrls,\n excludedActivityUrls: initConfiguration.excludedActivityUrls ?? [],\n workerUrl: initConfiguration.workerUrl,\n compressIntakeRequests: !!initConfiguration.compressIntakeRequests,\n trackUserInteractions: !!initConfiguration.trackUserInteractions,\n trackViewsManually: !!initConfiguration.trackViewsManually,\n trackResources: !!initConfiguration.trackResources,\n trackLongTasks: !!initConfiguration.trackLongTasks,\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.ALL,\n plugins: initConfiguration.betaPlugins || [],\n },\n baseConfiguration\n )\n}\n\n/**\n * Validates allowedTracingUrls and converts match options to tracing options\n */\nfunction validateAndBuildTracingOptions(initConfiguration: RumInitConfiguration): TracingOption[] | undefined {\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: TracingOption[] = []\n initConfiguration.allowedTracingUrls.forEach((option) => {\n if (isMatchOption(option)) {\n tracingOptions.push({ match: option, propagatorTypes: DEFAULT_PROPAGATOR_TYPES })\n } else if (isTracingOption(option)) {\n tracingOptions.push(option)\n } else {\n display.warn(\n 'Allowed Tracing Urls parameters should be a string, RegExp, function, or an object. Ignoring parameter',\n option\n )\n }\n })\n\n return tracingOptions\n}\n\n/**\n * Combines the selected tracing propagators from the different options in allowedTracingUrls\n */\nfunction getSelectedTracingPropagators(configuration: RumInitConfiguration): PropagatorType[] {\n const usedTracingPropagators = new Set()\n\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 } 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\n return arrayFrom(usedTracingPropagators)\n}\n\nexport function serializeRumConfiguration(configuration: RumInitConfiguration) {\n const baseSerializedConfiguration = serializeConfiguration(configuration)\n\n return assign(\n {\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:\n 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:\n 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: configuration.betaPlugins?.map((plugin) =>\n assign({ name: plugin.name }, plugin.getConfigurationTelemetry?.())\n ),\n },\n baseSerializedConfiguration\n ) satisfies RawTelemetryConfiguration\n}\n","import type { DefaultPrivacyLevel } from '@datadog/browser-core'\nimport { display, addEventListener, assign } from '@datadog/browser-core'\nimport type { RumInitConfiguration } from './configuration'\n\nexport const REMOTE_CONFIGURATION_URL = 'https://d3uc069fcn7uxw.cloudfront.net/configuration'\n\nexport interface RumRemoteConfiguration {\n sessionSampleRate?: number\n sessionReplaySampleRate?: number\n defaultPrivacyLevel?: DefaultPrivacyLevel\n}\n\nexport function fetchAndApplyRemoteConfiguration(\n initConfiguration: RumInitConfiguration,\n callback: (initConfiguration: RumInitConfiguration) => void\n) {\n fetchRemoteConfiguration(initConfiguration, (remoteInitConfiguration) => {\n callback(applyRemoteConfiguration(initConfiguration, remoteInitConfiguration))\n })\n}\n\nexport function applyRemoteConfiguration(\n initConfiguration: RumInitConfiguration,\n remoteInitConfiguration: RumRemoteConfiguration\n) {\n return assign({}, initConfiguration, remoteInitConfiguration)\n}\n\nexport function fetchRemoteConfiguration(\n configuration: RumInitConfiguration,\n callback: (remoteConfiguration: RumRemoteConfiguration) => void\n) {\n const xhr = new XMLHttpRequest()\n\n addEventListener(configuration, xhr, 'load', function () {\n if (xhr.status === 200) {\n callback(JSON.parse(xhr.responseText))\n } else {\n displayRemoteConfigurationFetchingError()\n }\n })\n\n addEventListener(configuration, xhr, 'error', function () {\n displayRemoteConfigurationFetchingError()\n })\n\n xhr.open('GET', `${REMOTE_CONFIGURATION_URL}/${encodeURIComponent(configuration.remoteConfigurationId!)}.json`)\n xhr.send()\n}\n\nfunction displayRemoteConfigurationFetchingError() {\n display.error('Error fetching the remote configuration.')\n}\n","import {\n createBoundedBuffer,\n display,\n canUseEventBridge,\n displayAlreadyInitializedError,\n willSyntheticsInjectRum,\n noop,\n timeStampNow,\n clocksNow,\n assign,\n getEventBridge,\n ExperimentalFeature,\n isExperimentalFeatureEnabled,\n initFeatureFlags,\n addTelemetryConfiguration,\n initFetchObservable,\n} from '@datadog/browser-core'\nimport type { TrackingConsentState, DeflateWorker } from '@datadog/browser-core'\nimport {\n validateAndBuildRumConfiguration,\n type RumConfiguration,\n type RumInitConfiguration,\n} from '../domain/configuration'\nimport type { CommonContext } from '../domain/contexts/commonContext'\nimport type { ViewOptions } from '../domain/view/trackViews'\nimport type { DurationVital, CustomVitalsState } from '../domain/vital/vitalCollection'\nimport { startDurationVital, stopDurationVital } from '../domain/vital/vitalCollection'\nimport { fetchAndApplyRemoteConfiguration, serializeRumConfiguration } from '../domain/configuration'\nimport { callPluginsMethod } from '../domain/plugins'\nimport type { RumPublicApiOptions, Strategy } from './rumPublicApi'\nimport type { StartRumResult } from './startRum'\n\nexport function createPreStartStrategy(\n { ignoreInitIfSyntheticsWillInjectRum, startDeflateWorker }: RumPublicApiOptions,\n getCommonContext: () => CommonContext,\n trackingConsentState: TrackingConsentState,\n customVitalsState: CustomVitalsState,\n doStartRum: (\n configuration: RumConfiguration,\n deflateWorker: DeflateWorker | undefined,\n initialViewOptions?: ViewOptions\n ) => StartRumResult\n): Strategy {\n const bufferApiCalls = createBoundedBuffer()\n\n let firstStartViewCall:\n | { options: ViewOptions | undefined; callback: (startRumResult: StartRumResult) => void }\n | undefined\n let deflateWorker: DeflateWorker | undefined\n\n let cachedInitConfiguration: RumInitConfiguration | undefined\n let cachedConfiguration: RumConfiguration | undefined\n\n const trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartRum)\n\n function tryStartRum() {\n if (!cachedInitConfiguration || !cachedConfiguration || !trackingConsentState.isGranted()) {\n return\n }\n\n trackingConsentStateSubscription.unsubscribe()\n\n let initialViewOptions: ViewOptions | undefined\n\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\n const startRumResult = doStartRum(cachedConfiguration, deflateWorker, initialViewOptions)\n\n bufferApiCalls.drain(startRumResult)\n }\n\n function doInit(initConfiguration: RumInitConfiguration) {\n const eventBridgeAvailable = canUseEventBridge()\n if (eventBridgeAvailable) {\n initConfiguration = overrideInitConfigurationForBridge(initConfiguration)\n }\n\n // Update the exposed initConfiguration to reflect the bridge and remote configuration overrides\n cachedInitConfiguration = initConfiguration\n addTelemetryConfiguration(serializeRumConfiguration(initConfiguration))\n\n if (cachedConfiguration) {\n displayAlreadyInitializedError('DD_RUM', initConfiguration)\n return\n }\n\n const configuration = validateAndBuildRumConfiguration(initConfiguration)\n if (!configuration) {\n return\n }\n\n if (!eventBridgeAvailable && !configuration.sessionStoreStrategyType) {\n display.warn('No storage available for session. We will not send any data.')\n return\n }\n\n if (configuration.compressIntakeRequests && !eventBridgeAvailable && startDeflateWorker) {\n deflateWorker = startDeflateWorker(\n configuration,\n '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 )\n if (!deflateWorker) {\n // `startDeflateWorker` should have logged an error message explaining the issue\n return\n }\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\n trackingConsentState.tryToInit(configuration.trackingConsent)\n tryStartRum()\n }\n\n const addDurationVital = (vital: DurationVital) => {\n bufferApiCalls.add((startRumResult) => startRumResult.addDurationVital(vital))\n }\n\n return {\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\n // Expose the initial configuration regardless of initialization success.\n cachedInitConfiguration = initConfiguration\n\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\n callPluginsMethod(initConfiguration.betaPlugins, 'onInit', { initConfiguration, publicApi })\n\n if (\n initConfiguration.remoteConfigurationId &&\n isExperimentalFeatureEnabled(ExperimentalFeature.REMOTE_CONFIGURATION)\n ) {\n fetchAndApplyRemoteConfiguration(initConfiguration, doInit)\n } else {\n doInit(initConfiguration)\n }\n },\n\n get initConfiguration() {\n return cachedInitConfiguration\n },\n\n getInternalContext: noop as () => undefined,\n\n stopSession: noop,\n\n addTiming(name, time = timeStampNow()) {\n bufferApiCalls.add((startRumResult) => startRumResult.addTiming(name, time))\n },\n\n startView(options, startClocks = clocksNow()) {\n const callback = (startRumResult: StartRumResult) => {\n startRumResult.startView(options, startClocks)\n }\n bufferApiCalls.add(callback)\n\n if (!firstStartViewCall) {\n firstStartViewCall = { options, callback }\n tryStartRum()\n }\n },\n\n updateViewName(name) {\n bufferApiCalls.add((startRumResult) => startRumResult.updateViewName(name))\n },\n\n setViewContext(context) {\n bufferApiCalls.add((startRumResult) => startRumResult.setViewContext(context))\n },\n\n setViewContextProperty(key, value) {\n bufferApiCalls.add((startRumResult) => startRumResult.setViewContextProperty(key, value))\n },\n\n addAction(action, commonContext = getCommonContext()) {\n bufferApiCalls.add((startRumResult) => startRumResult.addAction(action, commonContext))\n },\n\n addError(providedError, commonContext = getCommonContext()) {\n bufferApiCalls.add((startRumResult) => startRumResult.addError(providedError, commonContext))\n },\n\n addFeatureFlagEvaluation(key, value) {\n bufferApiCalls.add((startRumResult) => startRumResult.addFeatureFlagEvaluation(key, value))\n },\n\n startDurationVital(name, options) {\n return startDurationVital(customVitalsState, name, options)\n },\n\n stopDurationVital(name, options) {\n stopDurationVital(addDurationVital, customVitalsState, name, options)\n },\n\n addDurationVital,\n }\n}\n\nfunction overrideInitConfigurationForBridge(initConfiguration: RumInitConfiguration): RumInitConfiguration {\n return assign({}, initConfiguration, {\n applicationId: '00000000-aaaa-0000-aaaa-000000000000',\n clientToken: 'empty',\n sessionSampleRate: 100,\n defaultPrivacyLevel: initConfiguration.defaultPrivacyLevel ?? getEventBridge()?.getPrivacyLevel(),\n })\n}\n","import type { RumPublicApi } from '../boot/rumPublicApi'\nimport type { RumInitConfiguration } from './configuration'\n\nexport interface RumPlugin {\n name: string\n getConfigurationTelemetry?(): Record\n onInit?(options: { initConfiguration: RumInitConfiguration; publicApi: RumPublicApi }): void\n}\n\ntype MethodNames = 'onInit'\ntype MethodParameter = Parameters>[0]\n\nexport function callPluginsMethod(\n plugins: RumPlugin[] | undefined,\n methodName: MethodName,\n parameter: MethodParameter\n) {\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","import { Observable } from '../tools/observable'\nimport { objectValues, includes } from '../tools/utils/polyfills'\nimport type { Configuration } from '../domain/configuration'\nimport { addEventListeners, addEventListener, DOM_EVENT } from './addEventListener'\n\nexport const PageExitReason = {\n HIDDEN: 'visibility_hidden',\n UNLOADING: 'before_unload',\n PAGEHIDE: 'page_hide',\n FROZEN: 'page_frozen',\n} as const\n\nexport type PageExitReason = (typeof PageExitReason)[keyof typeof PageExitReason]\n\nexport interface PageExitEvent {\n reason: PageExitReason\n}\n\nexport function createPageExitObservable(configuration: Configuration): Observable {\n return new Observable((observable) => {\n const { stop: stopListeners } = addEventListeners(\n configuration,\n window,\n [DOM_EVENT.VISIBILITY_CHANGE, DOM_EVENT.FREEZE],\n (event) => {\n if (event.type === 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 } else if (event.type === 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 },\n { capture: true }\n )\n\n const stopBeforeUnloadListener = addEventListener(configuration, window, DOM_EVENT.BEFORE_UNLOAD, () => {\n observable.notify({ reason: PageExitReason.UNLOADING })\n }).stop\n\n return () => {\n stopListeners()\n stopBeforeUnloadListener()\n }\n })\n}\n\nexport function isPageExitReason(reason: string | undefined): reason is PageExitReason {\n return includes(objectValues(PageExitReason), reason)\n}\n","import { monitor, noop, Observable, getZoneJsOriginalValue } from '@datadog/browser-core'\n\nexport function createDOMMutationObservable() {\n const MutationObserver = getMutationObserverConstructor()\n\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}\n\ntype MutationObserverConstructor = new (callback: MutationCallback) => MutationObserver\n\nexport interface BrowserWindow extends Window {\n MutationObserver?: MutationObserverConstructor\n Zone?: unknown\n}\n\nexport function getMutationObserverConstructor(): MutationObserverConstructor | undefined {\n let constructor: MutationObserverConstructor | undefined\n const browserWindow: BrowserWindow = window\n\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\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\n const patchedInstance = new browserWindow.MutationObserver(noop) as {\n originalInstance?: { constructor: MutationObserverConstructor }\n }\n\n const originalInstance = getZoneJsOriginalValue(patchedInstance, 'originalInstance')\n constructor = originalInstance && originalInstance.constructor\n }\n }\n\n if (!constructor) {\n constructor = browserWindow.MutationObserver\n }\n\n return constructor\n}\n","import type { ClocksState } from '../../tools/utils/timeUtils'\n\n// TS v4.6 introduced Error.cause[1] typed as `Error`. TS v4.8 changed Error.cause to be\n// `unknown`[2].\n//\n// Because we still support TS 3.8, we need to declare our own type. We can remove it once we drop\n// support for TS v4.7 and before. The 'cause' property defined by TS needs to be omitted because\n// we define it with a type `unknown` which is incompatible with TS 4.6 and 4.7.\n//\n// [1]: https://devblogs.microsoft.com/typescript/announcing-typescript-4-6/#target-es2022\n// [2]: https://devblogs.microsoft.com/typescript/announcing-typescript-4-8/#lib-d-ts-updates\nexport interface ErrorWithCause extends Omit {\n cause?: unknown\n}\n\nexport type RawErrorCause = {\n message: string\n source: string\n type?: string\n stack?: string\n}\n\nexport type Csp = {\n disposition: 'enforce' | 'report'\n}\n\nexport interface RawError {\n startClocks: ClocksState\n message: string\n type?: string\n stack?: string\n source: ErrorSource\n originalError?: unknown\n handling?: ErrorHandling\n handlingStack?: string\n causes?: RawErrorCause[]\n fingerprint?: string\n csp?: Csp\n}\n\nexport const ErrorSource = {\n AGENT: 'agent',\n CONSOLE: 'console',\n CUSTOM: 'custom',\n LOGGER: 'logger',\n NETWORK: 'network',\n SOURCE: 'source',\n REPORT: 'report',\n} as const\n\nexport const enum NonErrorPrefix {\n UNCAUGHT = 'Uncaught',\n PROVIDED = 'Provided',\n}\n\nexport const enum ErrorHandling {\n HANDLED = 'handled',\n UNHANDLED = 'unhandled',\n}\n\nexport type ErrorSource = (typeof ErrorSource)[keyof typeof ErrorSource]\n","import { setTimeout } from '../../tools/timer'\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils'\nimport type { RawError } from '../error/error.types'\nimport { ErrorSource } from '../error/error.types'\n\nexport type EventRateLimiter = ReturnType\n\nexport function createEventRateLimiter(\n eventType: string,\n limit: number,\n onLimitReached: (limitError: RawError) => void\n) {\n let eventCount = 0\n let allowNextEvent = false\n\n return {\n isLimitReached() {\n if (eventCount === 0) {\n setTimeout(() => {\n eventCount = 0\n }, ONE_MINUTE)\n }\n\n eventCount += 1\n if (eventCount <= limit || allowNextEvent) {\n allowNextEvent = false\n return false\n }\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 } finally {\n allowNextEvent = false\n }\n }\n\n return true\n },\n }\n}\n","import { sanitize, deepClone, getType, objectEntries } from '@datadog/browser-core'\nimport type { Context } from '@datadog/browser-core'\n\nexport type ModifiableFieldPaths = Record\n\n/**\n * Current limitation:\n * - field path do not support array, 'a.b.c' only\n */\nexport function limitModification(\n object: T,\n modifiableFieldPaths: ModifiableFieldPaths,\n modifier: (object: T) => Result\n): Result | undefined {\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 } else if (fieldType === 'object' && (newType === 'undefined' || newType === 'null')) {\n set(object, fieldPath, {})\n }\n })\n return result\n}\n\nfunction get(object: unknown, path: string) {\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}\n\nfunction set(object: unknown, path: string, value: unknown) {\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 } else {\n current[field] = value\n }\n }\n}\n\nfunction isValidObject(object: unknown): object is Record {\n return getType(object) === 'object'\n}\n\nfunction isValidObjectContaining(object: unknown, field: string): object is Record {\n return isValidObject(object) && Object.prototype.hasOwnProperty.call(object, field)\n}\n","import type { Context, RawError, EventRateLimiter, User } from '@datadog/browser-core'\nimport {\n combine,\n isEmptyObject,\n timeStampNow,\n currentDrift,\n display,\n createEventRateLimiter,\n canUseEventBridge,\n assign,\n round,\n isExperimentalFeatureEnabled,\n ExperimentalFeature,\n getConnectivity,\n} from '@datadog/browser-core'\nimport type { RumEventDomainContext } from '../domainContext.types'\nimport type {\n RawRumErrorEvent,\n RawRumEvent,\n RawRumLongTaskEvent,\n RawRumResourceEvent,\n RumContext,\n} from '../rawRumEvent.types'\nimport { RumEventType } from '../rawRumEvent.types'\nimport type { RumEvent } from '../rumEvent.types'\nimport { getSyntheticsContext } from './contexts/syntheticsContext'\nimport type { CiVisibilityContext } from './contexts/ciVisibilityContext'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\nimport type { ViewHistory } from './contexts/viewHistory'\nimport { SessionReplayState, type RumSessionManager } from './rumSessionManager'\nimport type { UrlContexts } from './contexts/urlContexts'\nimport type { RumConfiguration } from './configuration'\nimport type { ActionContexts } from './action/actionCollection'\nimport type { DisplayContext } from './contexts/displayContext'\nimport type { CommonContext } from './contexts/commonContext'\nimport type { ModifiableFieldPaths } from './limitModification'\nimport { limitModification } from './limitModification'\n\n// replaced at build time\ndeclare const __BUILD_ENV__SDK_VERSION__: string\n\nconst enum SessionType {\n SYNTHETICS = 'synthetics',\n USER = 'user',\n CI_TEST = 'ci_test',\n}\n\nconst VIEW_MODIFIABLE_FIELD_PATHS: ModifiableFieldPaths = {\n 'view.name': 'string',\n 'view.url': 'string',\n 'view.referrer': 'string',\n}\n\nconst USER_CUSTOMIZABLE_FIELD_PATHS: ModifiableFieldPaths = {\n context: 'object',\n}\n\nconst ROOT_MODIFIABLE_FIELD_PATHS: ModifiableFieldPaths = {\n service: 'string',\n version: 'string',\n}\n\nlet modifiableFieldPathsByEvent: { [key in RumEventType]: ModifiableFieldPaths }\n\ntype Mutable = { -readonly [P in keyof T]: T[P] }\n\nexport function startRumAssembly(\n configuration: RumConfiguration,\n lifeCycle: LifeCycle,\n sessionManager: RumSessionManager,\n viewHistory: ViewHistory,\n urlContexts: UrlContexts,\n actionContexts: ActionContexts,\n displayContext: DisplayContext,\n ciVisibilityContext: CiVisibilityContext,\n getCommonContext: () => CommonContext,\n reportError: (error: RawError) => void\n) {\n modifiableFieldPathsByEvent = {\n [RumEventType.VIEW]: assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n [RumEventType.ERROR]: assign(\n {\n 'error.message': 'string',\n 'error.stack': 'string',\n 'error.resource.url': 'string',\n 'error.fingerprint': 'string',\n },\n USER_CUSTOMIZABLE_FIELD_PATHS,\n VIEW_MODIFIABLE_FIELD_PATHS,\n ROOT_MODIFIABLE_FIELD_PATHS\n ),\n [RumEventType.RESOURCE]: assign(\n {\n 'resource.url': 'string',\n },\n isExperimentalFeatureEnabled(ExperimentalFeature.WRITABLE_RESOURCE_GRAPHQL)\n ? {\n 'resource.graphql': 'object',\n }\n : {},\n USER_CUSTOMIZABLE_FIELD_PATHS,\n VIEW_MODIFIABLE_FIELD_PATHS,\n ROOT_MODIFIABLE_FIELD_PATHS\n ),\n [RumEventType.ACTION]: assign(\n {\n 'action.target.name': 'string',\n },\n USER_CUSTOMIZABLE_FIELD_PATHS,\n VIEW_MODIFIABLE_FIELD_PATHS,\n ROOT_MODIFIABLE_FIELD_PATHS\n ),\n [RumEventType.LONG_TASK]: assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n [RumEventType.VITAL]: assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n }\n const eventRateLimiters = {\n [RumEventType.ERROR]: createEventRateLimiter(\n RumEventType.ERROR,\n configuration.eventRateLimiterThreshold,\n reportError\n ),\n [RumEventType.ACTION]: createEventRateLimiter(\n RumEventType.ACTION,\n configuration.eventRateLimiterThreshold,\n reportError\n ),\n [RumEventType.VITAL]: createEventRateLimiter(\n RumEventType.VITAL,\n configuration.eventRateLimiterThreshold,\n reportError\n ),\n }\n\n const syntheticsContext = getSyntheticsContext()\n lifeCycle.subscribe(\n LifeCycleEventType.RAW_RUM_EVENT_COLLECTED,\n ({ 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 && viewHistoryEntry && urlContext) {\n const commonContext = savedCommonContext || getCommonContext()\n const actionId = actionContexts.findActionId(startTime)\n\n const rumContext: 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() ? __BUILD_ENV__SDK_VERSION__ : 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 ? SessionType.SYNTHETICS\n : ciVisibilityContext.get()\n ? SessionType.CI_TEST\n : SessionType.USER,\n },\n view: {\n id: viewHistoryEntry.id,\n name: viewHistoryEntry.name,\n url: urlContext.url,\n referrer: urlContext.referrer,\n },\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\n const serverRumEvent = combine(rumContext as RumContext & Context, rawRumEvent) as RumEvent & Context\n serverRumEvent.context = combine(commonContext.context, viewHistoryEntry.context, customerContext)\n\n if (!('has_replay' in serverRumEvent.session)) {\n ;(serverRumEvent.session as Mutable).has_replay = commonContext.hasReplay\n }\n if (serverRumEvent.type === 'view') {\n ;(serverRumEvent.session as Mutable).sampled_for_replay =\n session.sessionReplay === SessionReplayState.SAMPLED\n }\n\n if (!isEmptyObject(commonContext.user)) {\n ;(serverRumEvent.usr as Mutable) = commonContext.user as User & Context\n }\n\n if (shouldSend(serverRumEvent, configuration.beforeSend, domainContext, eventRateLimiters)) {\n if (isEmptyObject(serverRumEvent.context)) {\n delete serverRumEvent.context\n }\n lifeCycle.notify(LifeCycleEventType.RUM_EVENT_COLLECTED, serverRumEvent)\n }\n }\n }\n )\n}\n\nfunction shouldSend(\n event: RumEvent & Context,\n beforeSend: RumConfiguration['beforeSend'],\n domainContext: RumEventDomainContext,\n eventRateLimiters: { [key in RumEventType]?: EventRateLimiter }\n) {\n if (beforeSend) {\n const result = limitModification(event, modifiableFieldPathsByEvent[event.type], (event) =>\n beforeSend(event, domainContext)\n )\n if (result === false && event.type !== RumEventType.VIEW) {\n return false\n }\n if (result === false) {\n display.warn(\"Can't dismiss view events using beforeSend!\")\n }\n }\n\n const rateLimitReached = eventRateLimiters[event.type]?.isLimitReached()\n\n return !rateLimitReached\n}\n\nfunction needToAssembleWithAction(\n event: RawRumEvent\n): event is RawRumErrorEvent | RawRumResourceEvent | RawRumLongTaskEvent {\n return [RumEventType.ERROR, RumEventType.RESOURCE, RumEventType.LONG_TASK].indexOf(event.type) !== -1\n}\n","import { getSyntheticsResultId, getSyntheticsTestId, willSyntheticsInjectRum } from '@datadog/browser-core'\n\nexport function getSyntheticsContext() {\n const testId = getSyntheticsTestId()\n const resultId = getSyntheticsResultId()\n\n if (testId && resultId) {\n return {\n test_id: testId,\n result_id: resultId,\n injected: willSyntheticsInjectRum(),\n }\n }\n}\n","import type { Subscription } from './observable'\n\n/**\n * Type helper to extract event types that have \"void\" data. This allows to call `notify` without a\n * second argument. Ex:\n *\n * ```\n * interface EventMap {\n * foo: void\n * }\n * const LifeCycle = AbstractLifeCycle\n * new LifeCycle().notify('foo')\n * ```\n */\ntype EventTypesWithoutData = {\n [K in keyof EventMap]: EventMap[K] extends void ? K : never\n}[keyof EventMap]\n\n// eslint-disable-next-line no-restricted-syntax\nexport class AbstractLifeCycle {\n private callbacks: { [key in keyof EventMap]?: Array<(data: any) => void> } = {}\n\n notify>(eventType: EventType): void\n notify(eventType: EventType, data: EventMap[EventType]): void\n notify(eventType: keyof EventMap, data?: unknown) {\n const eventCallbacks = this.callbacks[eventType]\n if (eventCallbacks) {\n eventCallbacks.forEach((callback) => callback(data))\n }\n }\n\n subscribe(\n eventType: EventType,\n callback: (data: EventMap[EventType]) => void\n ): Subscription {\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","import type { Context, PageExitEvent, RawError, RelativeTime } from '@datadog/browser-core'\nimport { AbstractLifeCycle } from '@datadog/browser-core'\nimport type { RumEventDomainContext } from '../domainContext.types'\nimport type { RawRumEvent } from '../rawRumEvent.types'\nimport type { RumEvent } from '../rumEvent.types'\nimport type { CommonContext } from './contexts/commonContext'\nimport type { RequestCompleteEvent, RequestStartEvent } from './requestCollection'\nimport type { AutoAction } from './action/actionCollection'\nimport type { ViewEvent, ViewCreatedEvent, ViewEndedEvent } from './view/trackViews'\n\nexport const enum LifeCycleEventType {\n // Contexts (like viewHistory) should be opened using prefixed BEFORE_XXX events and closed using prefixed AFTER_XXX events\n // It ensures the context is available during the non prefixed event callbacks\n AUTO_ACTION_COMPLETED,\n BEFORE_VIEW_CREATED,\n VIEW_CREATED,\n VIEW_UPDATED,\n VIEW_ENDED,\n AFTER_VIEW_ENDED,\n REQUEST_STARTED,\n REQUEST_COMPLETED,\n\n // The SESSION_EXPIRED lifecycle event has been introduced to represent when a session has expired\n // and trigger cleanup tasks related to this, prior to renewing the session. Its implementation is\n // slightly naive: it is not triggered as soon as the session is expired, but rather just before\n // notifying that the session is renewed. Thus, the session id is already set to the newly renewed\n // session.\n //\n // This implementation is \"good enough\" for our use-cases. Improving this is not trivial,\n // primarily because multiple instances of the SDK may be managing the same session cookie at\n // the same time, for example when using Logs and RUM on the same page, or opening multiple tabs\n // on the same domain.\n SESSION_EXPIRED,\n SESSION_RENEWED,\n PAGE_EXITED,\n RAW_RUM_EVENT_COLLECTED,\n RUM_EVENT_COLLECTED,\n RAW_ERROR_COLLECTED,\n}\n\n// This is a workaround for an issue occurring when the Browser SDK is included in a TypeScript\n// project configured with `isolatedModules: true`. Even if the const enum is declared in this\n// module, we cannot use it directly to define the EventMap interface keys (TS error: \"Cannot access\n// ambient const enums when the '--isolatedModules' flag is provided.\").\n//\n// Using a plain enum would fix the issue, but would also add 2KB to the minified bundle. By using\n// this workaround, we can keep using a const enum without impacting the bundle size (since it is a\n// \"declare\" statement, it will only be used during typecheck and completely ignored when building\n// JavaScript).\n//\n// See issues:\n// * https://github.com/DataDog/browser-sdk/issues/2208\n// * https://github.com/microsoft/TypeScript/issues/54152\ndeclare const LifeCycleEventTypeAsConst: {\n AUTO_ACTION_COMPLETED: LifeCycleEventType.AUTO_ACTION_COMPLETED\n BEFORE_VIEW_CREATED: LifeCycleEventType.BEFORE_VIEW_CREATED\n VIEW_CREATED: LifeCycleEventType.VIEW_CREATED\n VIEW_UPDATED: LifeCycleEventType.VIEW_UPDATED\n VIEW_ENDED: LifeCycleEventType.VIEW_ENDED\n AFTER_VIEW_ENDED: LifeCycleEventType.AFTER_VIEW_ENDED\n REQUEST_STARTED: LifeCycleEventType.REQUEST_STARTED\n REQUEST_COMPLETED: LifeCycleEventType.REQUEST_COMPLETED\n SESSION_EXPIRED: LifeCycleEventType.SESSION_EXPIRED\n SESSION_RENEWED: LifeCycleEventType.SESSION_RENEWED\n PAGE_EXITED: LifeCycleEventType.PAGE_EXITED\n RAW_RUM_EVENT_COLLECTED: LifeCycleEventType.RAW_RUM_EVENT_COLLECTED\n RUM_EVENT_COLLECTED: LifeCycleEventType.RUM_EVENT_COLLECTED\n RAW_ERROR_COLLECTED: LifeCycleEventType.RAW_ERROR_COLLECTED\n}\n\n// Note: this interface needs to be exported even if it is not used outside of this module, else TS\n// fails to build the rum-core package with error TS4058\nexport interface LifeCycleEventMap {\n [LifeCycleEventTypeAsConst.AUTO_ACTION_COMPLETED]: AutoAction\n [LifeCycleEventTypeAsConst.BEFORE_VIEW_CREATED]: ViewCreatedEvent\n [LifeCycleEventTypeAsConst.VIEW_CREATED]: ViewCreatedEvent\n [LifeCycleEventTypeAsConst.VIEW_UPDATED]: ViewEvent\n [LifeCycleEventTypeAsConst.VIEW_ENDED]: ViewEndedEvent\n [LifeCycleEventTypeAsConst.AFTER_VIEW_ENDED]: ViewEndedEvent\n [LifeCycleEventTypeAsConst.REQUEST_STARTED]: RequestStartEvent\n [LifeCycleEventTypeAsConst.REQUEST_COMPLETED]: RequestCompleteEvent\n [LifeCycleEventTypeAsConst.SESSION_EXPIRED]: void\n [LifeCycleEventTypeAsConst.SESSION_RENEWED]: void\n [LifeCycleEventTypeAsConst.PAGE_EXITED]: PageExitEvent\n [LifeCycleEventTypeAsConst.RAW_RUM_EVENT_COLLECTED]: RawRumEventCollectedData\n [LifeCycleEventTypeAsConst.RUM_EVENT_COLLECTED]: RumEvent & Context\n [LifeCycleEventTypeAsConst.RAW_ERROR_COLLECTED]: {\n error: RawError\n savedCommonContext?: CommonContext\n customerContext?: Context\n }\n}\n\nexport interface RawRumEventCollectedData {\n startTime: RelativeTime\n savedCommonContext?: CommonContext\n customerContext?: Context\n rawRumEvent: E\n domainContext: RumEventDomainContext\n}\n\nexport const LifeCycle = AbstractLifeCycle\nexport type LifeCycle = AbstractLifeCycle\n","import { setInterval, clearInterval } from './timer'\nimport type { TimeoutId } from './timer'\nimport { removeItem } from './utils/arrayUtils'\nimport type { Duration, RelativeTime } from './utils/timeUtils'\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils'\n\nconst END_OF_TIMES = Infinity as RelativeTime\n\nexport interface ValueHistoryEntry {\n startTime: RelativeTime\n endTime: RelativeTime\n value: T\n remove(): void\n close(endTime: RelativeTime): void\n}\n\nexport const CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE\n\n/**\n * Store and keep track of values spans. This whole cache assumes that values are added in\n * chronological order (i.e. all entries have an increasing start time).\n */\nexport interface ValueHistory {\n add: (value: Value, startTime: RelativeTime) => ValueHistoryEntry\n find: (startTime?: RelativeTime, options?: { returnInactive: boolean }) => Value | undefined\n\n closeActive: (endTime: RelativeTime) => void\n findAll: (startTime?: RelativeTime, duration?: Duration) => Value[]\n reset: () => void\n stop: () => void\n}\n\nexport function createValueHistory({\n expireDelay,\n maxEntries,\n}: {\n expireDelay: number\n maxEntries?: number\n}): ValueHistory {\n let entries: Array> = []\n const clearOldValuesInterval: TimeoutId = setInterval(() => clearOldValues(), CLEAR_OLD_VALUES_INTERVAL)\n\n function clearOldValues() {\n const oldTimeThreshold = relativeNow() - expireDelay\n while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {\n entries.pop()\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: Value, startTime: RelativeTime): ValueHistoryEntry {\n const entry: ValueHistoryEntry = {\n value,\n startTime,\n endTime: END_OF_TIMES,\n remove: () => {\n removeItem(entries, entry)\n },\n close: (endTime: RelativeTime) => {\n entry.endTime = endTime\n },\n }\n\n if (maxEntries && entries.length >= maxEntries) {\n entries.pop()\n }\n\n entries.unshift(entry)\n\n return entry\n }\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(\n startTime: RelativeTime = END_OF_TIMES,\n options: { returnInactive: boolean } = { returnInactive: false }\n ): Value | undefined {\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 /**\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: RelativeTime) {\n const latestEntry = entries[0]\n if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n latestEntry.close(endTime)\n }\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: RelativeTime = END_OF_TIMES, duration = 0 as Duration): Value[] {\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\n /**\n * Remove all entries from this collection.\n */\n function reset() {\n entries = []\n }\n\n /**\n * Stop internal garbage collection of past entries.\n */\n function stop() {\n clearInterval(clearOldValuesInterval)\n }\n\n return { add, find, closeActive, findAll, reset, stop }\n}\n","import type { RelativeTime, ClocksState, Context } from '@datadog/browser-core'\nimport { SESSION_TIME_OUT_DELAY, createValueHistory } from '@datadog/browser-core'\nimport type { LifeCycle } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport type { ViewCreatedEvent, ViewEvent } from '../view/trackViews'\n\nexport const VIEW_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY\n\nexport interface ViewHistoryEntry {\n service?: string\n version?: string\n context?: Context | undefined\n id: string\n name?: string\n startClocks: ClocksState\n}\n\nexport interface ViewHistory {\n findView: (startTime?: RelativeTime) => ViewHistoryEntry | undefined\n stop: () => void\n}\n\nexport function startViewHistory(lifeCycle: LifeCycle): ViewHistory {\n const viewValueHistory = createValueHistory({ expireDelay: VIEW_CONTEXT_TIME_OUT_DELAY })\n\n lifeCycle.subscribe(LifeCycleEventType.BEFORE_VIEW_CREATED, (view) => {\n viewValueHistory.add(buildViewHistoryEntry(view), view.startClocks.relative)\n })\n\n lifeCycle.subscribe(LifeCycleEventType.AFTER_VIEW_ENDED, ({ endClocks }) => {\n viewValueHistory.closeActive(endClocks.relative)\n })\n\n lifeCycle.subscribe(LifeCycleEventType.VIEW_UPDATED, (viewUpdate: ViewEvent) => {\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\n lifeCycle.subscribe(LifeCycleEventType.SESSION_RENEWED, () => {\n viewValueHistory.reset()\n })\n\n function buildViewHistoryEntry(view: ViewCreatedEvent) {\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\n return {\n findView: (startTime) => viewValueHistory.find(startTime),\n stop: () => {\n viewValueHistory.stop()\n },\n }\n}\n","import type { InstrumentedMethodCall } from '../tools/instrumentMethod'\nimport { instrumentMethod } from '../tools/instrumentMethod'\nimport { Observable } from '../tools/observable'\nimport type { Duration, ClocksState } from '../tools/utils/timeUtils'\nimport { elapsed, clocksNow, timeStampNow } from '../tools/utils/timeUtils'\nimport { normalizeUrl } from '../tools/utils/urlPolyfill'\nimport { shallowClone } from '../tools/utils/objectUtils'\nimport type { Configuration } from '../domain/configuration'\nimport { addEventListener } from './addEventListener'\n\nexport interface XhrOpenContext {\n state: 'open'\n method: string\n url: string\n}\n\nexport interface XhrStartContext extends Omit {\n state: 'start'\n startClocks: ClocksState\n isAborted: boolean\n xhr: XMLHttpRequest\n handlingStack?: string\n}\n\nexport interface XhrCompleteContext extends Omit {\n state: 'complete'\n duration: Duration\n status: number\n}\n\nexport type XhrContext = XhrOpenContext | XhrStartContext | XhrCompleteContext\n\nlet xhrObservable: Observable | undefined\nconst xhrContexts = new WeakMap()\n\nexport function initXhrObservable(configuration: Configuration) {\n if (!xhrObservable) {\n xhrObservable = createXhrObservable(configuration)\n }\n return xhrObservable\n}\n\nfunction createXhrObservable(configuration: Configuration) {\n return new Observable((observable) => {\n const { stop: stopInstrumentingStart } = instrumentMethod(XMLHttpRequest.prototype, 'open', openXhr)\n\n const { stop: stopInstrumentingSend } = instrumentMethod(\n XMLHttpRequest.prototype,\n 'send',\n (call) => {\n sendXhr(call, configuration, observable)\n },\n { computeHandlingStack: true }\n )\n\n const { stop: stopInstrumentingAbort } = instrumentMethod(XMLHttpRequest.prototype, 'abort', abortXhr)\n\n return () => {\n stopInstrumentingStart()\n stopInstrumentingSend()\n stopInstrumentingAbort()\n }\n })\n}\n\nfunction openXhr({ target: xhr, parameters: [method, url] }: InstrumentedMethodCall) {\n xhrContexts.set(xhr, {\n state: 'open',\n method: String(method).toUpperCase(),\n url: normalizeUrl(String(url)),\n })\n}\n\nfunction sendXhr(\n { target: xhr, handlingStack }: InstrumentedMethodCall,\n configuration: Configuration,\n observable: Observable\n) {\n const context = xhrContexts.get(xhr)\n if (!context) {\n return\n }\n\n const startContext = context as XhrStartContext\n startContext.state = 'start'\n startContext.startClocks = clocksNow()\n startContext.isAborted = false\n startContext.xhr = xhr\n startContext.handlingStack = handlingStack\n\n let hasBeenReported = false\n\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\n const onEnd = () => {\n unsubscribeLoadEndListener()\n stopInstrumentingOnReadyStateChange()\n if (hasBeenReported) {\n return\n }\n hasBeenReported = true\n\n const completeContext = context as XhrCompleteContext\n completeContext.state = 'complete'\n completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow())\n completeContext.status = xhr.status\n observable.notify(shallowClone(completeContext))\n }\n\n const { stop: unsubscribeLoadEndListener } = addEventListener(configuration, xhr, 'loadend', onEnd)\n\n observable.notify(startContext)\n}\n\nfunction abortXhr({ target: xhr }: InstrumentedMethodCall) {\n const context = xhrContexts.get(xhr) as XhrStartContext | undefined\n if (context) {\n context.isAborted = true\n }\n}\n","import type { RelativeTime, ServerDuration } from '@datadog/browser-core'\nimport {\n addTelemetryDebug,\n elapsed,\n getPathName,\n includes,\n isValidUrl,\n ResourceType,\n toServerDuration,\n} from '@datadog/browser-core'\n\nimport type { RumPerformanceResourceTiming } from '../../browser/performanceObservable'\n\nimport type { ResourceEntryDetailsElement } from '../../rawRumEvent.types'\nimport type { RumConfiguration } from '../configuration'\n\nexport interface ResourceEntryDetails {\n redirect?: ResourceEntryDetailsElement\n dns?: ResourceEntryDetailsElement\n connect?: ResourceEntryDetailsElement\n ssl?: ResourceEntryDetailsElement\n first_byte?: ResourceEntryDetailsElement\n download?: ResourceEntryDetailsElement\n}\n\nexport const FAKE_INITIAL_DOCUMENT = 'initial_document'\n\nconst RESOURCE_TYPES: Array<[ResourceType, (initiatorType: string, path: string) => boolean]> = [\n [ResourceType.DOCUMENT, (initiatorType: string) => FAKE_INITIAL_DOCUMENT === initiatorType],\n [ResourceType.XHR, (initiatorType: string) => 'xmlhttprequest' === initiatorType],\n [ResourceType.FETCH, (initiatorType: string) => 'fetch' === initiatorType],\n [ResourceType.BEACON, (initiatorType: string) => 'beacon' === initiatorType],\n [ResourceType.CSS, (_: string, path: string) => /\\.css$/i.test(path)],\n [ResourceType.JS, (_: string, path: string) => /\\.js$/i.test(path)],\n [\n ResourceType.IMAGE,\n (initiatorType: string, path: string) =>\n includes(['image', 'img', 'icon'], initiatorType) || /\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i.exec(path) !== null,\n ],\n [ResourceType.FONT, (_: string, path: string) => /\\.(woff|eot|woff2|ttf)$/i.exec(path) !== null],\n [\n ResourceType.MEDIA,\n (initiatorType: string, path: string) =>\n includes(['audio', 'video'], initiatorType) || /\\.(mp3|mp4)$/i.exec(path) !== null,\n ],\n]\n\nexport function computeResourceEntryType(entry: RumPerformanceResourceTiming) {\n const url = entry.name\n if (!isValidUrl(url)) {\n addTelemetryDebug(`Failed to construct URL for \"${entry.name}\"`)\n return 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 ResourceType.OTHER\n}\n\nfunction areInOrder(...numbers: number[]) {\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}\n\nexport function isResourceEntryRequestType(entry: RumPerformanceResourceTiming) {\n return entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch'\n}\n\nexport function computeResourceEntryDuration(entry: RumPerformanceResourceTiming): ServerDuration {\n const { duration, startTime, responseEnd } = entry\n\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\n return toServerDuration(duration)\n}\n\nexport function computeResourceEntryDetails(entry: RumPerformanceResourceTiming): ResourceEntryDetails | undefined {\n if (!hasValidResourceEntryTimings(entry)) {\n return undefined\n }\n const {\n startTime,\n fetchStart,\n redirectStart,\n redirectEnd,\n domainLookupStart,\n domainLookupEnd,\n connectStart,\n secureConnectionStart,\n connectEnd,\n requestStart,\n responseStart,\n responseEnd,\n } = entry\n\n const details: ResourceEntryDetails = {\n download: formatTiming(startTime, responseStart, responseEnd),\n first_byte: formatTiming(startTime, requestStart, responseStart),\n }\n\n // Make sure a connection occurred\n if (fetchStart < connectEnd) {\n details.connect = formatTiming(startTime, connectStart, connectEnd)\n\n // Make sure a secure connection occurred\n if (connectStart <= secureConnectionStart && secureConnectionStart <= connectEnd) {\n details.ssl = formatTiming(startTime, secureConnectionStart, connectEnd)\n }\n }\n\n // Make sure a domain lookup occurred\n if (fetchStart < domainLookupEnd) {\n details.dns = formatTiming(startTime, domainLookupStart, domainLookupEnd)\n }\n\n // Make sure a redirection occurred\n if (startTime < redirectEnd) {\n details.redirect = formatTiming(startTime, redirectStart, redirectEnd)\n }\n\n return details\n}\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: RumPerformanceResourceTiming) {\n return entry.duration >= 0\n}\n\nexport function hasValidResourceEntryTimings(entry: RumPerformanceResourceTiming) {\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(\n entry.startTime,\n entry.fetchStart,\n entry.domainLookupStart,\n entry.domainLookupEnd,\n entry.connectStart,\n entry.connectEnd,\n entry.requestStart,\n entry.responseStart,\n entry.responseEnd\n )\n\n const areRedirectionTimingsInOrder = hasRedirection(entry)\n ? areInOrder(entry.startTime, entry.redirectStart, entry.redirectEnd, entry.fetchStart)\n : true\n\n return areCommonTimingsInOrder && areRedirectionTimingsInOrder\n}\n\nfunction hasRedirection(entry: RumPerformanceResourceTiming) {\n return entry.redirectEnd > entry.startTime\n}\nfunction formatTiming(origin: RelativeTime, start: RelativeTime, end: RelativeTime) {\n if (origin <= start && start <= end) {\n return {\n duration: toServerDuration(elapsed(start, end)),\n start: toServerDuration(elapsed(origin, start)),\n }\n }\n}\n\nexport function computeResourceEntrySize(entry: RumPerformanceResourceTiming) {\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}\n\nexport function isAllowedRequestUrl(configuration: RumConfiguration, url: string) {\n return url && !configuration.isIntakeUrl(url)\n}\n\nconst DATA_URL_REGEX = /data:(.+)?(;base64)?,/g\nexport const MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 24_000\n\nexport function isLongDataUrl(url: string): boolean {\n if (url.length <= MAX_ATTRIBUTE_VALUE_CHAR_LENGTH) {\n return false\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}\n\nexport function sanitizeDataUrl(url: string): string {\n return `${url.match(DATA_URL_REGEX)![0]}[...]`\n}\n","import type {\n Duration,\n XhrCompleteContext,\n XhrStartContext,\n ClocksState,\n FetchStartContext,\n FetchResolveContext,\n} from '@datadog/browser-core'\nimport {\n RequestType,\n initFetchObservable,\n initXhrObservable,\n readBytesFromStream,\n elapsed,\n timeStampNow,\n tryToClone,\n} from '@datadog/browser-core'\nimport type { RumSessionManager } from '..'\nimport type { RumConfiguration } from './configuration'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\nimport { isAllowedRequestUrl } from './resource/resourceUtils'\nimport type { TraceIdentifier, Tracer } from './tracing/tracer'\nimport { startTracer } from './tracing/tracer'\n\nexport interface CustomContext {\n requestIndex: number\n spanId?: TraceIdentifier\n traceId?: TraceIdentifier\n traceSampled?: boolean\n}\nexport interface RumFetchStartContext extends FetchStartContext, CustomContext {}\nexport interface RumFetchResolveContext extends FetchResolveContext, CustomContext {}\nexport interface RumXhrStartContext extends XhrStartContext, CustomContext {}\nexport interface RumXhrCompleteContext extends XhrCompleteContext, CustomContext {}\n\nexport interface RequestStartEvent {\n requestIndex: number\n url: string\n}\nexport interface RequestCompleteEvent {\n requestIndex: number\n type: RequestType\n method: string\n url: string\n status: number\n responseType?: string\n startClocks: ClocksState\n duration: Duration\n spanId?: TraceIdentifier\n traceId?: TraceIdentifier\n traceSampled?: boolean\n xhr?: XMLHttpRequest\n response?: Response\n input?: unknown\n init?: RequestInit\n error?: Error\n isAborted: boolean\n handlingStack?: string\n}\n\nlet nextRequestIndex = 1\n\nexport function startRequestCollection(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n sessionManager: RumSessionManager\n) {\n const tracer = startTracer(configuration, sessionManager)\n trackXhr(lifeCycle, configuration, tracer)\n trackFetch(lifeCycle, configuration, tracer)\n}\n\nexport function trackXhr(lifeCycle: LifeCycle, configuration: RumConfiguration, tracer: Tracer) {\n const subscription = initXhrObservable(configuration).subscribe((rawContext) => {\n const context = rawContext as RumXhrStartContext | RumXhrCompleteContext\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return\n }\n\n switch (context.state) {\n case 'start':\n tracer.traceXhr(context, context.xhr)\n context.requestIndex = getNextRequestIndex()\n\n lifeCycle.notify(LifeCycleEventType.REQUEST_STARTED, {\n requestIndex: context.requestIndex,\n url: context.url,\n })\n break\n case 'complete':\n tracer.clearTracingIfNeeded(context)\n lifeCycle.notify(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: RequestType.XHR,\n url: context.url,\n xhr: context.xhr,\n isAborted: context.isAborted,\n handlingStack: context.handlingStack,\n })\n break\n }\n })\n\n return { stop: () => subscription.unsubscribe() }\n}\n\nexport function trackFetch(lifeCycle: LifeCycle, configuration: RumConfiguration, tracer: Tracer) {\n const subscription = initFetchObservable().subscribe((rawContext) => {\n const context = rawContext as RumFetchResolveContext | RumFetchStartContext\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return\n }\n\n switch (context.state) {\n case 'start':\n tracer.traceFetch(context)\n context.requestIndex = getNextRequestIndex()\n\n lifeCycle.notify(LifeCycleEventType.REQUEST_STARTED, {\n requestIndex: context.requestIndex,\n url: context.url,\n })\n break\n case 'resolve':\n waitForResponseToComplete(context, (duration: Duration) => {\n tracer.clearTracingIfNeeded(context)\n lifeCycle.notify(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: 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}\n\nfunction getNextRequestIndex() {\n const result = nextRequestIndex\n nextRequestIndex += 1\n return result\n}\n\nfunction waitForResponseToComplete(context: RumFetchResolveContext, callback: (duration: Duration) => void) {\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 } else {\n readBytesFromStream(\n clonedResponse.body,\n () => {\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()))\n },\n {\n bytesLimit: Number.POSITIVE_INFINITY,\n collectStreamBody: false,\n }\n )\n }\n}\n","import type { Duration, RelativeTime, TimeoutId } from '@datadog/browser-core'\nimport { addEventListener, Observable, setTimeout, clearTimeout, monitor, includes } from '@datadog/browser-core'\nimport type { RumConfiguration } from '../domain/configuration'\nimport { hasValidResourceEntryDuration, isAllowedRequestUrl } from '../domain/resource/resourceUtils'\nimport { retrieveFirstInputTiming } from './firstInputPolyfill'\n\ntype RumPerformanceObserverConstructor = new (callback: PerformanceObserverCallback) => RumPerformanceObserver\n\nexport interface BrowserWindow extends Window {\n PerformanceObserver: RumPerformanceObserverConstructor\n performance: Performance & { interactionCount?: number }\n}\n\nexport interface RumPerformanceObserver extends PerformanceObserver {\n observe(options?: PerformanceObserverInit & { durationThreshold?: number }): void\n}\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 performance entry\n// eslint-disable-next-line no-restricted-syntax\nexport enum RumPerformanceEntryType {\n EVENT = 'event',\n FIRST_INPUT = 'first-input',\n LARGEST_CONTENTFUL_PAINT = 'largest-contentful-paint',\n LAYOUT_SHIFT = 'layout-shift',\n LONG_TASK = 'longtask',\n LONG_ANIMATION_FRAME = 'long-animation-frame',\n NAVIGATION = 'navigation',\n PAINT = 'paint',\n RESOURCE = 'resource',\n}\n\nexport interface RumPerformanceLongTaskTiming {\n name: string\n entryType: RumPerformanceEntryType.LONG_TASK\n startTime: RelativeTime\n duration: Duration\n toJSON(): Omit\n}\n\nexport interface RumPerformanceResourceTiming {\n entryType: RumPerformanceEntryType.RESOURCE\n initiatorType: string\n responseStatus?: number\n name: string\n startTime: RelativeTime\n duration: Duration\n fetchStart: RelativeTime\n domainLookupStart: RelativeTime\n domainLookupEnd: RelativeTime\n connectStart: RelativeTime\n secureConnectionStart: RelativeTime\n connectEnd: RelativeTime\n requestStart: RelativeTime\n responseStart: RelativeTime\n responseEnd: RelativeTime\n redirectStart: RelativeTime\n redirectEnd: RelativeTime\n decodedBodySize: number\n encodedBodySize: number\n transferSize: number\n renderBlockingStatus?: string\n traceId?: string\n toJSON(): Omit\n}\n\nexport interface RumPerformancePaintTiming {\n entryType: RumPerformanceEntryType.PAINT\n name: 'first-paint' | 'first-contentful-paint'\n startTime: RelativeTime\n}\n\nexport interface RumPerformanceNavigationTiming extends Omit {\n entryType: RumPerformanceEntryType.NAVIGATION\n initiatorType: 'navigation'\n name: string\n\n domComplete: RelativeTime\n domContentLoadedEventEnd: RelativeTime\n domInteractive: RelativeTime\n loadEventEnd: RelativeTime\n\n toJSON(): Omit\n}\n\nexport interface RumLargestContentfulPaintTiming {\n entryType: RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT\n startTime: RelativeTime\n size: number\n element?: Element\n toJSON(): Omit\n}\n\nexport interface RumFirstInputTiming {\n entryType: RumPerformanceEntryType.FIRST_INPUT\n startTime: RelativeTime\n processingStart: RelativeTime\n processingEnd: RelativeTime\n duration: Duration\n target?: Node\n interactionId?: number\n name: string\n}\n\nexport interface RumPerformanceEventTiming {\n entryType: RumPerformanceEntryType.EVENT\n startTime: RelativeTime\n processingStart: RelativeTime\n processingEnd: RelativeTime\n duration: Duration\n interactionId?: number\n target?: Node\n name: string\n}\n\nexport interface RumLayoutShiftTiming {\n entryType: RumPerformanceEntryType.LAYOUT_SHIFT\n startTime: RelativeTime\n value: number\n hadRecentInput: boolean\n sources?: Array<{\n node?: Node\n }>\n}\n\n// Documentation https://developer.chrome.com/docs/web-platform/long-animation-frames#better-attribution\nexport type RumPerformanceScriptTiming = {\n duration: Duration\n entryType: 'script'\n executionStart: RelativeTime\n forcedStyleAndLayoutDuration: Duration\n invoker: string // e.g. \"https://static.datadoghq.com/static/c/93085/chunk-bc4db53278fd4c77a637.min.js\"\n invokerType:\n | 'user-callback'\n | 'event-listener'\n | 'resolve-promise'\n | 'reject-promise'\n | 'classic-script'\n | 'module-script'\n name: 'script'\n pauseDuration: Duration\n sourceCharPosition: number\n sourceFunctionName: string\n sourceURL: string\n startTime: RelativeTime\n window: Window\n windowAttribution: string\n}\n\nexport interface RumPerformanceLongAnimationFrameTiming {\n blockingDuration: Duration\n duration: Duration\n entryType: RumPerformanceEntryType.LONG_ANIMATION_FRAME\n firstUIEventTimestamp: RelativeTime\n name: 'long-animation-frame'\n renderStart: RelativeTime\n scripts: RumPerformanceScriptTiming[]\n startTime: RelativeTime\n styleAndLayoutStart: RelativeTime\n}\n\nexport type RumPerformanceEntry =\n | RumPerformanceResourceTiming\n | RumPerformanceLongTaskTiming\n | RumPerformanceLongAnimationFrameTiming\n | RumPerformancePaintTiming\n | RumPerformanceNavigationTiming\n | RumLargestContentfulPaintTiming\n | RumFirstInputTiming\n | RumPerformanceEventTiming\n | RumLayoutShiftTiming\n\nexport type EntryTypeToReturnType = {\n [RumPerformanceEntryType.EVENT]: RumPerformanceEventTiming\n [RumPerformanceEntryType.FIRST_INPUT]: RumFirstInputTiming\n [RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT]: RumLargestContentfulPaintTiming\n [RumPerformanceEntryType.LAYOUT_SHIFT]: RumLayoutShiftTiming\n [RumPerformanceEntryType.PAINT]: RumPerformancePaintTiming\n [RumPerformanceEntryType.LONG_TASK]: RumPerformanceLongTaskTiming\n [RumPerformanceEntryType.LONG_ANIMATION_FRAME]: RumPerformanceLongAnimationFrameTiming\n [RumPerformanceEntryType.NAVIGATION]: RumPerformanceNavigationTiming\n [RumPerformanceEntryType.RESOURCE]: RumPerformanceResourceTiming\n}\n\nexport function createPerformanceObservable(\n configuration: RumConfiguration,\n options: { type: T; buffered?: boolean; durationThreshold?: number }\n) {\n return new Observable>((observable) => {\n if (!window.PerformanceObserver) {\n return\n }\n\n const handlePerformanceEntries = (entries: PerformanceEntryList) => {\n const rumPerformanceEntries = filterRumPerformanceEntries(\n configuration,\n entries as Array\n )\n if (rumPerformanceEntries.length > 0) {\n observable.notify(rumPerformanceEntries)\n }\n }\n\n let timeoutId: TimeoutId | undefined\n let isObserverInitializing = true\n const observer = new PerformanceObserver(\n 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 } else {\n handlePerformanceEntries(entries.getEntries())\n }\n })\n )\n try {\n observer.observe(options)\n } catch {\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 (includes(fallbackSupportedEntryTypes, options.type)) {\n if (options.buffered) {\n timeoutId = setTimeout(() => handlePerformanceEntries(performance.getEntriesByType(options.type)))\n }\n try {\n observer.observe({ entryTypes: [options.type] })\n } catch {\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\n manageResourceTimingBufferFull(configuration)\n\n let stopFirstInputTiming: (() => void) | undefined\n if (\n !supportPerformanceTimingEvent(RumPerformanceEntryType.FIRST_INPUT) &&\n options.type === RumPerformanceEntryType.FIRST_INPUT\n ) {\n ;({ stop: stopFirstInputTiming } = retrieveFirstInputTiming(configuration, (timing) => {\n handlePerformanceEntries([timing])\n }))\n }\n\n return () => {\n observer.disconnect()\n if (stopFirstInputTiming) {\n stopFirstInputTiming()\n }\n clearTimeout(timeoutId)\n }\n })\n}\n\nlet resourceTimingBufferFullListener: { stop: () => void }\nfunction manageResourceTimingBufferFull(configuration: RumConfiguration) {\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?.stop()\n }\n}\n\nfunction supportPerformanceObject() {\n return window.performance !== undefined && 'getEntries' in performance\n}\n\nexport function supportPerformanceTimingEvent(entryType: RumPerformanceEntryType) {\n return (\n window.PerformanceObserver &&\n PerformanceObserver.supportedEntryTypes !== undefined &&\n PerformanceObserver.supportedEntryTypes.includes(entryType)\n )\n}\n\nfunction filterRumPerformanceEntries(\n configuration: RumConfiguration,\n entries: Array\n) {\n return entries.filter((entry) => !isForbiddenResource(configuration, entry))\n}\n\nfunction isForbiddenResource(configuration: RumConfiguration, entry: RumPerformanceEntry) {\n return (\n entry.entryType === RumPerformanceEntryType.RESOURCE &&\n (!isAllowedRequestUrl(configuration, entry.name) || !hasValidResourceEntryDuration(entry))\n )\n}\n","export function isServerError(status: number) {\n return status >= 500\n}\n\nexport function tryToClone(response: Response): Response | undefined {\n try {\n return response.clone()\n } catch (e) {\n // clone can throw if the response has already been used by another instrumentation or is disturbed\n return\n }\n}\n","import { monitor } from './monitor'\nimport { noop } from './utils/functionUtils'\n\ntype Options = {\n bytesLimit: number\n collectStreamBody?: boolean\n}\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(\n stream: ReadableStream,\n callback: (error?: Error, bytes?: Uint8Array, limitExceeded?: boolean) => void,\n options: Options\n) {\n const reader = stream.getReader()\n const chunks: Uint8Array[] = []\n let readBytesCount = 0\n\n readMore()\n\n function readMore() {\n reader.read().then(\n monitor((result: ReadableStreamReadResult) => {\n if (result.done) {\n onDone()\n return\n }\n\n if (options.collectStreamBody) {\n chunks.push(result.value)\n }\n readBytesCount += result.value.length\n\n if (readBytesCount > options.bytesLimit) {\n onDone()\n } else {\n readMore()\n }\n }),\n monitor((error) => callback(error))\n )\n }\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 )\n\n let bytes: Uint8Array | undefined\n let limitExceeded: boolean | undefined\n if (options.collectStreamBody) {\n let completeBuffer: Uint8Array\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 } 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\n callback(undefined, bytes, limitExceeded)\n }\n}\n","import type { ServerDuration } from '@datadog/browser-core'\nimport { isNumber } from '@datadog/browser-core'\n\nexport function discardNegativeDuration(duration: ServerDuration | undefined): ServerDuration | undefined {\n return isNumber(duration) && duration < 0 ? undefined : duration\n}\n","import { noop } from '@datadog/browser-core'\nimport { RumEventType } from '../rawRumEvent.types'\nimport type { RumActionEvent, RumErrorEvent, RumLongTaskEvent, RumResourceEvent } from '../rumEvent.types'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\n\nexport interface EventCounts {\n errorCount: number\n actionCount: number\n longTaskCount: number\n resourceCount: number\n frustrationCount: number\n}\n\nexport function trackEventCounts({\n lifeCycle,\n isChildEvent,\n onChange: callback = noop,\n}: {\n lifeCycle: LifeCycle\n isChildEvent: (event: RumActionEvent | RumErrorEvent | RumLongTaskEvent | RumResourceEvent) => boolean\n onChange?: () => void\n}) {\n const eventCounts: EventCounts = {\n errorCount: 0,\n longTaskCount: 0,\n resourceCount: 0,\n actionCount: 0,\n frustrationCount: 0,\n }\n\n const subscription = lifeCycle.subscribe(LifeCycleEventType.RUM_EVENT_COLLECTED, (event): void => {\n if (event.type === 'view' || event.type === 'vital' || !isChildEvent(event)) {\n return\n }\n switch (event.type) {\n case RumEventType.ERROR:\n eventCounts.errorCount += 1\n callback()\n break\n case 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 RumEventType.LONG_TASK:\n eventCounts.longTaskCount += 1\n callback()\n break\n case RumEventType.RESOURCE:\n if (!event._dd?.discarded) {\n eventCounts.resourceCount += 1\n callback()\n }\n break\n }\n })\n\n return {\n stop: () => {\n subscription.unsubscribe()\n },\n eventCounts,\n }\n}\n","import type { Duration, RelativeTime } from '@datadog/browser-core'\nimport { addEventListeners, dateNow, DOM_EVENT, relativeNow } from '@datadog/browser-core'\nimport type { RumConfiguration } from '../domain/configuration'\n\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(\n configuration: RumConfiguration,\n callback: (timing: PerformanceEventTiming) => void\n) {\n const startTimeStamp = dateNow()\n let timingSent = false\n\n const { stop: removeEventListeners } = addEventListeners(\n configuration,\n window,\n [DOM_EVENT.CLICK, DOM_EVENT.MOUSE_DOWN, DOM_EVENT.KEY_DOWN, DOM_EVENT.TOUCH_START, DOM_EVENT.POINTER_DOWN],\n (evt) => {\n // Only count cancelable events, which should trigger behavior important to the user.\n if (!evt.cancelable) {\n return\n }\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: PerformanceEventTiming = {\n entryType: 'first-input',\n processingStart: relativeNow(),\n processingEnd: relativeNow(),\n startTime: evt.timeStamp as RelativeTime,\n duration: 0 as Duration, // arbitrary value to avoid nullable duration and simplify INP logic\n name: '',\n cancelable: false,\n target: null,\n toJSON: () => ({}),\n }\n\n if (evt.type === DOM_EVENT.POINTER_DOWN) {\n sendTimingIfPointerIsNotCancelled(configuration, timing)\n } else {\n sendTiming(timing)\n }\n },\n { passive: true, capture: true }\n )\n\n return { stop: removeEventListeners }\n\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: RumConfiguration, timing: PerformanceEventTiming) {\n addEventListeners(\n configuration,\n window,\n [DOM_EVENT.POINTER_UP, DOM_EVENT.POINTER_CANCEL],\n (event) => {\n if (event.type === DOM_EVENT.POINTER_UP) {\n sendTiming(timing)\n }\n },\n { once: true }\n )\n }\n\n function sendTiming(timing: PerformanceEventTiming) {\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","import type { Subscription, TimeoutId, TimeStamp } from '@datadog/browser-core'\nimport {\n instrumentMethod,\n matchList,\n monitor,\n Observable,\n timeStampNow,\n setTimeout,\n clearTimeout,\n} from '@datadog/browser-core'\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../browser/performanceObservable'\nimport type { RumConfiguration } from './configuration'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\n\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\nexport interface PageActivityEvent {\n isBusy: boolean\n}\n\nexport type PageActivityEndEvent = { hadActivity: true; end: TimeStamp } | { hadActivity: false }\n\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(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable,\n configuration: RumConfiguration,\n pageActivityEndCallback: (event: PageActivityEndEvent) => void,\n maxDuration?: number\n) {\n const pageActivityObservable = createPageActivityObservable(lifeCycle, domMutationObservable, configuration)\n return doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration)\n}\n\nexport function doWaitPageActivityEnd(\n pageActivityObservable: Observable,\n pageActivityEndCallback: (event: PageActivityEndEvent) => void,\n maxDuration?: number\n) {\n let pageActivityEndTimeoutId: TimeoutId\n let hasCompleted = false\n\n const validationTimeoutId = setTimeout(\n monitor(() => complete({ hadActivity: false })),\n PAGE_ACTIVITY_VALIDATION_DELAY\n )\n const maxDurationTimeoutId =\n maxDuration !== undefined\n ? setTimeout(\n monitor(() => complete({ hadActivity: true, end: timeStampNow() })),\n maxDuration\n )\n : undefined\n\n const pageActivitySubscription = pageActivityObservable.subscribe(({ isBusy }) => {\n clearTimeout(validationTimeoutId)\n clearTimeout(pageActivityEndTimeoutId)\n const lastChangeTime = timeStampNow()\n if (!isBusy) {\n pageActivityEndTimeoutId = setTimeout(\n monitor(() => complete({ hadActivity: true, end: lastChangeTime })),\n PAGE_ACTIVITY_END_DELAY\n )\n }\n })\n\n const stop = () => {\n hasCompleted = true\n clearTimeout(validationTimeoutId)\n clearTimeout(pageActivityEndTimeoutId)\n clearTimeout(maxDurationTimeoutId)\n pageActivitySubscription.unsubscribe()\n }\n\n function complete(event: PageActivityEndEvent) {\n if (hasCompleted) {\n return\n }\n stop()\n pageActivityEndCallback(event)\n }\n return { stop }\n}\n\nexport function createPageActivityObservable(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable,\n configuration: RumConfiguration\n): Observable {\n return new Observable((observable) => {\n const subscriptions: Subscription[] = []\n let firstRequestIndex: undefined | number\n let pendingRequestsCount = 0\n\n subscriptions.push(\n domMutationObservable.subscribe(notifyPageActivity),\n createPerformanceObservable(configuration, { type: RumPerformanceEntryType.RESOURCE }).subscribe((entries) => {\n if (entries.some((entry) => !isExcludedUrl(configuration, entry.name))) {\n notifyPageActivity()\n }\n }),\n lifeCycle.subscribe(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 }),\n lifeCycle.subscribe(LifeCycleEventType.REQUEST_COMPLETED, (request) => {\n if (\n isExcludedUrl(configuration, request.url) ||\n firstRequestIndex === undefined ||\n // If the request started before the tracking start, ignore it\n request.requestIndex < firstRequestIndex\n ) {\n return\n }\n pendingRequestsCount -= 1\n notifyPageActivity()\n })\n )\n\n const { stop: stopTrackingWindowOpen } = trackWindowOpen(notifyPageActivity)\n\n return () => {\n stopTrackingWindowOpen()\n subscriptions.forEach((s) => s.unsubscribe())\n }\n\n function notifyPageActivity() {\n observable.notify({ isBusy: pendingRequestsCount > 0 })\n }\n })\n}\n\nfunction isExcludedUrl(configuration: RumConfiguration, requestUrl: string): boolean {\n return matchList(configuration.excludedActivityUrls, requestUrl)\n}\n\nfunction trackWindowOpen(callback: () => void) {\n return instrumentMethod(window, 'open', callback)\n}\n","// https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/selector/escapeSelector.js\nexport function cssEscape(str: string) {\n if (window.CSS && window.CSS.escape) {\n return window.CSS.escape(str)\n }\n\n // eslint-disable-next-line no-control-regex\n return str.replace(/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g, function (ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === '\\0') {\n return '\\uFFFD'\n }\n // Control characters and (dependent upon position) numbers get escaped as code points\n return `${ch.slice(0, -1)}\\\\${ch.charCodeAt(ch.length - 1).toString(16)} `\n }\n // Other potentially-special ASCII characters get backslash-escaped\n return `\\\\${ch}`\n })\n}\n\nexport function elementMatches(element: Element & { msMatchesSelector?(selector: string): boolean }, selector: string) {\n if (element.matches) {\n return element.matches(selector)\n }\n // IE11 support\n if (element.msMatchesSelector) {\n return element.msMatchesSelector(selector)\n }\n return false\n}\n\n/**\n * Return the parentElement of an node\n *\n * In cases where parentElement is not supported, such as in IE11 for SVG nodes, we fallback to parentNode\n */\nexport function getParentElement(node: Node): HTMLElement | null {\n if (node.parentElement) {\n return node.parentElement\n }\n\n while (node.parentNode) {\n if (node.parentNode.nodeType === Node.ELEMENT_NODE) {\n return node.parentNode as HTMLElement\n }\n node = node.parentNode\n }\n\n return null\n}\n\n/**\n * Return the classList of an element or an array of classes if classList is not supported\n *\n * In cases where classList is not supported, such as in IE11 for SVG and MathML elements,\n * we fallback to using element.getAttribute('class').\n * We opt for element.getAttribute('class') over element.className because className returns an SVGAnimatedString for SVG elements.\n */\nexport function getClassList(element: Element): DOMTokenList | string[] {\n if (element.classList) {\n return element.classList\n }\n\n const classes = (element.getAttribute('class') || '').trim()\n return classes ? classes.split(/\\s+/) : []\n}\n\n// ie11 supports WeakMap but not WeakSet\nconst PLACEHOLDER = 1\n// eslint-disable-next-line no-restricted-syntax\nexport class WeakSet {\n private map = new WeakMap()\n\n constructor(initialValues?: T[]) {\n if (initialValues) {\n initialValues.forEach((value) => this.map.set(value, PLACEHOLDER))\n }\n }\n\n add(value: T) {\n this.map.set(value, PLACEHOLDER)\n\n return this\n }\n\n delete(value: T) {\n return this.map.delete(value)\n }\n\n has(value: T) {\n return this.map.has(value)\n }\n}\n","export function isTextNode(node: Node): node is Text {\n return node.nodeType === Node.TEXT_NODE\n}\n\nexport function isCommentNode(node: Node): node is Comment {\n return node.nodeType === Node.COMMENT_NODE\n}\n\nexport function isElementNode(node: Node): node is Element {\n return node.nodeType === Node.ELEMENT_NODE\n}\n\nexport function isNodeShadowHost(node: Node): node is Element & { shadowRoot: ShadowRoot } {\n return isElementNode(node) && Boolean(node.shadowRoot)\n}\n\nexport function isNodeShadowRoot(node: Node): node is ShadowRoot {\n const shadowRoot = node as ShadowRoot\n return !!shadowRoot.host && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE && isElementNode(shadowRoot.host)\n}\n\nexport function hasChildNodes(node: Node) {\n return node.childNodes.length > 0 || isNodeShadowHost(node)\n}\n\nexport function forEachChildNodes(node: Node, callback: (child: Node) => void) {\n let child = node.firstChild\n\n while (child) {\n callback(child)\n\n child = child.nextSibling\n }\n\n if (isNodeShadowHost(node)) {\n callback(node.shadowRoot)\n }\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: Node): Node | null {\n return isNodeShadowRoot(node) ? node.host : node.parentNode\n}\n","import { DefaultPrivacyLevel } from '@datadog/browser-core'\nimport { isElementNode, getParentNode, isTextNode } from '../browser/htmlDomUtils'\nimport { elementMatches } from '../browser/polyfills'\n\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} as const\nexport type NodePrivacyLevel = (typeof NodePrivacyLevel)[keyof typeof NodePrivacyLevel]\n\nexport const PRIVACY_ATTR_NAME = 'data-dd-privacy'\n\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\n// Privacy Classes - not all customers can set plain HTML attributes, so support classes too\nexport const PRIVACY_CLASS_PREFIX = 'dd-privacy-'\n\n// Private Replacement Templates\nexport const CENSORED_STRING_MARK = '***'\nexport const CENSORED_IMG_MARK = 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=='\n\nexport const FORM_PRIVATE_TAG_NAMES: { [tagName: string]: true } = {\n INPUT: true,\n OUTPUT: true,\n TEXTAREA: true,\n SELECT: true,\n OPTION: true,\n DATALIST: true,\n OPTGROUP: true,\n}\n\nconst TEXT_MASKING_CHAR = 'x'\n\nexport type NodePrivacyLevelCache = Map\n\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(\n node: Node,\n defaultPrivacyLevel: NodePrivacyLevel,\n cache?: NodePrivacyLevelCache\n): NodePrivacyLevel {\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/**\n * Reduces the next privacy level based on self + parent privacy levels\n */\nexport function reducePrivacyLevel(\n childPrivacyLevel: NodePrivacyLevel | undefined,\n parentNodePrivacyLevel: NodePrivacyLevel\n): NodePrivacyLevel {\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/**\n * Determines the node's own privacy level without checking for ancestors.\n */\nexport function getNodeSelfPrivacyLevel(node: Node): NodePrivacyLevel | undefined {\n // Only Element types can have a privacy level set\n if (!isElementNode(node)) {\n return\n }\n\n // Overrules for replay purpose\n if (node.tagName === 'BASE') {\n return NodePrivacyLevel.ALLOW\n }\n\n // Overrules to enforce end-user protection\n if (node.tagName === 'INPUT') {\n const inputElement = node as HTMLInputElement\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]\n if (autocomplete && autocomplete.indexOf('cc-') === 0) {\n return NodePrivacyLevel.MASK\n }\n }\n\n // Check HTML privacy attributes and classes\n if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.HIDDEN))) {\n return NodePrivacyLevel.HIDDEN\n }\n\n if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.MASK))) {\n return NodePrivacyLevel.MASK\n }\n\n if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.MASK_USER_INPUT))) {\n return NodePrivacyLevel.MASK_USER_INPUT\n }\n\n if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.ALLOW))) {\n return NodePrivacyLevel.ALLOW\n }\n\n if (shouldIgnoreElement(node)) {\n return NodePrivacyLevel.IGNORE\n }\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: Node, privacyLevel: NodePrivacyLevel) {\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}\n\nfunction isFormElement(node: Node | null): boolean {\n if (!node || node.nodeType !== node.ELEMENT_NODE) {\n return false\n }\n const element = node as HTMLInputElement\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/**\n * Text censoring non-destructively maintains whitespace characters in order to preserve text shape\n * during replay.\n */\nexport const censorText = (text: string) => text.replace(/\\S/g, TEXT_MASKING_CHAR)\n\nexport function getTextContent(\n textNode: Node,\n ignoreWhiteSpace: boolean,\n parentNodePrivacyLevel: NodePrivacyLevel\n): string | undefined {\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 = textNode.parentElement?.tagName\n let textContent = textNode.textContent || ''\n\n if (ignoreWhiteSpace && !textContent.trim()) {\n return\n }\n\n const nodePrivacyLevel = parentNodePrivacyLevel\n\n const isScript = parentTagName === 'SCRIPT'\n\n if (isScript) {\n // For perf reasons, we don't record script (heuristic)\n textContent = CENSORED_STRING_MARK\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 } 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 ) {\n if (!textContent.trim()) {\n return\n }\n } else if (parentTagName === 'OPTION') {\n //