{"version":3,"file":"npm.datadog.9e0be60b.js","mappings":"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","sources":["webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/tools/display.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/tracekit/computeStackTrace.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/tools/utils.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/tools/error.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/tools/observable.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/tools/timeUtils.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/configuration/experimentalFeatures.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/internalMonitoring/internalMonitoring.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/browser/cookie.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/tools/urlPolyfill.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/transport/eventBridge.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/configuration/tags.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/syntheticsContext.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/transport/batch.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/transport/httpRequest.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/browser/domMutationObservable.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/resource/resourceUtils.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/tracing/getDocumentTraceId.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/browser/performanceCollection.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/tools/createEventRateLimiter.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/tools/limitModification.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/assembly.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/ciTestContext.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/foregroundContexts.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/lifeCycle.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/session/sessionCookieStore.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/tools/browserDetection.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/tools/contextHistory.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/tracing/tracer.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/requestCollection.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/trackEventCounts.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/waitIdlePage.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/getActionNameFromElement.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/trackActions.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/actionCollection.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/tracekit/tracekit.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/trackFirstHidden.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/error/errorCollection.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/error/trackConsoleError.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/error/trackReportError.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/resource/matchRequestTiming.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/resource/resourceCollection.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/trackInitialViewTimings.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/trackViewMetrics.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/trackViews.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/viewCollection.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumSessionManager.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/types.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/constants.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/record/privacy.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/record/serialize.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/record/serializationUtils.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/record/utils.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/record/mutationObserver.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/record/mutationBatch.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/record/observer.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/record/viewports.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/record/types.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/replayStats.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/record/record.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/transport/send.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segment.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/deflateWorker.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segmentCollection.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/startDeflateWorker.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/entries/main.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/boot/init.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/boot/recorderApi.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum/esm/boot/startRecording.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/boot/rumPublicApi.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/tools/contextManager.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/boot/startRum.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-core/esm/transport/startBatchWithReplica.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/transport/startRumEventBridge.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/transport/startRumBatch.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/browser/locationChangeObservable.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/viewContexts.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/urlContexts.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/longTask/longTaskCollection.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/internalContext.js","webpack://goodkind-frontend/./node_modules/@datadog/browser-rum-core/esm/domain/configuration.js"],"sourcesContent":["/* eslint-disable no-console, local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport var display = {\n log: console.log.bind(console),\n warn: console.warn.bind(console),\n error: console.error.bind(console),\n};\n//# sourceMappingURL=display.js.map","var UNKNOWN_FUNCTION = '?';\n/**\n * Computes a stack trace for an exception.\n */\nexport function computeStackTrace(ex) {\n var stack = [];\n var stackProperty = tryToGetString(ex, 'stack');\n if (stackProperty) {\n stackProperty.split('\\n').forEach(function (line) {\n var stackFrame = parseChromeLine(line) || parseWinLine(line) || parseGeckoLine(line);\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION;\n }\n stack.push(stackFrame);\n }\n });\n }\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack: stack,\n };\n}\nvar CHROME_LINE_RE = \n// eslint-disable-next-line max-len\n/^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nvar CHROME_EVAL_RE = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\nfunction parseChromeLine(line) {\n var parts = CHROME_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n var submatch = CHROME_EVAL_RE.exec(parts[2]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined,\n };\n}\nvar WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n var parts = WINJS_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2],\n };\n}\nvar GECKO_LINE_RE = \n// eslint-disable-next-line max-len\n/^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n var parts = GECKO_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n var submatch = GECKO_EVAL_RE.exec(parts[3]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = undefined; // no column when eval\n }\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3],\n };\n}\nfunction tryToGetString(candidate, property) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined;\n }\n var value = candidate[property];\n return typeof value === 'string' ? value : undefined;\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { monitor } from '../domain/internalMonitoring';\nexport var ONE_SECOND = 1000;\nexport var ONE_MINUTE = 60 * ONE_SECOND;\nexport var ONE_HOUR = 60 * ONE_MINUTE;\nexport var ONE_DAY = 24 * ONE_HOUR;\nexport var ONE_YEAR = 365 * ONE_DAY;\nexport var ONE_KILO_BYTE = 1024;\n// use lodash API\nexport function throttle(fn, wait, options) {\n var needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n var needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n var inWaitPeriod = false;\n var pendingExecutionWithParameters;\n var pendingTimeoutId;\n return {\n throttled: function () {\n var parameters = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n parameters[_i] = arguments[_i];\n }\n if (inWaitPeriod) {\n pendingExecutionWithParameters = parameters;\n return;\n }\n if (needLeadingExecution) {\n fn.apply(void 0, parameters);\n }\n else {\n pendingExecutionWithParameters = parameters;\n }\n inWaitPeriod = true;\n pendingTimeoutId = setTimeout(function () {\n if (needTrailingExecution && pendingExecutionWithParameters) {\n fn.apply(void 0, pendingExecutionWithParameters);\n }\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n }, wait);\n },\n cancel: function () {\n clearTimeout(pendingTimeoutId);\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n },\n };\n}\nexport function assign(target) {\n var toAssign = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n toAssign[_i - 1] = arguments[_i];\n }\n toAssign.forEach(function (source) {\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n });\n return target;\n}\nexport function shallowClone(object) {\n return assign({}, object);\n}\n/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n return placeholder\n ? // eslint-disable-next-line no-bitwise\n (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n : \"\".concat(1e7, \"-\").concat(1e3, \"-\").concat(4e3, \"-\").concat(8e3, \"-\").concat(1e11).replace(/[018]/g, generateUUID);\n}\n/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n return +num.toFixed(decimals);\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n/**\n * Custom implementation of JSON.stringify that ignores value.toJSON.\n * We need to do that because some sites badly override toJSON on certain objects.\n * Note this still supposes that JSON.stringify is correct...\n */\nexport function jsonStringify(value, replacer, space) {\n if (value === null || value === undefined) {\n return JSON.stringify(value);\n }\n var originalToJSON = [false, undefined];\n if (hasToJSON(value)) {\n // We need to add a flag and not rely on the truthiness of value.toJSON\n // because it can be set but undefined and that's actually significant.\n originalToJSON = [true, value.toJSON];\n delete value.toJSON;\n }\n var originalProtoToJSON = [false, undefined];\n var prototype;\n if (typeof value === 'object') {\n prototype = Object.getPrototypeOf(value);\n if (hasToJSON(prototype)) {\n originalProtoToJSON = [true, prototype.toJSON];\n delete prototype.toJSON;\n }\n }\n var result;\n try {\n result = JSON.stringify(value, replacer, space);\n }\n catch (_a) {\n result = '';\n }\n finally {\n if (originalToJSON[0]) {\n ;\n value.toJSON = originalToJSON[1];\n }\n if (originalProtoToJSON[0]) {\n ;\n prototype.toJSON = originalProtoToJSON[1];\n }\n }\n return result;\n}\nfunction hasToJSON(value) {\n return typeof value === 'object' && value !== null && Object.prototype.hasOwnProperty.call(value, 'toJSON');\n}\nexport function includes(candidate, search) {\n return candidate.indexOf(search) !== -1;\n}\nexport function find(array, predicate) {\n for (var i = 0; i < array.length; i += 1) {\n var item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n return undefined;\n}\nexport function findLast(array, predicate) {\n for (var i = array.length - 1; i >= 0; i -= 1) {\n var item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n return undefined;\n}\nexport function isPercentage(value) {\n return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n return typeof value === 'number';\n}\nexport function objectValues(object) {\n return Object.keys(object).map(function (key) { return object[key]; });\n}\nexport function objectHasValue(object, value) {\n return Object.keys(object).some(function (key) { return object[key] === value; });\n}\nexport function objectEntries(object) {\n return Object.keys(object).map(function (key) { return [key, object[key]]; });\n}\nexport function isEmptyObject(object) {\n return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n var newObject = {};\n for (var _i = 0, _a = Object.keys(object); _i < _a.length; _i++) {\n var key = _a[_i];\n newObject[key] = fn(object[key]);\n }\n return newObject;\n}\n/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n Object.defineProperty(Object.prototype, '_dd_temp_', {\n get: function () {\n return this;\n },\n configurable: true,\n });\n // @ts-ignore _dd_temp is defined using defineProperty\n var globalObject = _dd_temp_;\n // @ts-ignore _dd_temp is defined using defineProperty\n delete Object.prototype._dd_temp_;\n if (typeof globalObject !== 'object') {\n // on safari _dd_temp_ is available on window but not globally\n // fallback on other browser globals check\n if (typeof self === 'object') {\n globalObject = self;\n }\n else if (typeof window === 'object') {\n globalObject = window;\n }\n else {\n globalObject = {};\n }\n }\n return globalObject;\n}\nexport function getLocationOrigin() {\n return getLinkElementOrigin(window.location);\n}\n/**\n * IE fallback\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/origin\n */\nexport function getLinkElementOrigin(element) {\n if (element.origin) {\n return element.origin;\n }\n var sanitizedHost = element.host.replace(/(:80|:443)$/, '');\n return \"\".concat(element.protocol, \"//\").concat(sanitizedHost);\n}\nexport function findCommaSeparatedValue(rawString, name) {\n var regex = new RegExp(\"(?:^|;)\\\\s*\".concat(name, \"\\\\s*=\\\\s*([^;]+)\"));\n var matches = regex.exec(rawString);\n return matches ? matches[1] : undefined;\n}\nexport function safeTruncate(candidate, length, suffix) {\n if (suffix === void 0) { suffix = ''; }\n var lastChar = candidate.charCodeAt(length - 1);\n var isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n var correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n if (candidate.length <= correctedLength)\n return candidate;\n return \"\".concat(candidate.slice(0, correctedLength)).concat(suffix);\n}\n/**\n * Add an event listener to an event emitter 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(emitter, event, listener, options) {\n return addEventListeners(emitter, [event], listener, options);\n}\n/**\n * Add event listeners to an event emitter 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(emitter, events, listener, _a) {\n var _b = _a === void 0 ? {} : _a, once = _b.once, capture = _b.capture, passive = _b.passive;\n var wrappedListener = monitor(once\n ? function (event) {\n stop();\n listener(event);\n }\n : listener);\n var options = passive ? { capture: capture, passive: passive } : capture;\n events.forEach(function (event) { return emitter.addEventListener(event, wrappedListener, options); });\n var stop = function () { return events.forEach(function (event) { return emitter.removeEventListener(event, wrappedListener, options); }); };\n return {\n stop: stop,\n };\n}\nexport function runOnReadyState(expectedReadyState, callback) {\n if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n callback();\n }\n else {\n var eventName = expectedReadyState === 'complete' ? \"load\" /* LOAD */ : \"DOMContentLoaded\" /* DOM_CONTENT_LOADED */;\n addEventListener(window, eventName, callback, { once: true });\n }\n}\n/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return 'array';\n }\n return typeof value;\n}\nfunction createCircularReferenceChecker() {\n if (typeof WeakSet !== 'undefined') {\n var set_1 = new WeakSet();\n return {\n hasAlreadyBeenSeen: function (value) {\n var has = set_1.has(value);\n if (!has) {\n set_1.add(value);\n }\n return has;\n },\n };\n }\n var array = [];\n return {\n hasAlreadyBeenSeen: function (value) {\n var has = array.indexOf(value) >= 0;\n if (!has) {\n array.push(value);\n }\n return has;\n },\n };\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(destination, source, circularReferenceChecker) {\n if (circularReferenceChecker === void 0) { circularReferenceChecker = createCircularReferenceChecker(); }\n // ignore the source if it is undefined\n if (source === undefined) {\n return destination;\n }\n if (typeof source !== 'object' || source === null) {\n // primitive values - just return source\n return source;\n }\n else if (source instanceof Date) {\n return new Date(source.getTime());\n }\n else if (source instanceof RegExp) {\n var flags = source.flags ||\n // old browsers compatibility\n [\n source.global ? 'g' : '',\n source.ignoreCase ? 'i' : '',\n source.multiline ? 'm' : '',\n source.sticky ? 'y' : '',\n source.unicode ? 'u' : '',\n ].join('');\n return new RegExp(source.source, flags);\n }\n if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n // remove circular references\n return undefined;\n }\n else if (Array.isArray(source)) {\n var merged_1 = Array.isArray(destination) ? destination : [];\n for (var i = 0; i < source.length; ++i) {\n merged_1[i] = mergeInto(merged_1[i], source[i], circularReferenceChecker);\n }\n return merged_1;\n }\n var merged = getType(destination) === 'object' ? destination : {};\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n }\n }\n return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n return mergeInto(undefined, value);\n}\nexport function combine() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n var destination;\n for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {\n var source = sources_1[_a];\n // Ignore any undefined or null sources.\n if (source === undefined || source === null) {\n continue;\n }\n destination = mergeInto(destination, source);\n }\n return destination;\n}\nexport function requestIdleCallback(callback, opts) {\n // Use 'requestIdleCallback' when available: it will throttle the mutation processing if the\n // browser is busy rendering frames (ex: when frames are below 60fps). When not available, the\n // fallback on 'requestAnimationFrame' will still ensure the mutations are processed after any\n // browser rendering process (Layout, Recalculate Style, etc.), so we can serialize DOM nodes\n // efficiently.\n if (window.requestIdleCallback) {\n var id_1 = window.requestIdleCallback(monitor(callback), opts);\n return function () { return window.cancelIdleCallback(id_1); };\n }\n var id = window.requestAnimationFrame(monitor(callback));\n return function () { return window.cancelAnimationFrame(id); };\n}\nexport function removeDuplicates(array) {\n var deduplicated = [];\n var set = new Set();\n array.forEach(function (item) { return set.add(item); });\n set.forEach(function (item) { return deduplicated.push(item); });\n return deduplicated;\n}\n//# sourceMappingURL=utils.js.map","import { callMonitored } from '../domain/internalMonitoring';\nimport { computeStackTrace } from '../domain/tracekit';\nimport { jsonStringify, noop } from './utils';\nexport var ErrorSource = {\n AGENT: 'agent',\n CONSOLE: 'console',\n CUSTOM: 'custom',\n LOGGER: 'logger',\n NETWORK: 'network',\n SOURCE: 'source',\n REPORT: 'report',\n};\nexport function formatUnknownError(stackTrace, errorObject, nonErrorPrefix, handlingStack) {\n if (!stackTrace || (stackTrace.message === undefined && !(errorObject instanceof Error))) {\n return {\n message: \"\".concat(nonErrorPrefix, \" \").concat(jsonStringify(errorObject)),\n stack: 'No stack, consider using an instance of Error',\n handlingStack: handlingStack,\n type: stackTrace && stackTrace.name,\n };\n }\n return {\n message: stackTrace.message || 'Empty message',\n stack: toStackTraceString(stackTrace),\n handlingStack: handlingStack,\n type: stackTrace.name,\n };\n}\nexport function toStackTraceString(stack) {\n var result = formatErrorMessage(stack);\n stack.stack.forEach(function (frame) {\n var func = frame.func === '?' ? '' : frame.func;\n var args = frame.args && frame.args.length > 0 ? \"(\".concat(frame.args.join(', '), \")\") : '';\n var line = frame.line ? \":\".concat(frame.line) : '';\n var column = frame.line && frame.column ? \":\".concat(frame.column) : '';\n result += \"\\n at \".concat(func).concat(args, \" @ \").concat(frame.url).concat(line).concat(column);\n });\n return result;\n}\nexport function getFileFromStackTraceString(stack) {\n var _a;\n return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function formatErrorMessage(stack) {\n return \"\".concat(stack.name || 'Error', \": \").concat(stack.message);\n}\n/**\n Creates a stacktrace without SDK internal frames.\n \n Constraints:\n - Has to be called at the utmost position of the call stack.\n - No internal monitoring should encapsulate the function, that is why we need to use callMonitored inside of it.\n */\nexport function createHandlingStack() {\n /**\n * Skip the two internal frames:\n * - SDK API (console.error, ...)\n * - this function\n * in order to keep only the user calls\n */\n var internalFramesToSkip = 2;\n var error = new Error();\n var formattedStack;\n // IE needs to throw the error to fill in the stack trace\n if (!error.stack) {\n try {\n throw error;\n }\n catch (e) {\n noop();\n }\n }\n callMonitored(function () {\n var stackTrace = computeStackTrace(error);\n stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n formattedStack = toStackTraceString(stackTrace);\n });\n return formattedStack;\n}\n//# sourceMappingURL=error.js.map","var Observable = /** @class */ (function () {\n function Observable(onFirstSubscribe) {\n this.onFirstSubscribe = onFirstSubscribe;\n this.observers = [];\n }\n Observable.prototype.subscribe = function (f) {\n var _this = this;\n if (!this.observers.length && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe() || undefined;\n }\n this.observers.push(f);\n return {\n unsubscribe: function () {\n _this.observers = _this.observers.filter(function (other) { return f !== other; });\n if (!_this.observers.length && _this.onLastUnsubscribe) {\n _this.onLastUnsubscribe();\n }\n },\n };\n };\n Observable.prototype.notify = function (data) {\n this.observers.forEach(function (observer) { return observer(data); });\n };\n return Observable;\n}());\nexport { Observable };\nexport function mergeObservables() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var globalObservable = new Observable(function () {\n var subscriptions = observables.map(function (observable) {\n return observable.subscribe(function (data) { return globalObservable.notify(data); });\n });\n return function () { return subscriptions.forEach(function (subscription) { return subscription.unsubscribe(); }); };\n });\n return globalObservable;\n}\n//# sourceMappingURL=observable.js.map","import { isNumber, ONE_YEAR, round } from './utils';\nexport function relativeToClocks(relative) {\n return { relative: relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n var correctedOrigin = Date.now() - performance.now();\n // apply correction only for positive drift\n if (correctedOrigin > getNavigationStart()) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n return Math.round(correctedOrigin + relativeTime);\n }\n return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n return Math.round(Date.now() - (getNavigationStart() + performance.now()));\n}\nexport function toServerDuration(duration) {\n if (!isNumber(duration)) {\n return duration;\n }\n return round(duration * 1e6, 0);\n}\nexport function timeStampNow() {\n return Date.now();\n}\nexport function relativeNow() {\n return performance.now();\n}\nexport function clocksNow() {\n return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n return (end - start);\n}\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) {\n return (timestamp - getNavigationStart());\n}\nexport function getTimeStamp(relativeTime) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n return Math.round(getNavigationStart() + relativeTime);\n}\nexport function looksLikeRelativeTime(time) {\n return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nvar navigationStart;\nfunction getNavigationStart() {\n if (navigationStart === undefined) {\n navigationStart = performance.timing.navigationStart;\n }\n return navigationStart;\n}\nexport function resetNavigationStart() {\n navigationStart = undefined;\n}\n//# sourceMappingURL=timeUtils.js.map","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n */\nvar enabledExperimentalFeatures;\nexport function updateExperimentalFeatures(enabledFeatures) {\n // Safely handle external data\n if (!Array.isArray(enabledFeatures)) {\n return;\n }\n if (!enabledExperimentalFeatures) {\n enabledExperimentalFeatures = new Set(enabledFeatures);\n }\n enabledFeatures\n .filter(function (flag) { return typeof flag === 'string'; })\n .forEach(function (flag) {\n enabledExperimentalFeatures.add(flag);\n });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n return !!enabledExperimentalFeatures && enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n enabledExperimentalFeatures = new Set();\n}\n//# sourceMappingURL=experimentalFeatures.js.map","import { display } from '../../tools/display';\nimport { toStackTraceString } from '../../tools/error';\nimport { assign, combine, jsonStringify, performDraw } from '../../tools/utils';\nimport { computeStackTrace } from '../tracekit';\nimport { Observable } from '../../tools/observable';\nimport { timeStampNow } from '../../tools/timeUtils';\nimport { isExperimentalFeatureEnabled } from '../configuration';\nvar monitoringConfiguration = { maxMessagesPerPage: 0, sentMessageCount: 0, telemetryEnabled: false };\nvar onInternalMonitoringMessageCollected;\nexport function startInternalMonitoring(configuration) {\n var externalContextProvider;\n var telemetryContextProvider;\n var monitoringMessageObservable = new Observable();\n var telemetryEventObservable = new Observable();\n monitoringConfiguration.telemetryEnabled = performDraw(configuration.telemetrySampleRate);\n onInternalMonitoringMessageCollected = function (message) {\n monitoringMessageObservable.notify(withContext(message));\n if (isExperimentalFeatureEnabled('telemetry') && monitoringConfiguration.telemetryEnabled) {\n telemetryEventObservable.notify(toTelemetryEvent(message));\n }\n };\n assign(monitoringConfiguration, {\n maxMessagesPerPage: configuration.maxInternalMonitoringMessagesPerPage,\n sentMessageCount: 0,\n });\n function withContext(message) {\n return combine({ date: timeStampNow() }, externalContextProvider !== undefined ? externalContextProvider() : {}, message);\n }\n function toTelemetryEvent(message) {\n return combine({\n type: 'telemetry',\n date: timeStampNow(),\n service: 'browser-sdk',\n version: \"4.8.1\",\n source: 'browser',\n _dd: {\n format_version: 2,\n },\n telemetry: message, // https://github.com/microsoft/TypeScript/issues/48457\n }, telemetryContextProvider !== undefined ? telemetryContextProvider() : {});\n }\n return {\n setExternalContextProvider: function (provider) {\n externalContextProvider = provider;\n },\n monitoringMessageObservable: monitoringMessageObservable,\n setTelemetryContextProvider: function (provider) {\n telemetryContextProvider = provider;\n },\n telemetryEventObservable: telemetryEventObservable,\n };\n}\nexport function startFakeInternalMonitoring() {\n var messages = [];\n assign(monitoringConfiguration, {\n maxMessagesPerPage: Infinity,\n sentMessageCount: 0,\n });\n onInternalMonitoringMessageCollected = function (message) {\n messages.push(message);\n };\n return messages;\n}\nexport function resetInternalMonitoring() {\n onInternalMonitoringMessageCollected = undefined;\n monitoringConfiguration.debugMode = undefined;\n}\nexport function monitored(_, __, descriptor) {\n var originalMethod = descriptor.value;\n descriptor.value = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var decorated = onInternalMonitoringMessageCollected ? monitor(originalMethod) : originalMethod;\n return decorated.apply(this, args);\n };\n}\nexport function monitor(fn) {\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return callMonitored(fn, this, arguments);\n }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return fn.apply(context, args);\n }\n catch (e) {\n logErrorIfDebug(e);\n try {\n addMonitoringError(e);\n }\n catch (e) {\n logErrorIfDebug(e);\n }\n }\n}\nexport function addMonitoringMessage(message, context) {\n logMessageIfDebug(message, context);\n addToMonitoring(assign({\n message: message,\n status: \"debug\" /* debug */,\n }, context));\n}\nexport function addMonitoringError(e) {\n addToMonitoring(assign({\n status: \"error\" /* error */,\n }, formatError(e)));\n}\nfunction addToMonitoring(message) {\n if (onInternalMonitoringMessageCollected &&\n monitoringConfiguration.sentMessageCount < monitoringConfiguration.maxMessagesPerPage) {\n monitoringConfiguration.sentMessageCount += 1;\n onInternalMonitoringMessageCollected(message);\n }\n}\nfunction formatError(e) {\n if (e instanceof Error) {\n var stackTrace = computeStackTrace(e);\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(stackTrace),\n },\n message: stackTrace.message,\n };\n }\n return {\n error: {\n stack: 'Not an instance of error',\n },\n message: \"Uncaught \".concat(jsonStringify(e)),\n };\n}\nexport function setDebugMode(debugMode) {\n monitoringConfiguration.debugMode = debugMode;\n}\nfunction logErrorIfDebug(e) {\n if (monitoringConfiguration.debugMode) {\n display.error('[INTERNAL ERROR]', e);\n }\n}\nfunction logMessageIfDebug(message, context) {\n if (monitoringConfiguration.debugMode) {\n display.log('[MONITORING MESSAGE]', message, context);\n }\n}\n//# sourceMappingURL=internalMonitoring.js.map","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n try {\n return fn.apply(void 0, args);\n }\n catch (err) {\n display.error(errorMsg, err);\n }\n };\n}\n//# sourceMappingURL=catchUserErrors.js.map","var BUFFER_LIMIT = 500;\nvar BoundedBuffer = /** @class */ (function () {\n function BoundedBuffer() {\n this.buffer = [];\n }\n BoundedBuffer.prototype.add = function (callback) {\n var length = this.buffer.push(callback);\n if (length > BUFFER_LIMIT) {\n this.buffer.splice(0, 1);\n }\n };\n BoundedBuffer.prototype.drain = function () {\n this.buffer.forEach(function (callback) { return callback(); });\n this.buffer.length = 0;\n };\n return BoundedBuffer;\n}());\nexport { BoundedBuffer };\n//# sourceMappingURL=boundedBuffer.js.map","import { display } from '../tools/display';\nimport { findCommaSeparatedValue, generateUUID, ONE_SECOND } from '../tools/utils';\nexport var COOKIE_ACCESS_DELAY = ONE_SECOND;\nexport function setCookie(name, value, expireDelay, options) {\n var date = new Date();\n date.setTime(date.getTime() + expireDelay);\n var expires = \"expires=\".concat(date.toUTCString());\n var sameSite = options && options.crossSite ? 'none' : 'strict';\n var domain = options && options.domain ? \";domain=\".concat(options.domain) : '';\n var secure = options && options.secure ? ';secure' : '';\n document.cookie = \"\".concat(name, \"=\").concat(value, \";\").concat(expires, \";path=/;samesite=\").concat(sameSite).concat(domain).concat(secure);\n}\nexport function getCookie(name) {\n return findCommaSeparatedValue(document.cookie, name);\n}\nexport function deleteCookie(name, options) {\n setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n if (document.cookie === undefined || document.cookie === null) {\n return false;\n }\n try {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n var testCookieName = \"dd_cookie_test_\".concat(generateUUID());\n var testCookieValue = 'test';\n setCookie(testCookieName, testCookieValue, ONE_SECOND, options);\n var isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n deleteCookie(testCookieName, options);\n return isCookieCorrectlySet;\n }\n catch (error) {\n display.error(error);\n return false;\n }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nvar getCurrentSiteCache;\nexport function getCurrentSite() {\n if (getCurrentSiteCache === undefined) {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n var testCookieName = \"dd_site_test_\".concat(generateUUID());\n var testCookieValue = 'test';\n var domainLevels = window.location.hostname.split('.');\n var candidateDomain = domainLevels.pop();\n while (domainLevels.length && !getCookie(testCookieName)) {\n candidateDomain = \"\".concat(domainLevels.pop(), \".\").concat(candidateDomain);\n setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain });\n }\n deleteCookie(testCookieName, { domain: candidateDomain });\n getCurrentSiteCache = candidateDomain;\n }\n return getCurrentSiteCache;\n}\n//# sourceMappingURL=cookie.js.map","import { getLinkElementOrigin, getLocationOrigin } from './utils';\nexport function normalizeUrl(url) {\n return buildUrl(url, getLocationOrigin()).href;\n}\nexport function isValidUrl(url) {\n try {\n return !!buildUrl(url);\n }\n catch (_a) {\n return false;\n }\n}\nexport function haveSameOrigin(url1, url2) {\n return getOrigin(url1) === getOrigin(url2);\n}\nexport function getOrigin(url) {\n return getLinkElementOrigin(buildUrl(url));\n}\nexport function getPathName(url) {\n var pathname = buildUrl(url).pathname;\n return pathname[0] === '/' ? pathname : \"/\".concat(pathname);\n}\nexport function getSearch(url) {\n return buildUrl(url).search;\n}\nexport function getHash(url) {\n return buildUrl(url).hash;\n}\nexport function buildUrl(url, base) {\n if (checkURLSupported()) {\n return base !== undefined ? new URL(url, base) : new URL(url);\n }\n if (base === undefined && !/:/.test(url)) {\n throw new Error(\"Invalid URL: '\".concat(url, \"'\"));\n }\n var doc = document;\n var anchorElement = doc.createElement('a');\n if (base !== undefined) {\n doc = document.implementation.createHTMLDocument('');\n var 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}\nvar isURLSupported;\nfunction checkURLSupported() {\n if (isURLSupported !== undefined) {\n return isURLSupported;\n }\n try {\n var url = new URL('http://test/path');\n isURLSupported = url.href === 'http://test/path';\n return isURLSupported;\n }\n catch (_a) {\n isURLSupported = false;\n }\n return isURLSupported;\n}\n//# sourceMappingURL=urlPolyfill.js.map","import { getGlobalObject } from '..';\nexport function getEventBridge() {\n var eventBridgeGlobal = getEventBridgeGlobal();\n if (!eventBridgeGlobal) {\n return;\n }\n return {\n getAllowedWebViewHosts: function () {\n return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n },\n send: function (eventType, event) {\n eventBridgeGlobal.send(JSON.stringify({ eventType: eventType, event: event }));\n },\n };\n}\nexport function canUseEventBridge(hostname) {\n var _a;\n if (hostname === void 0) { hostname = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n var bridge = getEventBridge();\n return (!!bridge &&\n bridge.getAllowedWebViewHosts().some(function (host) {\n var escapedHost = host.replace(/\\./g, '\\\\.');\n var isDomainOrSubDomain = new RegExp(\"^(.+\\\\.)*\".concat(escapedHost, \"$\"));\n return isDomainOrSubDomain.test(hostname);\n }));\n}\nfunction getEventBridgeGlobal() {\n return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","import { timeStampNow } from '../../tools/timeUtils';\nimport { normalizeUrl } from '../../tools/urlPolyfill';\nimport { generateUUID } from '../../tools/utils';\nexport var ENDPOINTS = {\n logs: 'logs',\n rum: 'rum',\n sessionReplay: 'session-replay',\n};\nvar INTAKE_TRACKS = {\n logs: 'logs',\n rum: 'rum',\n sessionReplay: 'replay',\n};\nexport var INTAKE_SITE_US = 'datadoghq.com';\nexport function createEndpointBuilder(initConfiguration, endpointType, tags, source) {\n var _a = initConfiguration.site, site = _a === void 0 ? INTAKE_SITE_US : _a, clientToken = initConfiguration.clientToken;\n var domainParts = site.split('.');\n var extension = domainParts.pop();\n var host = \"\".concat(ENDPOINTS[endpointType], \".browser-intake-\").concat(domainParts.join('-'), \".\").concat(extension);\n var baseUrl = \"https://\".concat(host, \"/api/v2/\").concat(INTAKE_TRACKS[endpointType]);\n var proxyUrl = initConfiguration.proxyUrl && normalizeUrl(initConfiguration.proxyUrl);\n return {\n build: function () {\n var parameters = \"ddsource=\".concat(source || 'browser') +\n \"&ddtags=\".concat(encodeURIComponent([\"sdk_version:\".concat(\"4.8.1\")].concat(tags).join(','))) +\n \"&dd-api-key=\".concat(clientToken) +\n \"&dd-evp-origin-version=\".concat(encodeURIComponent(\"4.8.1\")) +\n '&dd-evp-origin=browser' +\n \"&dd-request-id=\".concat(generateUUID());\n if (endpointType === 'rum') {\n parameters += \"&batch_time=\".concat(timeStampNow());\n }\n var endpointUrl = \"\".concat(baseUrl, \"?\").concat(parameters);\n return proxyUrl ? \"\".concat(proxyUrl, \"?ddforward=\").concat(encodeURIComponent(endpointUrl)) : endpointUrl;\n },\n buildIntakeUrl: function () {\n return proxyUrl ? \"\".concat(proxyUrl, \"?ddforward\") : baseUrl;\n },\n };\n}\n//# sourceMappingURL=endpointBuilder.js.map","import { display } from '../../tools/display';\nexport var TAG_SIZE_LIMIT = 200;\nexport function buildTags(configuration) {\n var env = configuration.env, service = configuration.service, version = configuration.version, datacenter = configuration.datacenter;\n var tags = [];\n if (env) {\n tags.push(buildTag('env', env));\n }\n if (service) {\n tags.push(buildTag('service', service));\n }\n if (version) {\n tags.push(buildTag('version', version));\n }\n if (datacenter) {\n tags.push(buildTag('datacenter', datacenter));\n }\n return tags;\n}\nvar FORBIDDEN_CHARACTERS = /[^a-z0-9_:./-]/;\nexport function buildTag(key, rawValue) {\n // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n // that the backend may not follow the exact same rules, so we only want to display an informal\n // warning.\n var valueSizeLimit = TAG_SIZE_LIMIT - key.length - 1;\n if (rawValue.length > valueSizeLimit || FORBIDDEN_CHARACTERS.test(rawValue)) {\n display.warn(\"\".concat(key, \" value doesn't meet tag requirements and will be sanitized\"));\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 var sanitizedValue = rawValue.replace(/,/g, '_');\n return \"\".concat(key, \":\").concat(sanitizedValue);\n}\n//# sourceMappingURL=tags.js.map","import { getCurrentSite } from '../../browser/cookie';\nimport { catchUserErrors } from '../../tools/catchUserErrors';\nimport { display } from '../../tools/display';\nimport { assign, isPercentage, ONE_KILO_BYTE, ONE_SECOND } from '../../tools/utils';\nimport { updateExperimentalFeatures } from './experimentalFeatures';\nimport { computeTransportConfiguration } from './transportConfiguration';\nexport var DefaultPrivacyLevel = {\n ALLOW: 'allow',\n MASK: 'mask',\n MASK_USER_INPUT: 'mask-user-input',\n};\nexport function validateAndBuildConfiguration(initConfiguration) {\n var _a, _b;\n if (!initConfiguration || !initConfiguration.clientToken) {\n display.error('Client Token is not configured, we will not send any data.');\n return;\n }\n if (initConfiguration.sampleRate !== undefined && !isPercentage(initConfiguration.sampleRate)) {\n display.error('Sample Rate should be a number between 0 and 100');\n return;\n }\n if (initConfiguration.telemetrySampleRate !== undefined && !isPercentage(initConfiguration.telemetrySampleRate)) {\n display.error('Telemetry Sample Rate should be a number between 0 and 100');\n return;\n }\n // Set the experimental feature flags as early as possible, so we can use them in most places\n updateExperimentalFeatures(initConfiguration.enableExperimentalFeatures);\n return assign({\n beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n cookieOptions: buildCookieOptions(initConfiguration),\n sampleRate: (_a = initConfiguration.sampleRate) !== null && _a !== void 0 ? _a : 100,\n telemetrySampleRate: (_b = initConfiguration.telemetrySampleRate) !== null && _b !== void 0 ? _b : 20,\n service: initConfiguration.service,\n silentMultipleInit: !!initConfiguration.silentMultipleInit,\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_KILO_BYTE,\n eventRateLimiterThreshold: 3000,\n maxInternalMonitoringMessagesPerPage: 15,\n /**\n * flush automatically, aim to be lower than ALB connection timeout\n * to maximize connection reuse.\n */\n flushTimeout: 30 * ONE_SECOND,\n /**\n * Logs intake limit\n */\n maxBatchSize: 50,\n maxMessageSize: 256 * ONE_KILO_BYTE,\n }, computeTransportConfiguration(initConfiguration));\n}\nexport function buildCookieOptions(initConfiguration) {\n var cookieOptions = {};\n cookieOptions.secure = mustUseSecureCookie(initConfiguration);\n cookieOptions.crossSite = !!initConfiguration.useCrossSiteSessionCookie;\n if (initConfiguration.trackSessionAcrossSubdomains) {\n cookieOptions.domain = getCurrentSite();\n }\n return cookieOptions;\n}\nfunction mustUseSecureCookie(initConfiguration) {\n return !!initConfiguration.useSecureSessionCookie || !!initConfiguration.useCrossSiteSessionCookie;\n}\n//# sourceMappingURL=configuration.js.map","import { assign, objectValues } from '../../tools/utils';\nimport { createEndpointBuilder, INTAKE_SITE_US } from './endpointBuilder';\nimport { buildTags } from './tags';\nexport function computeTransportConfiguration(initConfiguration) {\n var tags = buildTags(initConfiguration);\n var endpointBuilders = computeEndpointBuilders(initConfiguration, tags);\n var intakeEndpoints = objectValues(endpointBuilders).map(function (builder) { return builder.buildIntakeUrl(); });\n var replicaConfiguration = computeReplicaConfiguration(initConfiguration, intakeEndpoints, tags);\n return assign({\n isIntakeUrl: function (url) { return intakeEndpoints.some(function (intakeEndpoint) { return url.indexOf(intakeEndpoint) === 0; }); },\n replica: replicaConfiguration,\n }, endpointBuilders);\n}\nfunction computeEndpointBuilders(initConfiguration, tags) {\n var endpointBuilders = {\n logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'sessionReplay', tags),\n };\n if (initConfiguration.internalMonitoringApiKey) {\n return assign(endpointBuilders, {\n internalMonitoringEndpointBuilder: createEndpointBuilder(assign({}, initConfiguration, { clientToken: initConfiguration.internalMonitoringApiKey }), 'logs', tags, 'browser-agent-internal-monitoring'),\n });\n }\n return endpointBuilders;\n}\nfunction computeReplicaConfiguration(initConfiguration, intakeEndpoints, tags) {\n if (!initConfiguration.replica) {\n return;\n }\n var replicaConfiguration = assign({}, initConfiguration, {\n site: INTAKE_SITE_US,\n clientToken: initConfiguration.replica.clientToken,\n });\n var replicaEndpointBuilders = {\n logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),\n internalMonitoringEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags, 'browser-agent-internal-monitoring'),\n };\n intakeEndpoints.push.apply(intakeEndpoints, objectValues(replicaEndpointBuilders).map(function (builder) { return builder.buildIntakeUrl(); }));\n return assign({ applicationId: initConfiguration.replica.applicationId }, replicaEndpointBuilders);\n}\n//# sourceMappingURL=transportConfiguration.js.map","import { getCookie } from '@datadog/browser-core';\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function getSyntheticsContext() {\n var testId = window._DATADOG_SYNTHETICS_PUBLIC_ID || getCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n var resultId = window._DATADOG_SYNTHETICS_RESULT_ID || getCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n if (typeof testId === 'string' && typeof resultId === 'string') {\n return {\n test_id: testId,\n result_id: resultId,\n injected: willSyntheticsInjectRum(),\n };\n }\n}\nexport function willSyntheticsInjectRum() {\n return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM || getCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\n//# sourceMappingURL=syntheticsContext.js.map","import { display } from '../tools/display';\nimport { addEventListener, jsonStringify, noop, objectValues } from '../tools/utils';\nimport { monitor } from '../domain/internalMonitoring';\n// https://en.wikipedia.org/wiki/UTF-8\n// eslint-disable-next-line no-control-regex\nvar HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nvar Batch = /** @class */ (function () {\n function Batch(request, maxSize, bytesLimit, maxMessageSize, flushTimeout, beforeUnloadCallback) {\n if (beforeUnloadCallback === void 0) { beforeUnloadCallback = noop; }\n this.request = request;\n this.maxSize = maxSize;\n this.bytesLimit = bytesLimit;\n this.maxMessageSize = maxMessageSize;\n this.flushTimeout = flushTimeout;\n this.beforeUnloadCallback = beforeUnloadCallback;\n this.pushOnlyBuffer = [];\n this.upsertBuffer = {};\n this.bufferBytesSize = 0;\n this.bufferMessageCount = 0;\n this.flushOnVisibilityHidden();\n this.flushPeriodically();\n }\n Batch.prototype.add = function (message) {\n this.addOrUpdate(message);\n };\n Batch.prototype.upsert = function (message, key) {\n this.addOrUpdate(message, key);\n };\n Batch.prototype.flush = function (reason) {\n if (this.bufferMessageCount !== 0) {\n var messages = this.pushOnlyBuffer.concat(objectValues(this.upsertBuffer));\n this.request.send(messages.join('\\n'), this.bufferBytesSize, reason);\n this.pushOnlyBuffer = [];\n this.upsertBuffer = {};\n this.bufferBytesSize = 0;\n this.bufferMessageCount = 0;\n }\n };\n Batch.prototype.sizeInBytes = function (candidate) {\n // Accurate byte size computations can degrade performances when there is a lot of events to process\n if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n return candidate.length;\n }\n if (window.TextEncoder !== undefined) {\n return new TextEncoder().encode(candidate).length;\n }\n return new Blob([candidate]).size;\n };\n Batch.prototype.addOrUpdate = function (message, key) {\n var _a = this.process(message), processedMessage = _a.processedMessage, messageBytesSize = _a.messageBytesSize;\n if (messageBytesSize >= this.maxMessageSize) {\n display.warn(\"Discarded a message whose size was bigger than the maximum allowed size \".concat(this.maxMessageSize, \"KB.\"));\n return;\n }\n if (this.hasMessageFor(key)) {\n this.remove(key);\n }\n if (this.willReachedBytesLimitWith(messageBytesSize)) {\n this.flush('willReachedBytesLimitWith');\n }\n this.push(processedMessage, messageBytesSize, key);\n if (this.isFull()) {\n this.flush('isFull');\n }\n };\n Batch.prototype.process = function (message) {\n var processedMessage = jsonStringify(message);\n var messageBytesSize = this.sizeInBytes(processedMessage);\n return { processedMessage: processedMessage, messageBytesSize: messageBytesSize };\n };\n Batch.prototype.push = function (processedMessage, messageBytesSize, key) {\n if (this.bufferMessageCount > 0) {\n // \\n separator at serialization\n this.bufferBytesSize += 1;\n }\n if (key !== undefined) {\n this.upsertBuffer[key] = processedMessage;\n }\n else {\n this.pushOnlyBuffer.push(processedMessage);\n }\n this.bufferBytesSize += messageBytesSize;\n this.bufferMessageCount += 1;\n };\n Batch.prototype.remove = function (key) {\n var removedMessage = this.upsertBuffer[key];\n delete this.upsertBuffer[key];\n var messageBytesSize = this.sizeInBytes(removedMessage);\n this.bufferBytesSize -= messageBytesSize;\n this.bufferMessageCount -= 1;\n if (this.bufferMessageCount > 0) {\n this.bufferBytesSize -= 1;\n }\n };\n Batch.prototype.hasMessageFor = function (key) {\n return key !== undefined && this.upsertBuffer[key] !== undefined;\n };\n Batch.prototype.willReachedBytesLimitWith = function (messageBytesSize) {\n // byte of the separator at the end of the message\n return this.bufferBytesSize + messageBytesSize + 1 >= this.bytesLimit;\n };\n Batch.prototype.isFull = function () {\n return this.bufferMessageCount === this.maxSize || this.bufferBytesSize >= this.bytesLimit;\n };\n Batch.prototype.flushPeriodically = function () {\n var _this = this;\n setTimeout(monitor(function () {\n _this.flush('flushPeriodically');\n _this.flushPeriodically();\n }), this.flushTimeout);\n };\n Batch.prototype.flushOnVisibilityHidden = function () {\n var _this = this;\n /**\n * With sendBeacon, requests are guaranteed to be successfully sent during document unload\n */\n // @ts-ignore this function is not always defined\n if (navigator.sendBeacon) {\n /**\n * beforeunload is called before visibilitychange\n * register first to be sure to be called before flush on beforeunload\n * caveat: unload can still be canceled by another listener\n */\n addEventListener(window, \"beforeunload\" /* BEFORE_UNLOAD */, this.beforeUnloadCallback);\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 addEventListener(document, \"visibilitychange\" /* VISIBILITY_CHANGE */, function () {\n if (document.visibilityState === 'hidden') {\n _this.flush(\"visibilitychange\" /* VISIBILITY_CHANGE */);\n }\n });\n /**\n * Safari does not support yet to send a request during:\n * - a visibility change during doc unload (cf: https://bugs.webkit.org/show_bug.cgi?id=194897)\n * - a page hide transition (cf: https://bugs.webkit.org/show_bug.cgi?id=188329)\n */\n addEventListener(window, \"beforeunload\" /* BEFORE_UNLOAD */, function () { return _this.flush(\"beforeunload\" /* BEFORE_UNLOAD */); });\n }\n };\n return Batch;\n}());\nexport { Batch };\n//# sourceMappingURL=batch.js.map","import { monitor, addMonitoringError, addMonitoringMessage } from '../domain/internalMonitoring';\nvar hasReportedXhrError = false;\n/**\n * Use POST request without content type to:\n * - avoid CORS preflight requests\n * - allow usage of sendBeacon\n *\n * multiple elements are sent separated by \\n in order\n * to be parsed correctly without content type header\n */\nvar HttpRequest = /** @class */ (function () {\n function HttpRequest(endpointBuilder, bytesLimit) {\n this.endpointBuilder = endpointBuilder;\n this.bytesLimit = bytesLimit;\n }\n HttpRequest.prototype.send = function (data, size, flushReason) {\n var url = this.endpointBuilder.build();\n var tryBeacon = !!navigator.sendBeacon && size < this.bytesLimit;\n if (tryBeacon) {\n try {\n var isQueued = navigator.sendBeacon(url, data);\n if (isQueued) {\n return;\n }\n }\n catch (e) {\n reportBeaconError(e);\n }\n }\n var transportIntrospection = function (event) {\n var req = event === null || event === void 0 ? void 0 : event.currentTarget;\n if (req.status >= 200 && req.status < 300) {\n return;\n }\n if (!hasReportedXhrError) {\n hasReportedXhrError = true;\n addMonitoringMessage('XHR fallback failed', {\n on_line: navigator.onLine,\n size: size,\n url: url,\n try_beacon: tryBeacon,\n flush_reason: flushReason,\n event: {\n is_trusted: event.isTrusted,\n total: event.total,\n loaded: event.loaded,\n },\n request: {\n status: req.status,\n ready_state: req.readyState,\n response_text: req.responseText.slice(0, 512),\n },\n });\n }\n };\n var request = new XMLHttpRequest();\n request.addEventListener('loadend', monitor(function (event) { return transportIntrospection(event); }));\n request.open('POST', url, true);\n request.send(data);\n };\n return HttpRequest;\n}());\nexport { HttpRequest };\nvar hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true;\n addMonitoringError(e);\n }\n}\n//# sourceMappingURL=httpRequest.js.map","import { monitor, Observable } from '@datadog/browser-core';\nexport function createDOMMutationObservable() {\n var MutationObserver = getMutationObserverConstructor();\n var observable = new Observable(function () {\n if (!MutationObserver) {\n return;\n }\n var observer = new MutationObserver(monitor(function () { return observable.notify(); }));\n observer.observe(document, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n });\n return function () { return observer.disconnect(); };\n });\n return observable;\n}\nexport function getMutationObserverConstructor() {\n var constructor;\n var browserWindow = window;\n // Angular uses Zone.js to provide a context persisting across async tasks. Zone.js replaces the\n // global MutationObserver constructor with a patched version to support the context propagation.\n // There is an ongoing issue[1][2] with this setup when using a MutationObserver within a Angular\n // component: on some occasions, the callback is being called in an infinite loop, causing the\n // page to freeze (even if the callback is completely empty).\n //\n // To work around this issue, we are using the Zone __symbol__ API to get the original, unpatched\n // MutationObserver constructor.\n //\n // [1] https://github.com/angular/angular/issues/26948\n // [2] https://github.com/angular/angular/issues/31712\n if (browserWindow.Zone) {\n var symbol = browserWindow.Zone.__symbol__('MutationObserver');\n constructor = browserWindow[symbol];\n }\n if (!constructor) {\n constructor = browserWindow.MutationObserver;\n }\n return constructor;\n}\n//# sourceMappingURL=domMutationObservable.js.map","import { assign, addMonitoringMessage, elapsed, getPathName, includes, isValidUrl, toServerDuration, } from '@datadog/browser-core';\nexport var FAKE_INITIAL_DOCUMENT = 'initial_document';\nvar RESOURCE_TYPES = [\n [\"document\" /* DOCUMENT */, function (initiatorType) { return FAKE_INITIAL_DOCUMENT === initiatorType; }],\n [\"xhr\" /* XHR */, function (initiatorType) { return 'xmlhttprequest' === initiatorType; }],\n [\"fetch\" /* FETCH */, function (initiatorType) { return 'fetch' === initiatorType; }],\n [\"beacon\" /* BEACON */, function (initiatorType) { return 'beacon' === initiatorType; }],\n [\"css\" /* CSS */, function (_, path) { return /\\.css$/i.test(path); }],\n [\"js\" /* JS */, function (_, path) { return /\\.js$/i.test(path); }],\n [\n \"image\" /* IMAGE */,\n function (initiatorType, path) {\n return includes(['image', 'img', 'icon'], initiatorType) || /\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i.exec(path) !== null;\n },\n ],\n [\"font\" /* FONT */, function (_, path) { return /\\.(woff|eot|woff2|ttf)$/i.exec(path) !== null; }],\n [\n \"media\" /* MEDIA */,\n function (initiatorType, path) {\n return includes(['audio', 'video'], initiatorType) || /\\.(mp3|mp4)$/i.exec(path) !== null;\n },\n ],\n];\nexport function computeResourceKind(timing) {\n var url = timing.name;\n if (!isValidUrl(url)) {\n addMonitoringMessage(\"Failed to construct URL for \\\"\".concat(timing.name, \"\\\"\"));\n return \"other\" /* OTHER */;\n }\n var path = getPathName(url);\n for (var _i = 0, RESOURCE_TYPES_1 = RESOURCE_TYPES; _i < RESOURCE_TYPES_1.length; _i++) {\n var _a = RESOURCE_TYPES_1[_i], type = _a[0], isType = _a[1];\n if (isType(timing.initiatorType, path)) {\n return type;\n }\n }\n return \"other\" /* OTHER */;\n}\nfunction areInOrder() {\n var numbers = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n numbers[_i] = arguments[_i];\n }\n for (var i = 1; i < numbers.length; i += 1) {\n if (numbers[i - 1] > numbers[i]) {\n return false;\n }\n }\n return true;\n}\nexport function isRequestKind(timing) {\n return timing.initiatorType === 'xmlhttprequest' || timing.initiatorType === 'fetch';\n}\nexport function computePerformanceResourceDuration(entry) {\n var duration = entry.duration, startTime = entry.startTime, responseEnd = entry.responseEnd;\n // Safari duration is always 0 on timings blocked by cross origin policies.\n if (duration === 0 && startTime < responseEnd) {\n return toServerDuration(elapsed(startTime, responseEnd));\n }\n return toServerDuration(duration);\n}\nexport function computePerformanceResourceDetails(entry) {\n var validEntry = toValidEntry(entry);\n if (!validEntry) {\n return undefined;\n }\n var startTime = validEntry.startTime, fetchStart = validEntry.fetchStart, redirectStart = validEntry.redirectStart, redirectEnd = validEntry.redirectEnd, domainLookupStart = validEntry.domainLookupStart, domainLookupEnd = validEntry.domainLookupEnd, connectStart = validEntry.connectStart, secureConnectionStart = validEntry.secureConnectionStart, connectEnd = validEntry.connectEnd, requestStart = validEntry.requestStart, responseStart = validEntry.responseStart, responseEnd = validEntry.responseEnd;\n var details = {\n download: formatTiming(startTime, responseStart, responseEnd),\n first_byte: formatTiming(startTime, requestStart, responseStart),\n };\n // Make sure a connection occurred\n if (connectEnd !== fetchStart) {\n details.connect = formatTiming(startTime, connectStart, connectEnd);\n // Make sure a secure connection occurred\n if (areInOrder(connectStart, secureConnectionStart, connectEnd)) {\n details.ssl = formatTiming(startTime, secureConnectionStart, connectEnd);\n }\n }\n // Make sure a domain lookup occurred\n if (domainLookupEnd !== fetchStart) {\n details.dns = formatTiming(startTime, domainLookupStart, domainLookupEnd);\n }\n if (hasRedirection(entry)) {\n details.redirect = formatTiming(startTime, redirectStart, redirectEnd);\n }\n return details;\n}\nexport function toValidEntry(entry) {\n // Ensure timings are in the right order. On top of filtering out potential invalid\n // RumPerformanceResourceTiming, it will ignore entries from requests where timings cannot be\n // collected, for example cross origin requests without a \"Timing-Allow-Origin\" header allowing\n // it.\n if (!areInOrder(entry.startTime, entry.fetchStart, entry.domainLookupStart, entry.domainLookupEnd, entry.connectStart, entry.connectEnd, entry.requestStart, entry.responseStart, entry.responseEnd)) {\n return undefined;\n }\n if (!hasRedirection(entry)) {\n return entry;\n }\n var redirectStart = entry.redirectStart, redirectEnd = entry.redirectEnd;\n // Firefox doesn't provide redirect timings on cross origin requests.\n // Provide a default for those.\n if (redirectStart < entry.startTime) {\n redirectStart = entry.startTime;\n }\n if (redirectEnd < entry.startTime) {\n redirectEnd = entry.fetchStart;\n }\n // Make sure redirect timings are in order\n if (!areInOrder(entry.startTime, redirectStart, redirectEnd, entry.fetchStart)) {\n return undefined;\n }\n return assign({}, entry, {\n redirectEnd: redirectEnd,\n redirectStart: redirectStart,\n });\n}\nfunction hasRedirection(entry) {\n // The only time fetchStart is different than startTime is if a redirection occurred.\n return entry.fetchStart !== entry.startTime;\n}\nfunction formatTiming(origin, start, end) {\n return {\n duration: toServerDuration(elapsed(start, end)),\n start: toServerDuration(elapsed(origin, start)),\n };\n}\nexport function computeSize(entry) {\n // Make sure a request actually occurred\n if (entry.startTime < entry.responseStart) {\n return entry.decodedBodySize;\n }\n return undefined;\n}\nexport function isAllowedRequestUrl(configuration, url) {\n return url && !configuration.isIntakeUrl(url);\n}\n//# sourceMappingURL=resourceUtils.js.map","import { findCommaSeparatedValue, ONE_MINUTE } from '@datadog/browser-core';\nexport var INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD = 2 * ONE_MINUTE;\nexport function getDocumentTraceId(document) {\n var data = getDocumentTraceDataFromMeta(document) || getDocumentTraceDataFromComment(document);\n if (!data || data.traceTime <= Date.now() - INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD) {\n return undefined;\n }\n return data.traceId;\n}\nexport function getDocumentTraceDataFromMeta(document) {\n var traceIdMeta = document.querySelector('meta[name=dd-trace-id]');\n var traceTimeMeta = document.querySelector('meta[name=dd-trace-time]');\n return createDocumentTraceData(traceIdMeta && traceIdMeta.content, traceTimeMeta && traceTimeMeta.content);\n}\nexport function getDocumentTraceDataFromComment(document) {\n var comment = findTraceComment(document);\n if (!comment) {\n return undefined;\n }\n return createDocumentTraceData(findCommaSeparatedValue(comment, 'trace-id'), findCommaSeparatedValue(comment, 'trace-time'));\n}\nexport function createDocumentTraceData(traceId, rawTraceTime) {\n var traceTime = rawTraceTime && Number(rawTraceTime);\n if (!traceId || !traceTime) {\n return undefined;\n }\n return {\n traceId: traceId,\n traceTime: traceTime,\n };\n}\nexport function findTraceComment(document) {\n // 1. Try to find the comment as a direct child of the document\n // Note: TSLint advises to use a 'for of', but TS doesn't allow to use 'for of' if the iterated\n // value is not an array or string (here, a NodeList).\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (var i = 0; i < document.childNodes.length; i += 1) {\n var comment = getTraceCommentFromNode(document.childNodes[i]);\n if (comment) {\n return comment;\n }\n }\n // 2. If the comment is placed after the tag, but have some space or new lines before or\n // after, the DOM parser will lift it (and the surrounding text) at the end of the tag.\n // Try to look for the comment at the end of the by by iterating over its child nodes in\n // reverse order, stopping if we come across a non-text node.\n if (document.body) {\n for (var i = document.body.childNodes.length - 1; i >= 0; i -= 1) {\n var node = document.body.childNodes[i];\n var comment = getTraceCommentFromNode(node);\n if (comment) {\n return comment;\n }\n if (!isTextNode(node)) {\n break;\n }\n }\n }\n}\nfunction getTraceCommentFromNode(node) {\n if (node && isCommentNode(node)) {\n var match = /^\\s*DATADOG;(.*?)\\s*$/.exec(node.data);\n if (match) {\n return match[1];\n }\n }\n}\nfunction isCommentNode(node) {\n return node.nodeName === '#comment';\n}\nfunction isTextNode(node) {\n return node.nodeName === '#text';\n}\n//# sourceMappingURL=getDocumentTraceId.js.map","import { assign, addEventListeners, getRelativeTime, isNumber, monitor, relativeNow, runOnReadyState, } from '@datadog/browser-core';\nimport { FAKE_INITIAL_DOCUMENT, isAllowedRequestUrl } from '../domain/rumEventsCollection/resource/resourceUtils';\nimport { getDocumentTraceId } from '../domain/tracing/getDocumentTraceId';\nfunction supportPerformanceObject() {\n return window.performance !== undefined && 'getEntries' in performance;\n}\nexport function supportPerformanceTimingEvent(entryType) {\n return (window.PerformanceObserver &&\n PerformanceObserver.supportedEntryTypes !== undefined &&\n PerformanceObserver.supportedEntryTypes.includes(entryType));\n}\nexport function supportPerformanceEntry() {\n // Safari 10 doesn't support PerformanceEntry\n return typeof PerformanceEntry === 'function';\n}\nexport function startPerformanceCollection(lifeCycle, configuration) {\n retrieveInitialDocumentResourceTiming(function (timing) {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n });\n if (supportPerformanceObject()) {\n var performanceEntries_1 = performance.getEntries();\n // Because the performance entry list can be quite large\n // delay the computation to prevent the SDK from blocking the main thread on init\n setTimeout(monitor(function () { return handleRumPerformanceEntries(lifeCycle, configuration, performanceEntries_1); }));\n }\n if (window.PerformanceObserver) {\n var handlePerformanceEntryList_1 = monitor(function (entries) {\n return handleRumPerformanceEntries(lifeCycle, configuration, entries.getEntries());\n });\n var mainEntries = ['resource', 'navigation', 'longtask', 'paint'];\n var experimentalEntries = ['largest-contentful-paint', 'first-input', 'layout-shift'];\n try {\n // Experimental entries are not retrieved by performance.getEntries()\n // use a single PerformanceObserver with buffered flag by type\n // to get values that could happen before SDK init\n experimentalEntries.forEach(function (type) {\n var observer = new PerformanceObserver(handlePerformanceEntryList_1);\n observer.observe({ type: type, buffered: true });\n });\n }\n catch (e) {\n // Some old browser versions (ex: chrome 67) don't support the PerformanceObserver type and buffered options\n // In these cases, fallback to PerformanceObserver with entryTypes\n mainEntries.push.apply(mainEntries, experimentalEntries);\n }\n var mainObserver = new PerformanceObserver(handlePerformanceEntryList_1);\n mainObserver.observe({ entryTypes: mainEntries });\n if (supportPerformanceObject() && 'addEventListener' in performance) {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1559377\n performance.addEventListener('resourcetimingbufferfull', function () {\n performance.clearResourceTimings();\n });\n }\n }\n if (!supportPerformanceTimingEvent('navigation')) {\n retrieveNavigationTiming(function (timing) {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n });\n }\n if (!supportPerformanceTimingEvent('first-input')) {\n retrieveFirstInputTiming(function (timing) {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n });\n }\n}\nexport function retrieveInitialDocumentResourceTiming(callback) {\n runOnReadyState('interactive', function () {\n var timing;\n var forcedAttributes = {\n entryType: 'resource',\n initiatorType: FAKE_INITIAL_DOCUMENT,\n traceId: getDocumentTraceId(document),\n };\n if (supportPerformanceTimingEvent('navigation') && performance.getEntriesByType('navigation').length > 0) {\n var navigationEntry = performance.getEntriesByType('navigation')[0];\n timing = assign(navigationEntry.toJSON(), forcedAttributes);\n }\n else {\n var relativePerformanceTiming = computeRelativePerformanceTiming();\n timing = assign(relativePerformanceTiming, {\n decodedBodySize: 0,\n duration: relativePerformanceTiming.responseEnd,\n name: window.location.href,\n startTime: 0,\n }, forcedAttributes);\n }\n callback(timing);\n });\n}\nfunction retrieveNavigationTiming(callback) {\n function sendFakeTiming() {\n callback(assign(computeRelativePerformanceTiming(), {\n entryType: 'navigation',\n }));\n }\n runOnReadyState('complete', function () {\n // Send it a bit after the actual load event, so the \"loadEventEnd\" timing is accurate\n setTimeout(monitor(sendFakeTiming));\n });\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 */\nfunction retrieveFirstInputTiming(callback) {\n var startTimeStamp = Date.now();\n var timingSent = false;\n var removeEventListeners = addEventListeners(window, [\"click\" /* CLICK */, \"mousedown\" /* MOUSE_DOWN */, \"keydown\" /* KEY_DOWN */, \"touchstart\" /* TOUCH_START */, \"pointerdown\" /* POINTER_DOWN */], function (evt) {\n // Only count cancelable events, which should trigger behavior important to the user.\n if (!evt.cancelable) {\n return;\n }\n // This timing will be used to compute the \"first Input delay\", which is the delta between\n // when the system received the event (e.g. evt.timeStamp) and when it could run the callback\n // (e.g. performance.now()).\n var timing = {\n entryType: 'first-input',\n processingStart: relativeNow(),\n startTime: evt.timeStamp,\n };\n if (evt.type === \"pointerdown\" /* POINTER_DOWN */) {\n sendTimingIfPointerIsNotCancelled(timing);\n }\n else {\n sendTiming(timing);\n }\n }, { passive: true, capture: true }).stop;\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(timing) {\n addEventListeners(window, [\"pointerup\" /* POINTER_UP */, \"pointercancel\" /* POINTER_CANCEL */], function (event) {\n if (event.type === \"pointerup\" /* POINTER_UP */) {\n sendTiming(timing);\n }\n }, { once: true });\n }\n function sendTiming(timing) {\n if (!timingSent) {\n timingSent = true;\n removeEventListeners();\n // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than\n // the time between now and when the page was loaded.\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7\n var delay = timing.processingStart - timing.startTime;\n if (delay >= 0 && delay < Date.now() - startTimeStamp) {\n callback(timing);\n }\n }\n }\n}\nfunction computeRelativePerformanceTiming() {\n var result = {};\n var timing = performance.timing;\n for (var key in timing) {\n if (isNumber(timing[key])) {\n var numberKey = key;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n var timingElement = timing[numberKey];\n result[numberKey] = timingElement === 0 ? 0 : getRelativeTime(timingElement);\n }\n }\n return result;\n}\nfunction handleRumPerformanceEntries(lifeCycle, configuration, entries) {\n var rumPerformanceEntries = entries.filter(function (entry) {\n return entry.entryType === 'resource' ||\n entry.entryType === 'navigation' ||\n entry.entryType === 'paint' ||\n entry.entryType === 'longtask' ||\n entry.entryType === 'largest-contentful-paint' ||\n entry.entryType === 'first-input' ||\n entry.entryType === 'layout-shift';\n });\n var rumAllowedPerformanceEntries = rumPerformanceEntries.filter(function (entry) { return !isIncompleteNavigation(entry) && !isForbiddenResource(configuration, entry); });\n if (rumAllowedPerformanceEntries.length) {\n lifeCycle.notify(0 /* PERFORMANCE_ENTRIES_COLLECTED */, rumAllowedPerformanceEntries);\n }\n}\nfunction isIncompleteNavigation(entry) {\n return entry.entryType === 'navigation' && entry.loadEventEnd <= 0;\n}\nfunction isForbiddenResource(configuration, entry) {\n return entry.entryType === 'resource' && !isAllowedRequestUrl(configuration, entry.name);\n}\n//# sourceMappingURL=performanceCollection.js.map","import { clocksNow, ErrorSource, ONE_MINUTE } from '..';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n var eventCount = 0;\n var allowNextEvent = false;\n return {\n isLimitReached: function () {\n if (eventCount === 0) {\n setTimeout(function () {\n eventCount = 0;\n }, ONE_MINUTE);\n }\n eventCount += 1;\n if (eventCount <= limit || allowNextEvent) {\n allowNextEvent = false;\n return false;\n }\n if (eventCount === limit + 1) {\n allowNextEvent = true;\n try {\n onLimitReached({\n message: \"Reached max number of \".concat(eventType, \"s by minute: \").concat(limit),\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n });\n }\n finally {\n allowNextEvent = false;\n }\n }\n return true;\n },\n };\n}\n//# sourceMappingURL=createEventRateLimiter.js.map","import { deepClone, getType } from './utils';\n/**\n * Current limitation:\n * - field path do not support array, 'a.b.c' only\n */\nexport function limitModification(object, modifiableFieldPaths, modifier) {\n var clone = deepClone(object);\n var result = modifier(clone);\n modifiableFieldPaths.forEach(function (path) {\n var originalValue = get(object, path);\n var newValue = get(clone, path);\n var originalType = getType(originalValue);\n var newType = getType(newValue);\n if (newType === originalType) {\n set(object, path, newValue);\n }\n else if (originalType === 'object' && (newType === 'undefined' || newType === 'null')) {\n set(object, path, {});\n }\n });\n return result;\n}\nfunction get(object, path) {\n var current = object;\n for (var _i = 0, _a = path.split('.'); _i < _a.length; _i++) {\n var field = _a[_i];\n if (!isValidObjectContaining(current, field)) {\n return;\n }\n current = current[field];\n }\n return current;\n}\nfunction set(object, path, value) {\n var current = object;\n var fields = path.split('.');\n for (var i = 0; i < fields.length; i += 1) {\n var field = fields[i];\n if (!isValidObjectContaining(current, field)) {\n return;\n }\n if (i !== fields.length - 1) {\n current = current[field];\n }\n else {\n current[field] = value;\n }\n }\n}\nfunction isValidObjectContaining(object, field) {\n return typeof object === 'object' && object !== null && field in object;\n}\n//# sourceMappingURL=limitModification.js.map","import { combine, isEmptyObject, limitModification, timeStampNow, currentDrift, display, createEventRateLimiter, canUseEventBridge, isExperimentalFeatureEnabled, } from '@datadog/browser-core';\nimport { getSyntheticsContext } from './syntheticsContext';\nimport { getCiTestContext } from './ciTestContext';\nvar VIEW_EVENTS_MODIFIABLE_FIELD_PATHS = [\n // Fields with sensitive data\n 'view.url',\n 'view.referrer',\n 'action.target.name',\n 'error.message',\n 'error.stack',\n 'error.resource.url',\n 'resource.url',\n];\nvar OTHER_EVENTS_MODIFIABLE_FIELD_PATHS = VIEW_EVENTS_MODIFIABLE_FIELD_PATHS.concat([\n // User-customizable field\n 'context',\n]);\nexport function startRumAssembly(configuration, lifeCycle, sessionManager, viewContexts, urlContexts, actionContexts, getCommonContext) {\n var _a;\n var reportError = function (error) {\n lifeCycle.notify(12 /* RAW_ERROR_COLLECTED */, { error: error });\n };\n var eventRateLimiters = (_a = {},\n _a[\"error\" /* ERROR */] = createEventRateLimiter(\"error\" /* ERROR */, configuration.eventRateLimiterThreshold, reportError),\n _a[\"action\" /* ACTION */] = createEventRateLimiter(\"action\" /* ACTION */, configuration.eventRateLimiterThreshold, reportError),\n _a);\n var syntheticsContext = getSyntheticsContext();\n var ciTestContext = getCiTestContext();\n lifeCycle.subscribe(10 /* RAW_RUM_EVENT_COLLECTED */, function (_a) {\n var startTime = _a.startTime, rawRumEvent = _a.rawRumEvent, domainContext = _a.domainContext, savedCommonContext = _a.savedCommonContext, customerContext = _a.customerContext;\n var viewContext = viewContexts.findView(startTime);\n var urlContext = urlContexts.findUrl(startTime);\n // allow to send events if the session was tracked when they start\n // except for views which are continuously updated\n // TODO: stop sending view updates when session is expired\n var session = sessionManager.findTrackedSession(rawRumEvent.type !== \"view\" /* VIEW */ ? startTime : undefined);\n if (session && viewContext && urlContext) {\n var commonContext = savedCommonContext || getCommonContext();\n var rumContext = {\n _dd: {\n format_version: 2,\n drift: currentDrift(),\n session: {\n plan: session.hasReplayPlan ? 2 /* REPLAY */ : 1 /* LITE */,\n },\n browser_sdk_version: canUseEventBridge() ? \"4.8.1\" : undefined,\n },\n application: {\n id: configuration.applicationId,\n },\n date: timeStampNow(),\n service: configuration.service,\n source: 'browser',\n session: {\n id: session.id,\n type: syntheticsContext ? \"synthetics\" /* SYNTHETICS */ : ciTestContext ? \"ci_test\" /* CI_TEST */ : \"user\" /* USER */,\n },\n synthetics: syntheticsContext,\n ci_test: ciTestContext,\n };\n var actionId = actionContexts.findActionId(startTime);\n if (!isExperimentalFeatureEnabled('sub-apps')) {\n delete viewContext.service;\n delete viewContext.version;\n }\n else {\n rumContext.version = configuration.version;\n }\n var serverRumEvent = (needToAssembleWithAction(rawRumEvent) && actionId\n ? combine(rumContext, urlContext, viewContext, { action: { id: actionId } }, rawRumEvent)\n : combine(rumContext, urlContext, viewContext, rawRumEvent));\n serverRumEvent.context = combine(commonContext.context, customerContext);\n if (!('has_replay' in serverRumEvent.session)) {\n ;\n serverRumEvent.session.has_replay = commonContext.hasReplay;\n }\n if (!isEmptyObject(commonContext.user)) {\n ;\n serverRumEvent.usr = commonContext.user;\n }\n if (shouldSend(serverRumEvent, configuration.beforeSend, domainContext, eventRateLimiters)) {\n if (isEmptyObject(serverRumEvent.context)) {\n delete serverRumEvent.context;\n }\n lifeCycle.notify(11 /* RUM_EVENT_COLLECTED */, serverRumEvent);\n }\n }\n });\n}\nfunction shouldSend(event, beforeSend, domainContext, eventRateLimiters) {\n var _a;\n if (beforeSend) {\n var result = limitModification(event, event.type === \"view\" /* VIEW */ ? VIEW_EVENTS_MODIFIABLE_FIELD_PATHS : OTHER_EVENTS_MODIFIABLE_FIELD_PATHS, function (event) { return beforeSend(event, domainContext); });\n if (result === false && event.type !== \"view\" /* VIEW */) {\n return false;\n }\n if (result === false) {\n display.warn(\"Can't dismiss view events using beforeSend!\");\n }\n }\n var rateLimitReached = (_a = eventRateLimiters[event.type]) === null || _a === void 0 ? void 0 : _a.isLimitReached();\n return !rateLimitReached;\n}\nfunction needToAssembleWithAction(event) {\n return [\"error\" /* ERROR */, \"resource\" /* RESOURCE */, \"long_task\" /* LONG_TASK */].indexOf(event.type) !== -1;\n}\n//# sourceMappingURL=assembly.js.map","export function getCiTestContext() {\n var _a;\n var testExecutionId = (_a = window.Cypress) === null || _a === void 0 ? void 0 : _a.env('traceId');\n if (typeof testExecutionId === 'string') {\n return {\n test_execution_id: testExecutionId,\n };\n }\n}\n//# sourceMappingURL=ciTestContext.js.map","import { addEventListener, elapsed, relativeNow, toServerDuration } from '@datadog/browser-core';\n// Arbitrary value to cap number of element mostly for backend & to save bandwidth\nexport var MAX_NUMBER_OF_SELECTABLE_FOREGROUND_PERIODS = 500;\n// Arbitrary value to cap number of element mostly for memory consumption in the browser\nexport var MAX_NUMBER_OF_STORED_FOREGROUND_PERIODS = 2500;\nvar foregroundPeriods = [];\nexport function startForegroundContexts() {\n if (document.hasFocus()) {\n addNewForegroundPeriod();\n }\n var stopForegroundTracking = trackFocus(addNewForegroundPeriod).stop;\n var stopBlurTracking = trackBlur(closeForegroundPeriod).stop;\n return {\n isInForegroundAt: isInForegroundAt,\n selectInForegroundPeriodsFor: selectInForegroundPeriodsFor,\n stop: function () {\n foregroundPeriods = [];\n stopForegroundTracking();\n stopBlurTracking();\n },\n };\n}\nexport function addNewForegroundPeriod() {\n if (foregroundPeriods.length > MAX_NUMBER_OF_STORED_FOREGROUND_PERIODS) {\n return;\n }\n var currentForegroundPeriod = foregroundPeriods[foregroundPeriods.length - 1];\n var now = relativeNow();\n if (currentForegroundPeriod !== undefined && currentForegroundPeriod.end === undefined) {\n return;\n }\n foregroundPeriods.push({\n start: now,\n });\n}\nexport function closeForegroundPeriod() {\n if (foregroundPeriods.length === 0) {\n return;\n }\n var currentForegroundPeriod = foregroundPeriods[foregroundPeriods.length - 1];\n var now = relativeNow();\n if (currentForegroundPeriod.end !== undefined) {\n return;\n }\n currentForegroundPeriod.end = now;\n}\nfunction trackFocus(onFocusChange) {\n return addEventListener(window, \"focus\" /* FOCUS */, function (event) {\n if (!event.isTrusted) {\n return;\n }\n onFocusChange();\n });\n}\nfunction trackBlur(onBlurChange) {\n return addEventListener(window, \"blur\" /* BLUR */, function (event) {\n if (!event.isTrusted) {\n return;\n }\n onBlurChange();\n });\n}\nfunction isInForegroundAt(startTime) {\n for (var i = foregroundPeriods.length - 1; i >= 0; i--) {\n var foregroundPeriod = foregroundPeriods[i];\n if (foregroundPeriod.end !== undefined && startTime > foregroundPeriod.end) {\n break;\n }\n if (startTime > foregroundPeriod.start &&\n (foregroundPeriod.end === undefined || startTime < foregroundPeriod.end)) {\n return true;\n }\n }\n return false;\n}\nfunction selectInForegroundPeriodsFor(eventStartTime, duration) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n var eventEndTime = (eventStartTime + duration);\n var filteredForegroundPeriods = [];\n var earliestIndex = Math.max(0, foregroundPeriods.length - MAX_NUMBER_OF_SELECTABLE_FOREGROUND_PERIODS);\n for (var i = foregroundPeriods.length - 1; i >= earliestIndex; i--) {\n var foregroundPeriod = foregroundPeriods[i];\n if (foregroundPeriod.end !== undefined && eventStartTime > foregroundPeriod.end) {\n // event starts after the end of the current focus period\n // since the array is sorted, we can stop looking for foreground periods\n break;\n }\n if (eventEndTime < foregroundPeriod.start) {\n // event ends before the start of the current focus period\n // continue to previous one\n continue;\n }\n var startTime = eventStartTime > foregroundPeriod.start ? eventStartTime : foregroundPeriod.start;\n var startDuration = elapsed(eventStartTime, startTime);\n var endTime = foregroundPeriod.end === undefined || eventEndTime < foregroundPeriod.end ? eventEndTime : foregroundPeriod.end;\n var endDuration = elapsed(startTime, endTime);\n filteredForegroundPeriods.unshift({\n start: toServerDuration(startDuration),\n duration: toServerDuration(endDuration),\n });\n }\n return filteredForegroundPeriods;\n}\n//# sourceMappingURL=foregroundContexts.js.map","var LifeCycle = /** @class */ (function () {\n function LifeCycle() {\n this.callbacks = {};\n }\n LifeCycle.prototype.notify = function (eventType, data) {\n var eventCallbacks = this.callbacks[eventType];\n if (eventCallbacks) {\n eventCallbacks.forEach(function (callback) { return callback(data); });\n }\n };\n LifeCycle.prototype.subscribe = function (eventType, callback) {\n var _this = this;\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = [];\n }\n this.callbacks[eventType].push(callback);\n return {\n unsubscribe: function () {\n _this.callbacks[eventType] = _this.callbacks[eventType].filter(function (other) { return callback !== other; });\n },\n };\n };\n return LifeCycle;\n}());\nexport { LifeCycle };\n//# sourceMappingURL=lifeCycle.js.map","import { getCookie, setCookie } from '../../browser/cookie';\nimport { isChromium } from '../../tools/browserDetection';\nimport * as utils from '../../tools/utils';\nimport { monitor } from '../internalMonitoring';\nimport { SESSION_EXPIRATION_DELAY } from './sessionStore';\nvar SESSION_ENTRY_REGEXP = /^([a-z]+)=([a-z0-9-]+)$/;\nvar SESSION_ENTRY_SEPARATOR = '&';\nexport var SESSION_COOKIE_NAME = '_dd_s';\n// arbitrary values\nexport var LOCK_RETRY_DELAY = 10;\nexport var MAX_NUMBER_OF_LOCK_RETRIES = 100;\nvar bufferedOperations = [];\nvar ongoingOperations;\nexport function withCookieLockAccess(operations, numberOfRetries) {\n var _a;\n if (numberOfRetries === void 0) { numberOfRetries = 0; }\n if (!ongoingOperations) {\n ongoingOperations = operations;\n }\n if (operations !== ongoingOperations) {\n bufferedOperations.push(operations);\n return;\n }\n if (numberOfRetries >= MAX_NUMBER_OF_LOCK_RETRIES) {\n next();\n return;\n }\n var currentLock;\n var currentSession = retrieveSession();\n if (isCookieLockEnabled()) {\n // if someone has lock, retry later\n if (currentSession.lock) {\n retryLater(operations, numberOfRetries);\n return;\n }\n // acquire lock\n currentLock = utils.generateUUID();\n currentSession.lock = currentLock;\n setSession(currentSession, operations.options);\n // if lock is not acquired, retry later\n currentSession = retrieveSession();\n if (currentSession.lock !== currentLock) {\n retryLater(operations, numberOfRetries);\n return;\n }\n }\n var processedSession = operations.process(currentSession);\n if (isCookieLockEnabled()) {\n // if lock corrupted after process, retry later\n currentSession = retrieveSession();\n if (currentSession.lock !== currentLock) {\n retryLater(operations, numberOfRetries);\n return;\n }\n }\n if (processedSession) {\n persistSession(processedSession, operations.options);\n }\n if (isCookieLockEnabled()) {\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 && isExpiredState(processedSession))) {\n // if lock corrupted after persist, retry later\n currentSession = retrieveSession();\n if (currentSession.lock !== currentLock) {\n retryLater(operations, numberOfRetries);\n return;\n }\n delete currentSession.lock;\n setSession(currentSession, operations.options);\n processedSession = currentSession;\n }\n }\n // call after even if session is not persisted in order to perform operations on\n // up-to-date cookie value, the value could have been modified by another tab\n (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentSession);\n next();\n}\n/**\n * Cookie lock strategy allows mitigating issues due to concurrent access to cookie.\n * This issue concerns only chromium browsers and enabling this on firefox increase cookie write failures.\n */\nfunction isCookieLockEnabled() {\n return isChromium();\n}\nfunction retryLater(operations, currentNumberOfRetries) {\n setTimeout(monitor(function () {\n withCookieLockAccess(operations, currentNumberOfRetries + 1);\n }), LOCK_RETRY_DELAY);\n}\nfunction next() {\n ongoingOperations = undefined;\n var nextOperations = bufferedOperations.shift();\n if (nextOperations) {\n withCookieLockAccess(nextOperations);\n }\n}\nexport function persistSession(session, options) {\n if (isExpiredState(session)) {\n clearSession(options);\n return;\n }\n session.expire = String(Date.now() + SESSION_EXPIRATION_DELAY);\n setSession(session, options);\n}\nfunction setSession(session, options) {\n setCookie(SESSION_COOKIE_NAME, toSessionString(session), SESSION_EXPIRATION_DELAY, options);\n}\nexport function toSessionString(session) {\n return utils\n .objectEntries(session)\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(key, \"=\").concat(value);\n })\n .join(SESSION_ENTRY_SEPARATOR);\n}\nexport function retrieveSession() {\n var sessionString = getCookie(SESSION_COOKIE_NAME);\n var session = {};\n if (isValidSessionString(sessionString)) {\n sessionString.split(SESSION_ENTRY_SEPARATOR).forEach(function (entry) {\n var matches = SESSION_ENTRY_REGEXP.exec(entry);\n if (matches !== null) {\n var key = matches[1], value = matches[2];\n session[key] = value;\n }\n });\n }\n return session;\n}\nfunction isValidSessionString(sessionString) {\n return (sessionString !== undefined &&\n (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));\n}\nfunction isExpiredState(session) {\n return utils.isEmptyObject(session);\n}\nfunction clearSession(options) {\n setCookie(SESSION_COOKIE_NAME, '', 0, options);\n}\n//# sourceMappingURL=sessionCookieStore.js.map","export function isIE() {\n return Boolean(document.documentMode);\n}\nexport function isChromium() {\n return !!window.chrome || /HeadlessChrome/.test(window.navigator.userAgent);\n}\n//# sourceMappingURL=browserDetection.js.map","import { COOKIE_ACCESS_DELAY } from '../../browser/cookie';\nimport { Observable } from '../../tools/observable';\nimport * as utils from '../../tools/utils';\nimport { monitor } from '../internalMonitoring';\nimport { retrieveSession, withCookieLockAccess } from './sessionCookieStore';\nexport var SESSION_EXPIRATION_DELAY = 15 * utils.ONE_MINUTE;\nexport var SESSION_TIME_OUT_DELAY = 4 * utils.ONE_HOUR;\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(options, productKey, computeSessionState) {\n var renewObservable = new Observable();\n var expireObservable = new Observable();\n var watchSessionTimeoutId = setInterval(monitor(watchSession), COOKIE_ACCESS_DELAY);\n var sessionCache = retrieveActiveSession();\n function expandOrRenewSession() {\n var isTracked;\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n var synchronizedSession = synchronizeSession(cookieSession);\n isTracked = expandOrRenewCookie(synchronizedSession);\n return synchronizedSession;\n },\n after: function (cookieSession) {\n if (isTracked && !hasSessionInCache()) {\n renewSession(cookieSession);\n }\n sessionCache = cookieSession;\n },\n });\n }\n function expandSession() {\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) { return (hasSessionInCache() ? synchronizeSession(cookieSession) : undefined); },\n });\n }\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session cookie\n * - if the session is not active, clear the session cookie and expire the session cache\n */\n function watchSession() {\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) { return (!isActiveSession(cookieSession) ? {} : undefined); },\n after: synchronizeSession,\n });\n }\n function synchronizeSession(cookieSession) {\n if (!isActiveSession(cookieSession)) {\n cookieSession = {};\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(cookieSession)) {\n expireSession();\n }\n else {\n sessionCache = cookieSession;\n }\n }\n return cookieSession;\n }\n function expandOrRenewCookie(cookieSession) {\n var _a = computeSessionState(cookieSession[productKey]), trackingType = _a.trackingType, isTracked = _a.isTracked;\n cookieSession[productKey] = trackingType;\n if (isTracked && !cookieSession.id) {\n cookieSession.id = utils.generateUUID();\n cookieSession.created = String(Date.now());\n }\n return isTracked;\n }\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined;\n }\n function isSessionInCacheOutdated(cookieSession) {\n return sessionCache.id !== cookieSession.id || sessionCache[productKey] !== cookieSession[productKey];\n }\n function expireSession() {\n sessionCache = {};\n expireObservable.notify();\n }\n function renewSession(cookieSession) {\n sessionCache = cookieSession;\n renewObservable.notify();\n }\n function retrieveActiveSession() {\n var session = retrieveSession();\n if (isActiveSession(session)) {\n return session;\n }\n return {};\n }\n function isActiveSession(session) {\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 ((session.created === undefined || Date.now() - Number(session.created) < SESSION_TIME_OUT_DELAY) &&\n (session.expire === undefined || Date.now() < Number(session.expire)));\n }\n return {\n expandOrRenewSession: utils.throttle(monitor(expandOrRenewSession), COOKIE_ACCESS_DELAY).throttled,\n expandSession: expandSession,\n getSession: function () { return sessionCache; },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n stop: function () {\n clearInterval(watchSessionTimeoutId);\n },\n };\n}\n//# sourceMappingURL=sessionStore.js.map","import { relativeNow } from './timeUtils';\nimport { ONE_MINUTE } from './utils';\nvar END_OF_TIMES = Infinity;\nexport var CLEAR_OLD_CONTEXTS_INTERVAL = ONE_MINUTE;\n/**\n * Store and keep track of contexts spans. This whole class assumes that contexts are added in\n * chronological order (i.e. all entries have an increasing start time).\n */\nvar ContextHistory = /** @class */ (function () {\n function ContextHistory(expireDelay) {\n var _this = this;\n this.expireDelay = expireDelay;\n this.entries = [];\n this.clearOldContextsInterval = setInterval(function () { return _this.clearOldContexts(); }, CLEAR_OLD_CONTEXTS_INTERVAL);\n }\n /**\n * Add a context 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 ContextHistory.prototype.add = function (context, startTime) {\n var _this = this;\n var entry = {\n context: context,\n startTime: startTime,\n endTime: END_OF_TIMES,\n remove: function () {\n var index = _this.entries.indexOf(entry);\n if (index >= 0) {\n _this.entries.splice(index, 1);\n }\n },\n close: function (endTime) {\n entry.endTime = endTime;\n },\n };\n this.entries.unshift(entry);\n return entry;\n };\n /**\n * Return the latest context that was active during `startTime`, or the currently active context\n * if no `startTime` is provided. This method assumes that entries are not overlapping.\n */\n ContextHistory.prototype.find = function (startTime) {\n if (startTime === void 0) { startTime = END_OF_TIMES; }\n for (var _i = 0, _a = this.entries; _i < _a.length; _i++) {\n var entry = _a[_i];\n if (entry.startTime <= startTime) {\n if (startTime <= entry.endTime) {\n return entry.context;\n }\n break;\n }\n }\n };\n /**\n * Helper function to close the currently active context, if any. This method assumes that entries\n * are not overlapping.\n */\n ContextHistory.prototype.closeActive = function (endTime) {\n var latestEntry = this.entries[0];\n if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n latestEntry.close(endTime);\n }\n };\n /**\n * Return all contexts that were active during `startTime`, or all currently active contexts if no\n * `startTime` is provided.\n */\n ContextHistory.prototype.findAll = function (startTime) {\n if (startTime === void 0) { startTime = END_OF_TIMES; }\n return this.entries\n .filter(function (entry) { return entry.startTime <= startTime && startTime <= entry.endTime; })\n .map(function (entry) { return entry.context; });\n };\n /**\n * Remove all entries from this collection.\n */\n ContextHistory.prototype.reset = function () {\n this.entries = [];\n };\n /**\n * Stop internal garbage collection of past entries.\n */\n ContextHistory.prototype.stop = function () {\n clearInterval(this.clearOldContextsInterval);\n };\n ContextHistory.prototype.clearOldContexts = function () {\n var oldTimeThreshold = relativeNow() - this.expireDelay;\n while (this.entries.length > 0 && this.entries[this.entries.length - 1].endTime < oldTimeThreshold) {\n this.entries.pop();\n }\n };\n return ContextHistory;\n}());\nexport { ContextHistory };\n//# sourceMappingURL=contextHistory.js.map","import { monitor } from '../domain/internalMonitoring';\nimport { instrumentMethodAndCallOriginal } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, relativeNow, clocksNow, timeStampNow } from '../tools/timeUtils';\nimport { normalizeUrl } from '../tools/urlPolyfill';\nimport { shallowClone } from '../tools/utils';\nvar xhrObservable;\nvar xhrContexts = new WeakMap();\nexport function initXhrObservable() {\n if (!xhrObservable) {\n xhrObservable = createXhrObservable();\n }\n return xhrObservable;\n}\nfunction createXhrObservable() {\n var observable = new Observable(function () {\n var stopInstrumentingStart = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'open', {\n before: openXhr,\n }).stop;\n var stopInstrumentingSend = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'send', {\n before: function () {\n sendXhr.call(this, observable);\n },\n }).stop;\n var stopInstrumentingAbort = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'abort', {\n before: abortXhr,\n }).stop;\n return function () {\n stopInstrumentingStart();\n stopInstrumentingSend();\n stopInstrumentingAbort();\n };\n });\n return observable;\n}\nfunction openXhr(method, url) {\n xhrContexts.set(this, {\n state: 'open',\n method: method,\n url: normalizeUrl(url.toString()),\n });\n}\nfunction sendXhr(observable) {\n var _this = this;\n var context = xhrContexts.get(this);\n if (!context) {\n return;\n }\n var startContext = context;\n startContext.state = 'start';\n startContext.startTime = relativeNow();\n startContext.startClocks = clocksNow();\n startContext.isAborted = false;\n startContext.xhr = this;\n var hasBeenReported = false;\n var stopInstrumentingOnReadyStateChange = instrumentMethodAndCallOriginal(this, 'onreadystatechange', {\n before: function () {\n if (this.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 a onreadystatechange event, so the status becomes '0'\n // before the request is collected.\n onEnd();\n }\n },\n }).stop;\n var onEnd = monitor(function () {\n _this.removeEventListener('loadend', onEnd);\n stopInstrumentingOnReadyStateChange();\n if (hasBeenReported) {\n return;\n }\n hasBeenReported = true;\n var completeContext = context;\n completeContext.state = 'complete';\n completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n completeContext.status = _this.status;\n observable.notify(shallowClone(completeContext));\n });\n this.addEventListener('loadend', onEnd);\n observable.notify(startContext);\n}\nfunction abortXhr() {\n var context = xhrContexts.get(this);\n if (context) {\n context.isAborted = true;\n }\n}\n//# sourceMappingURL=xhrObservable.js.map","import { callMonitored, monitor } from '../domain/internalMonitoring';\nimport { noop } from './utils';\nexport function instrumentMethod(object, method, instrumentationFactory) {\n var original = object[method];\n var instrumentation = instrumentationFactory(original);\n var instrumentationWrapper = function () {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return instrumentation.apply(this, arguments);\n };\n object[method] = instrumentationWrapper;\n return {\n stop: function () {\n if (object[method] === instrumentationWrapper) {\n object[method] = original;\n }\n else {\n instrumentation = original;\n }\n },\n };\n}\nexport function instrumentMethodAndCallOriginal(object, method, _a) {\n var before = _a.before, after = _a.after;\n return instrumentMethod(object, method, function (original) {\n return function () {\n var args = arguments;\n var result;\n if (before) {\n callMonitored(before, this, args);\n }\n if (typeof original === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n result = original.apply(this, args);\n }\n if (after) {\n callMonitored(after, this, args);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result;\n };\n });\n}\nexport function instrumentSetter(object, property, after) {\n var originalDescriptor = Object.getOwnPropertyDescriptor(object, property);\n if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n return { stop: noop };\n }\n var instrumentation = function (thisObject, value) {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(monitor(function () {\n after(thisObject, value);\n }), 0);\n };\n var instrumentationWrapper = function (value) {\n originalDescriptor.set.call(this, value);\n instrumentation(this, value);\n };\n Object.defineProperty(object, property, {\n set: instrumentationWrapper,\n });\n return {\n stop: function () {\n var _a;\n if (((_a = Object.getOwnPropertyDescriptor(object, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n Object.defineProperty(object, property, originalDescriptor);\n }\n else {\n instrumentation = noop;\n }\n },\n };\n}\n//# sourceMappingURL=instrumentMethod.js.map","import { monitor, callMonitored } from '../domain/internalMonitoring';\nimport { instrumentMethod } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, clocksNow, timeStampNow } from '../tools/timeUtils';\nimport { normalizeUrl } from '../tools/urlPolyfill';\nvar fetchObservable;\nexport function initFetchObservable() {\n if (!fetchObservable) {\n fetchObservable = createFetchObservable();\n }\n return fetchObservable;\n}\nfunction createFetchObservable() {\n var observable = new Observable(function () {\n if (!window.fetch) {\n return;\n }\n var stop = instrumentMethod(window, 'fetch', function (originalFetch) {\n return function (input, init) {\n var responsePromise;\n var context = callMonitored(beforeSend, null, [observable, input, init]);\n if (context) {\n responsePromise = originalFetch.call(this, context.input, context.init);\n callMonitored(afterSend, null, [observable, responsePromise, context]);\n }\n else {\n responsePromise = originalFetch.call(this, input, init);\n }\n return responsePromise;\n };\n }).stop;\n return stop;\n });\n return observable;\n}\nfunction beforeSend(observable, input, init) {\n var method = (init && init.method) || (typeof input === 'object' && input.method) || 'GET';\n var url = normalizeUrl((typeof input === 'object' && input.url) || input);\n var startClocks = clocksNow();\n var context = {\n state: 'start',\n init: init,\n input: input,\n method: method,\n startClocks: startClocks,\n url: url,\n };\n observable.notify(context);\n return context;\n}\nfunction afterSend(observable, responsePromise, startContext) {\n var reportFetch = function (response) {\n var context = startContext;\n context.state = 'complete';\n context.duration = elapsed(context.startClocks.timeStamp, timeStampNow());\n if ('stack' in response || response instanceof Error) {\n context.status = 0;\n context.isAborted = response instanceof DOMException && response.code === DOMException.ABORT_ERR;\n context.error = response;\n observable.notify(context);\n }\n else if ('status' in response) {\n context.response = response;\n context.responseType = response.type;\n context.status = response.status;\n context.isAborted = false;\n observable.notify(context);\n }\n };\n responsePromise.then(monitor(reportFetch), monitor(reportFetch));\n}\n//# sourceMappingURL=fetchObservable.js.map","import { getOrigin, objectEntries, shallowClone } from '@datadog/browser-core';\n/**\n * Clear tracing information to avoid incomplete traces. Ideally, we should do it when the the\n * request did not reach the server, but we the browser does not expose this. So, we clear tracing\n * information if the request ended with status 0 without being aborted by the application.\n *\n * Reasoning:\n *\n * * Applications are usually aborting requests after a bit of time, for example when the user is\n * typing (autocompletion) or navigating away (in a SPA). With a performant device and good\n * network conditions, the request is likely to reach the server before being canceled.\n *\n * * Requests aborted otherwise (ex: lack of internet, CORS issue, blocked by a privacy extension)\n * are likely to finish quickly and without reaching the server.\n *\n * Of course it might not be the case every time, but it should limit having incomplete traces a\n * bit..\n * */\nexport function clearTracingIfNeeded(context) {\n if (context.status === 0 && !context.isAborted) {\n context.traceId = undefined;\n context.spanId = undefined;\n }\n}\nexport function startTracer(configuration, sessionManager) {\n return {\n clearTracingIfNeeded: clearTracingIfNeeded,\n traceFetch: function (context) {\n return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n var _a;\n if (context.input instanceof Request && !((_a = context.init) === null || _a === void 0 ? void 0 : _a.headers)) {\n context.input = new Request(context.input);\n Object.keys(tracingHeaders).forEach(function (key) {\n ;\n context.input.headers.append(key, tracingHeaders[key]);\n });\n }\n else {\n context.init = shallowClone(context.init);\n var headers_1 = [];\n if (context.init.headers instanceof Headers) {\n context.init.headers.forEach(function (value, key) {\n headers_1.push([key, value]);\n });\n }\n else if (Array.isArray(context.init.headers)) {\n context.init.headers.forEach(function (header) {\n headers_1.push(header);\n });\n }\n else if (context.init.headers) {\n Object.keys(context.init.headers).forEach(function (key) {\n headers_1.push([key, context.init.headers[key]]);\n });\n }\n context.init.headers = headers_1.concat(objectEntries(tracingHeaders));\n }\n });\n },\n traceXhr: function (context, xhr) {\n return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n Object.keys(tracingHeaders).forEach(function (name) {\n xhr.setRequestHeader(name, tracingHeaders[name]);\n });\n });\n },\n };\n}\nfunction injectHeadersIfTracingAllowed(configuration, context, sessionManager, inject) {\n if (!isTracingSupported() || !isAllowedUrl(configuration, context.url) || !sessionManager.findTrackedSession()) {\n return;\n }\n context.traceId = new TraceIdentifier();\n context.spanId = new TraceIdentifier();\n inject(makeTracingHeaders(context.traceId, context.spanId));\n}\nfunction isAllowedUrl(configuration, requestUrl) {\n var requestOrigin = getOrigin(requestUrl);\n for (var _i = 0, _a = configuration.allowedTracingOrigins; _i < _a.length; _i++) {\n var allowedOrigin = _a[_i];\n if (requestOrigin === allowedOrigin || (allowedOrigin instanceof RegExp && allowedOrigin.test(requestOrigin))) {\n return true;\n }\n }\n return false;\n}\nexport function isTracingSupported() {\n return getCrypto() !== undefined;\n}\nfunction getCrypto() {\n return window.crypto || window.msCrypto;\n}\nfunction makeTracingHeaders(traceId, spanId) {\n return {\n 'x-datadog-origin': 'rum',\n 'x-datadog-parent-id': spanId.toDecimalString(),\n 'x-datadog-sampled': '1',\n 'x-datadog-sampling-priority': '1',\n 'x-datadog-trace-id': traceId.toDecimalString(),\n };\n}\n/* eslint-disable no-bitwise */\nvar TraceIdentifier = /** @class */ (function () {\n function TraceIdentifier() {\n this.buffer = new Uint8Array(8);\n getCrypto().getRandomValues(this.buffer);\n this.buffer[0] = this.buffer[0] & 0x7f; // force 63-bit\n }\n TraceIdentifier.prototype.toString = function (radix) {\n var high = this.readInt32(0);\n var low = this.readInt32(4);\n var str = '';\n do {\n var mod = (high % radix) * 4294967296 + low;\n high = Math.floor(high / radix);\n low = Math.floor(mod / radix);\n str = (mod % radix).toString(radix) + str;\n } while (high || low);\n return str;\n };\n /**\n * Format used everywhere except the trace intake\n */\n TraceIdentifier.prototype.toDecimalString = function () {\n return this.toString(10);\n };\n TraceIdentifier.prototype.readInt32 = function (offset) {\n return (this.buffer[offset] * 16777216 +\n (this.buffer[offset + 1] << 16) +\n (this.buffer[offset + 2] << 8) +\n this.buffer[offset + 3]);\n };\n return TraceIdentifier;\n}());\nexport { TraceIdentifier };\n/* eslint-enable no-bitwise */\n//# sourceMappingURL=tracer.js.map","import { initFetchObservable, initXhrObservable } from '@datadog/browser-core';\nimport { isAllowedRequestUrl } from './rumEventsCollection/resource/resourceUtils';\nimport { startTracer } from './tracing/tracer';\nvar nextRequestIndex = 1;\nexport function startRequestCollection(lifeCycle, configuration, sessionManager) {\n var tracer = startTracer(configuration, sessionManager);\n trackXhr(lifeCycle, configuration, tracer);\n trackFetch(lifeCycle, configuration, tracer);\n}\nexport function trackXhr(lifeCycle, configuration, tracer) {\n var subscription = initXhrObservable().subscribe(function (rawContext) {\n var context = rawContext;\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return;\n }\n switch (context.state) {\n case 'start':\n tracer.traceXhr(context, context.xhr);\n context.requestIndex = getNextRequestIndex();\n lifeCycle.notify(5 /* REQUEST_STARTED */, {\n requestIndex: context.requestIndex,\n });\n break;\n case 'complete':\n tracer.clearTracingIfNeeded(context);\n lifeCycle.notify(6 /* 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 type: \"xhr\" /* XHR */,\n url: context.url,\n xhr: context.xhr,\n });\n break;\n }\n });\n return { stop: function () { return subscription.unsubscribe(); } };\n}\nexport function trackFetch(lifeCycle, configuration, tracer) {\n var subscription = initFetchObservable().subscribe(function (rawContext) {\n var context = rawContext;\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return;\n }\n switch (context.state) {\n case 'start':\n tracer.traceFetch(context);\n context.requestIndex = getNextRequestIndex();\n lifeCycle.notify(5 /* REQUEST_STARTED */, {\n requestIndex: context.requestIndex,\n });\n break;\n case 'complete':\n tracer.clearTracingIfNeeded(context);\n lifeCycle.notify(6 /* REQUEST_COMPLETED */, {\n duration: context.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 type: \"fetch\" /* FETCH */,\n url: context.url,\n response: context.response,\n init: context.init,\n input: context.input,\n });\n break;\n }\n });\n return { stop: function () { return subscription.unsubscribe(); } };\n}\nfunction getNextRequestIndex() {\n var result = nextRequestIndex;\n nextRequestIndex += 1;\n return result;\n}\n//# sourceMappingURL=requestCollection.js.map","import { noop } from '@datadog/browser-core';\nexport function trackEventCounts(lifeCycle, callback) {\n if (callback === void 0) { callback = noop; }\n var eventCounts = {\n errorCount: 0,\n longTaskCount: 0,\n resourceCount: 0,\n userActionCount: 0,\n };\n var subscription = lifeCycle.subscribe(11 /* RUM_EVENT_COLLECTED */, function (_a) {\n var type = _a.type;\n switch (type) {\n case \"error\" /* ERROR */:\n eventCounts.errorCount += 1;\n callback(eventCounts);\n break;\n case \"action\" /* ACTION */:\n eventCounts.userActionCount += 1;\n callback(eventCounts);\n break;\n case \"long_task\" /* LONG_TASK */:\n eventCounts.longTaskCount += 1;\n callback(eventCounts);\n break;\n case \"resource\" /* RESOURCE */:\n eventCounts.resourceCount += 1;\n callback(eventCounts);\n break;\n }\n });\n return {\n stop: function () {\n subscription.unsubscribe();\n },\n eventCounts: eventCounts,\n };\n}\n//# sourceMappingURL=trackEventCounts.js.map","import { monitor, Observable, timeStampNow } from '@datadog/browser-core';\n// Delay to wait for a page activity to validate the tracking process\nexport var PAGE_ACTIVITY_VALIDATION_DELAY = 100;\n// Delay to wait after a page activity to end the tracking process\nexport var PAGE_ACTIVITY_END_DELAY = 100;\n/**\n * Wait for the next idle page time\n *\n * Detection lifecycle:\n * ```\n * Wait idle page\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 waitIdlePage(lifeCycle, domMutationObservable, idlePageCallback, maxDuration) {\n var pageActivityObservable = createPageActivityObservable(lifeCycle, domMutationObservable);\n return doWaitIdlePage(pageActivityObservable, idlePageCallback, maxDuration);\n}\nexport function doWaitIdlePage(pageActivityObservable, idlePageCallback, maxDuration) {\n var idleTimeoutId;\n var hasCompleted = false;\n var validationTimeoutId = setTimeout(monitor(function () { return complete({ hadActivity: false }); }), PAGE_ACTIVITY_VALIDATION_DELAY);\n var maxDurationTimeoutId = maxDuration &&\n setTimeout(monitor(function () { return complete({ hadActivity: true, end: timeStampNow() }); }), maxDuration);\n var pageActivitySubscription = pageActivityObservable.subscribe(function (_a) {\n var isBusy = _a.isBusy;\n clearTimeout(validationTimeoutId);\n clearTimeout(idleTimeoutId);\n var lastChangeTime = timeStampNow();\n if (!isBusy) {\n idleTimeoutId = setTimeout(monitor(function () { return complete({ hadActivity: true, end: lastChangeTime }); }), PAGE_ACTIVITY_END_DELAY);\n }\n });\n var stop = function () {\n hasCompleted = true;\n clearTimeout(validationTimeoutId);\n clearTimeout(idleTimeoutId);\n clearTimeout(maxDurationTimeoutId);\n pageActivitySubscription.unsubscribe();\n };\n function complete(event) {\n if (hasCompleted) {\n return;\n }\n stop();\n idlePageCallback(event);\n }\n return { stop: stop };\n}\nexport function createPageActivityObservable(lifeCycle, domMutationObservable) {\n var observable = new Observable(function () {\n var subscriptions = [];\n var firstRequestIndex;\n var pendingRequestsCount = 0;\n subscriptions.push(domMutationObservable.subscribe(function () { return notifyPageActivity(pendingRequestsCount); }), lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n if (entries.some(function (_a) {\n var entryType = _a.entryType;\n return entryType === 'resource';\n })) {\n notifyPageActivity(pendingRequestsCount);\n }\n }), lifeCycle.subscribe(5 /* REQUEST_STARTED */, function (startEvent) {\n if (firstRequestIndex === undefined) {\n firstRequestIndex = startEvent.requestIndex;\n }\n notifyPageActivity(++pendingRequestsCount);\n }), lifeCycle.subscribe(6 /* REQUEST_COMPLETED */, function (request) {\n // If the request started before the tracking start, ignore it\n if (firstRequestIndex === undefined || request.requestIndex < firstRequestIndex) {\n return;\n }\n notifyPageActivity(--pendingRequestsCount);\n }));\n return function () { return subscriptions.forEach(function (s) { return s.unsubscribe(); }); };\n });\n function notifyPageActivity(pendingRequestsCount) {\n observable.notify({ isBusy: pendingRequestsCount > 0 });\n }\n return observable;\n}\n//# sourceMappingURL=waitIdlePage.js.map","import { safeTruncate, isIE } from '@datadog/browser-core';\n/**\n * Get the action name from the attribute 'data-dd-action-name' on the element or any of its parent.\n * It can also be retrieved from a user defined attribute.\n */\nvar DEFAULT_PROGRAMMATIC_ATTRIBUTE = 'data-dd-action-name';\nexport function getActionNameFromElement(element, userProgrammaticAttribute) {\n // Proceed to get the action name in two steps:\n // * first, get the name programmatically, explicitly defined by the user.\n // * then, use strategies that are known to return good results. Those strategies will be used on\n // the element and a few parents, but it's likely that they won't succeed at all.\n // * if no name is found this way, use strategies returning less accurate names as a fallback.\n // Those are much likely to succeed.\n return (getActionNameFromElementProgrammatically(element, DEFAULT_PROGRAMMATIC_ATTRIBUTE) ||\n (userProgrammaticAttribute && getActionNameFromElementProgrammatically(element, userProgrammaticAttribute)) ||\n getActionNameFromElementForStrategies(element, userProgrammaticAttribute, priorityStrategies) ||\n getActionNameFromElementForStrategies(element, userProgrammaticAttribute, fallbackStrategies) ||\n '');\n}\nfunction getActionNameFromElementProgrammatically(targetElement, programmaticAttribute) {\n var elementWithAttribute;\n // We don't use getActionNameFromElementForStrategies here, because we want to consider all parents,\n // without limit. It is up to the user to declare a relevant naming strategy.\n // If available, use element.closest() to match get the attribute from the element or any of its\n // parent. Else fallback to a more traditional implementation.\n if (supportsElementClosest()) {\n elementWithAttribute = targetElement.closest(\"[\".concat(programmaticAttribute, \"]\"));\n }\n else {\n var element = targetElement;\n while (element) {\n if (element.hasAttribute(programmaticAttribute)) {\n elementWithAttribute = element;\n break;\n }\n element = element.parentElement;\n }\n }\n if (!elementWithAttribute) {\n return;\n }\n var name = elementWithAttribute.getAttribute(programmaticAttribute);\n return truncate(normalizeWhitespace(name.trim()));\n}\nvar priorityStrategies = [\n // associated LABEL text\n function (element, userProgrammaticAttribute) {\n // IE does not support element.labels, so we fallback to a CSS selector based on the element id\n // instead\n if (supportsLabelProperty()) {\n if ('labels' in element && element.labels && element.labels.length > 0) {\n return getTextualContent(element.labels[0], userProgrammaticAttribute);\n }\n }\n else if (element.id) {\n var label = element.ownerDocument && element.ownerDocument.querySelector(\"label[for=\\\"\".concat(element.id.replace('\"', '\\\\\"'), \"\\\"]\"));\n return label && getTextualContent(label, userProgrammaticAttribute);\n }\n },\n // INPUT button (and associated) value\n function (element) {\n if (element.nodeName === 'INPUT') {\n var input = element;\n var type = input.getAttribute('type');\n if (type === 'button' || type === 'submit' || type === 'reset') {\n return input.value;\n }\n }\n },\n // BUTTON, LABEL or button-like element text\n function (element, userProgrammaticAttribute) {\n if (element.nodeName === 'BUTTON' || element.nodeName === 'LABEL' || element.getAttribute('role') === 'button') {\n return getTextualContent(element, userProgrammaticAttribute);\n }\n },\n function (element) { return element.getAttribute('aria-label'); },\n // associated element text designated by the aria-labelledby attribute\n function (element, userProgrammaticAttribute) {\n var labelledByAttribute = element.getAttribute('aria-labelledby');\n if (labelledByAttribute) {\n return labelledByAttribute\n .split(/\\s+/)\n .map(function (id) { return getElementById(element, id); })\n .filter(function (label) { return Boolean(label); })\n .map(function (element) { return getTextualContent(element, userProgrammaticAttribute); })\n .join(' ');\n }\n },\n function (element) { return element.getAttribute('alt'); },\n function (element) { return element.getAttribute('name'); },\n function (element) { return element.getAttribute('title'); },\n function (element) { return element.getAttribute('placeholder'); },\n // SELECT first OPTION text\n function (element, userProgrammaticAttribute) {\n if ('options' in element && element.options.length > 0) {\n return getTextualContent(element.options[0], userProgrammaticAttribute);\n }\n },\n];\nvar fallbackStrategies = [\n function (element, userProgrammaticAttribute) { return getTextualContent(element, userProgrammaticAttribute); },\n];\n/**\n * Iterates over the target element and its parent, using the strategies list to get an action name.\n * Each strategies are applied on each element, stopping as soon as a non-empty value is returned.\n */\nvar MAX_PARENTS_TO_CONSIDER = 10;\nfunction getActionNameFromElementForStrategies(targetElement, userProgrammaticAttribute, strategies) {\n var element = targetElement;\n var recursionCounter = 0;\n while (recursionCounter <= MAX_PARENTS_TO_CONSIDER &&\n element &&\n element.nodeName !== 'BODY' &&\n element.nodeName !== 'HTML' &&\n element.nodeName !== 'HEAD') {\n for (var _i = 0, strategies_1 = strategies; _i < strategies_1.length; _i++) {\n var strategy = strategies_1[_i];\n var name_1 = strategy(element, userProgrammaticAttribute);\n if (typeof name_1 === 'string') {\n var trimmedName = name_1.trim();\n if (trimmedName) {\n return truncate(normalizeWhitespace(trimmedName));\n }\n }\n }\n // Consider a FORM as a contextual limit to get the action name. This is experimental and may\n // be reconsidered in the future.\n if (element.nodeName === 'FORM') {\n break;\n }\n element = element.parentElement;\n recursionCounter += 1;\n }\n}\nfunction normalizeWhitespace(s) {\n return s.replace(/\\s+/g, ' ');\n}\nfunction truncate(s) {\n return s.length > 100 ? \"\".concat(safeTruncate(s, 100), \" [...]\") : s;\n}\nfunction getElementById(refElement, id) {\n // Use the element ownerDocument here, because tests are executed in an iframe, so\n // document.getElementById won't work.\n return refElement.ownerDocument ? refElement.ownerDocument.getElementById(id) : null;\n}\nfunction getTextualContent(element, userProgrammaticAttribute) {\n if (element.isContentEditable) {\n return;\n }\n if ('innerText' in element) {\n var text_1 = element.innerText;\n var removeTextFromElements = function (query) {\n var list = element.querySelectorAll(query);\n for (var index = 0; index < list.length; index += 1) {\n var element_1 = list[index];\n if ('innerText' in element_1) {\n var textToReplace = element_1.innerText;\n if (textToReplace && textToReplace.trim().length > 0) {\n text_1 = text_1.replace(textToReplace, '');\n }\n }\n }\n };\n if (!supportsInnerTextScriptAndStyleRemoval()) {\n // remove the inner text of SCRIPT and STYLES from the result. This is a bit dirty, but should\n // be relatively fast and work in most cases.\n removeTextFromElements('script, style');\n }\n // remove the text of elements with programmatic attribute value\n removeTextFromElements(\"[\".concat(DEFAULT_PROGRAMMATIC_ATTRIBUTE, \"]\"));\n if (userProgrammaticAttribute) {\n removeTextFromElements(\"[\".concat(userProgrammaticAttribute, \"]\"));\n }\n return text_1;\n }\n return element.textContent;\n}\n/**\n * Returns true if element.innerText excludes the text from inline SCRIPT and STYLE element. This\n * should be the case everywhere except on Internet Explorer 10 and 11 (see [1])\n *\n * The innerText property relies on what is actually rendered to compute its output, so to check if\n * it actually excludes SCRIPT and STYLE content, a solution would be to create a style element, set\n * its content to '*', inject it in the document body, and check if the style element innerText\n * property returns '*'. Using a new `document` instance won't work as it is not rendered.\n *\n * This solution requires specific CSP rules (see [2]) to be set by the customer. We want to avoid\n * this, so instead we rely on browser detection. In case of false negative, the impact should be\n * low, since we rely on this result to remove the SCRIPT and STYLE innerText (which will be empty)\n * from a parent element innerText.\n *\n * [1]: https://web.archive.org/web/20210602165716/http://perfectionkills.com/the-poor-misunderstood-innerText/#diff-with-textContent\n * [2]: https://github.com/DataDog/browser-sdk/issues/1084\n */\nfunction supportsInnerTextScriptAndStyleRemoval() {\n return !isIE();\n}\n/**\n * Returns true if the browser supports the element.labels property. This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsLabelPropertyResult;\nfunction supportsLabelProperty() {\n if (supportsLabelPropertyResult === undefined) {\n supportsLabelPropertyResult = 'labels' in HTMLInputElement.prototype;\n }\n return supportsLabelPropertyResult;\n}\n/**\n * Returns true if the browser supports the element.closest method. This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsElementClosestResult;\nfunction supportsElementClosest() {\n if (supportsElementClosestResult === undefined) {\n supportsElementClosestResult = 'closest' in HTMLElement.prototype;\n }\n return supportsElementClosestResult;\n}\n//# sourceMappingURL=getActionNameFromElement.js.map","import { isExperimentalFeatureEnabled, getRelativeTime, ONE_MINUTE, ContextHistory, addEventListener, generateUUID, clocksNow, ONE_SECOND, elapsed, } from '@datadog/browser-core';\nimport { trackEventCounts } from '../../trackEventCounts';\nimport { waitIdlePage } from '../../waitIdlePage';\nimport { getActionNameFromElement } from './getActionNameFromElement';\n// Maximum duration for automatic actions\nexport var AUTO_ACTION_MAX_DURATION = 10 * ONE_SECOND;\nexport var ACTION_CONTEXT_TIME_OUT_DELAY = 5 * ONE_MINUTE; // arbitrary\nexport function trackActions(lifeCycle, domMutationObservable, _a) {\n var actionNameAttribute = _a.actionNameAttribute;\n var history = new ContextHistory(ACTION_CONTEXT_TIME_OUT_DELAY);\n lifeCycle.subscribe(8 /* SESSION_RENEWED */, function () {\n history.reset();\n });\n var stopListener = listenEvents(function (event) {\n if (!isExperimentalFeatureEnabled('frustration-signals') && history.find()) {\n // Ignore any new action if another one is already occurring.\n return;\n }\n var name = getActionNameFromElement(event.target, actionNameAttribute);\n if (!name) {\n return;\n }\n var actionController = newAction(lifeCycle, domMutationObservable, \"click\" /* CLICK */, name, event, function (endTime) {\n historyEntry.close(getRelativeTime(endTime));\n }, function () {\n historyEntry.remove();\n });\n var historyEntry = history.add(actionController, actionController.startClocks.relative);\n }).stop;\n var actionContexts = {\n findActionId: function (startTime) {\n var _a;\n return isExperimentalFeatureEnabled('frustration-signals')\n ? history.findAll(startTime).map(function (controller) { return controller.id; })\n : (_a = history.find(startTime)) === null || _a === void 0 ? void 0 : _a.id;\n },\n };\n return {\n stop: function () {\n history.findAll().forEach(function (actionController) { return actionController.discard(); });\n stopListener();\n },\n actionContexts: actionContexts,\n };\n}\nfunction listenEvents(callback) {\n return addEventListener(window, \"click\" /* CLICK */, function (event) {\n if (event.target instanceof Element) {\n callback(event);\n }\n }, { capture: true });\n}\nfunction newAction(lifeCycle, domMutationObservable, type, name, event, onCompleteCallback, onDiscardCallback) {\n var id = generateUUID();\n var startClocks = clocksNow();\n var eventCountsSubscription = trackEventCounts(lifeCycle);\n var stopWaitingIdlePage = waitIdlePage(lifeCycle, domMutationObservable, function (idleEvent) {\n if (idleEvent.hadActivity && startClocks.timeStamp <= idleEvent.end) {\n complete(idleEvent.end);\n }\n else {\n discard();\n }\n }, AUTO_ACTION_MAX_DURATION).stop;\n var viewCreatedSubscription;\n if (!isExperimentalFeatureEnabled('frustration-signals')) {\n // New views trigger the discard of the current pending Action\n viewCreatedSubscription = lifeCycle.subscribe(2 /* VIEW_CREATED */, discard);\n }\n function complete(endTime) {\n cleanup();\n var eventCounts = eventCountsSubscription.eventCounts;\n lifeCycle.notify(1 /* AUTO_ACTION_COMPLETED */, {\n counts: {\n errorCount: eventCounts.errorCount,\n longTaskCount: eventCounts.longTaskCount,\n resourceCount: eventCounts.resourceCount,\n },\n duration: elapsed(startClocks.timeStamp, endTime),\n id: id,\n name: name,\n startClocks: startClocks,\n type: type,\n event: event,\n });\n onCompleteCallback(endTime);\n }\n function discard() {\n cleanup();\n onDiscardCallback();\n }\n function cleanup() {\n stopWaitingIdlePage();\n eventCountsSubscription.stop();\n if (viewCreatedSubscription) {\n viewCreatedSubscription.unsubscribe();\n }\n }\n return {\n discard: discard,\n id: id,\n startClocks: startClocks,\n };\n}\n//# sourceMappingURL=trackActions.js.map","import { noop, assign, combine, toServerDuration, generateUUID } from '@datadog/browser-core';\nimport { trackActions } from './trackActions';\nexport function startActionCollection(lifeCycle, domMutationObservable, configuration, foregroundContexts) {\n lifeCycle.subscribe(1 /* AUTO_ACTION_COMPLETED */, function (action) {\n return lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processAction(action, foregroundContexts));\n });\n var actionContexts = { findActionId: noop };\n if (configuration.trackInteractions) {\n actionContexts = trackActions(lifeCycle, domMutationObservable, configuration).actionContexts;\n }\n return {\n addAction: function (action, savedCommonContext) {\n lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, assign({\n savedCommonContext: savedCommonContext,\n }, processAction(action, foregroundContexts)));\n },\n actionContexts: actionContexts,\n };\n}\nfunction processAction(action, foregroundContexts) {\n var autoActionProperties = isAutoAction(action)\n ? {\n action: {\n error: {\n count: action.counts.errorCount,\n },\n id: action.id,\n loading_time: toServerDuration(action.duration),\n long_task: {\n count: action.counts.longTaskCount,\n },\n resource: {\n count: action.counts.resourceCount,\n },\n },\n }\n : undefined;\n var customerContext = !isAutoAction(action) ? action.context : undefined;\n var actionEvent = combine({\n action: {\n id: generateUUID(),\n target: {\n name: action.name,\n },\n type: action.type,\n },\n date: action.startClocks.timeStamp,\n type: \"action\" /* ACTION */,\n }, autoActionProperties);\n var inForeground = foregroundContexts.isInForegroundAt(action.startClocks.relative);\n if (inForeground !== undefined) {\n actionEvent.view = { in_foreground: inForeground };\n }\n return {\n customerContext: customerContext,\n rawRumEvent: actionEvent,\n startTime: action.startClocks.relative,\n domainContext: isAutoAction(action) ? { event: action.event } : {},\n };\n}\nfunction isAutoAction(action) {\n return action.type !== \"custom\" /* CUSTOM */;\n}\n//# sourceMappingURL=actionCollection.js.map","import { instrumentMethodAndCallOriginal } from '../../tools/instrumentMethod';\nimport { computeStackTrace } from './computeStackTrace';\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n/**\n * Cross-browser collection of unhandled errors\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Tries to catch all unhandled errors and report them to the\n * callback.\n *\n * Callbacks receive a StackTrace object as described in the\n * computeStackTrace docs.\n *\n * @memberof TraceKit\n * @namespace\n */\nexport function startUnhandledErrorCollection(callback) {\n var stopInstrumentingOnError = instrumentOnError(callback).stop;\n var stopInstrumentingOnUnhandledRejection = instrumentUnhandledRejection(callback).stop;\n return {\n stop: function () {\n stopInstrumentingOnError();\n stopInstrumentingOnUnhandledRejection();\n },\n };\n}\n/**\n * Install a global onerror handler\n */\nfunction instrumentOnError(callback) {\n return instrumentMethodAndCallOriginal(window, 'onerror', {\n before: function (message, url, lineNo, columnNo, errorObj) {\n var stack;\n if (errorObj) {\n stack = computeStackTrace(errorObj);\n callback(stack, errorObj);\n }\n else {\n var location_1 = {\n url: url,\n column: columnNo,\n line: lineNo,\n };\n var name_1;\n var msg = message;\n if ({}.toString.call(message) === '[object String]') {\n var groups = ERROR_TYPES_RE.exec(msg);\n if (groups) {\n name_1 = groups[1];\n msg = groups[2];\n }\n }\n stack = {\n name: name_1,\n message: typeof msg === 'string' ? msg : undefined,\n stack: [location_1],\n };\n callback(stack, message);\n }\n },\n });\n}\n/**\n * Install a global onunhandledrejection handler\n */\nfunction instrumentUnhandledRejection(callback) {\n return instrumentMethodAndCallOriginal(window, 'onunhandledrejection', {\n before: function (e) {\n var reason = e.reason || 'Empty reason';\n var stack = computeStackTrace(reason);\n callback(stack, reason);\n },\n });\n}\n//# sourceMappingURL=tracekit.js.map","import { callMonitored } from '../internalMonitoring';\nimport { computeStackTrace } from '../tracekit';\nimport { createHandlingStack, formatErrorMessage, toStackTraceString } from '../../tools/error';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { find, jsonStringify } from '../../tools/utils';\nexport var ConsoleApiName = {\n log: 'log',\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error',\n};\nvar consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n var consoleObservables = apis.map(function (api) {\n if (!consoleObservablesByApi[api]) {\n consoleObservablesByApi[api] = createConsoleObservable(api);\n }\n return consoleObservablesByApi[api];\n });\n return mergeObservables.apply(void 0, consoleObservables);\n}\n/* eslint-disable no-console */\nfunction createConsoleObservable(api) {\n var observable = new Observable(function () {\n var originalConsoleApi = console[api];\n console[api] = function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n originalConsoleApi.apply(console, params);\n var handlingStack = createHandlingStack();\n callMonitored(function () {\n observable.notify(buildConsoleLog(params, api, handlingStack));\n });\n };\n return function () {\n console[api] = originalConsoleApi;\n };\n });\n return observable;\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n // Todo: remove console error prefix in the next major version\n var message = params.map(function (param) { return formatConsoleParameters(param); }).join(' ');\n var stack;\n if (api === ConsoleApiName.error) {\n var firstErrorParam = find(params, function (param) { return param instanceof Error; });\n stack = firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined;\n message = \"console error: \".concat(message);\n }\n return {\n api: api,\n message: message,\n stack: stack,\n handlingStack: handlingStack,\n };\n}\nfunction formatConsoleParameters(param) {\n if (typeof param === 'string') {\n return param;\n }\n if (param instanceof Error) {\n return formatErrorMessage(computeStackTrace(param));\n }\n return jsonStringify(param, undefined, 2);\n}\n//# sourceMappingURL=consoleObservable.js.map","import { toStackTraceString } from '../../tools/error';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { includes, addEventListener, safeTruncate } from '../../tools/utils';\nimport { monitor } from '../internalMonitoring';\nexport var RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation',\n};\nexport function initReportObservable(apis) {\n var observables = [];\n if (includes(apis, RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable());\n }\n var reportTypes = apis.filter(function (api) { return api !== RawReportType.cspViolation; });\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes));\n }\n return mergeObservables.apply(void 0, observables);\n}\nfunction createReportObservable(reportTypes) {\n var observable = new Observable(function () {\n if (!window.ReportingObserver) {\n return;\n }\n var handleReports = monitor(function (reports) {\n return reports.forEach(function (report) {\n observable.notify(buildRawReportFromReport(report));\n });\n });\n var observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true,\n });\n observer.observe();\n return function () {\n observer.disconnect();\n };\n });\n return observable;\n}\nfunction createCspViolationReportObservable() {\n var observable = new Observable(function () {\n var handleCspViolation = monitor(function (event) {\n observable.notify(buildRawReportFromCspViolation(event));\n });\n var stop = addEventListener(document, \"securitypolicyviolation\" /* SECURITY_POLICY_VIOLATION */, handleCspViolation).stop;\n return stop;\n });\n return observable;\n}\nfunction buildRawReportFromReport(_a) {\n var type = _a.type, body = _a.body;\n return {\n type: type,\n subtype: body.id,\n message: \"\".concat(type, \": \").concat(body.message),\n stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n };\n}\nfunction buildRawReportFromCspViolation(event) {\n var type = RawReportType.cspViolation;\n var message = \"'\".concat(event.blockedURI, \"' blocked by '\").concat(event.effectiveDirective, \"' directive\");\n return {\n type: RawReportType.cspViolation,\n subtype: event.effectiveDirective,\n message: \"\".concat(type, \": \").concat(message),\n stack: buildStack(event.effectiveDirective, \"\".concat(message, \" of the policy \\\"\").concat(safeTruncate(event.originalPolicy, 100, '...'), \"\\\"\"), event.sourceFile, event.lineNumber, event.columnNumber),\n };\n}\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n return (sourceFile &&\n toStackTraceString({\n name: name,\n message: message,\n stack: [\n {\n func: '?',\n url: sourceFile,\n line: lineNumber,\n column: columnNumber,\n },\n ],\n }));\n}\n//# sourceMappingURL=reportObservable.js.map","import { addEventListeners } from '@datadog/browser-core';\nvar trackFirstHiddenSingleton;\nvar stopListeners;\nexport function trackFirstHidden(emitter) {\n if (emitter === void 0) { emitter = window; }\n if (!trackFirstHiddenSingleton) {\n if (document.visibilityState === 'hidden') {\n trackFirstHiddenSingleton = {\n timeStamp: 0,\n };\n }\n else {\n trackFirstHiddenSingleton = {\n timeStamp: Infinity,\n };\n (stopListeners = addEventListeners(emitter, [\"pagehide\" /* PAGE_HIDE */, \"visibilitychange\" /* VISIBILITY_CHANGE */], function (event) {\n if (event.type === 'pagehide' || document.visibilityState === 'hidden') {\n trackFirstHiddenSingleton.timeStamp = event.timeStamp;\n stopListeners();\n }\n }, { capture: true }).stop);\n }\n }\n return trackFirstHiddenSingleton;\n}\nexport function resetFirstHidden() {\n if (stopListeners) {\n stopListeners();\n }\n trackFirstHiddenSingleton = undefined;\n}\n//# sourceMappingURL=trackFirstHidden.js.map","import { assign, computeStackTrace, formatUnknownError, ErrorSource, generateUUID, Observable, trackRuntimeError, } from '@datadog/browser-core';\nimport { trackConsoleError } from './trackConsoleError';\nimport { trackReportError } from './trackReportError';\nexport function startErrorCollection(lifeCycle, foregroundContexts) {\n var errorObservable = new Observable();\n trackConsoleError(errorObservable);\n trackRuntimeError(errorObservable);\n trackReportError(errorObservable);\n errorObservable.subscribe(function (error) { return lifeCycle.notify(12 /* RAW_ERROR_COLLECTED */, { error: error }); });\n return doStartErrorCollection(lifeCycle, foregroundContexts);\n}\nexport function doStartErrorCollection(lifeCycle, foregroundContexts) {\n lifeCycle.subscribe(12 /* RAW_ERROR_COLLECTED */, function (_a) {\n var error = _a.error, customerContext = _a.customerContext, savedCommonContext = _a.savedCommonContext;\n lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, assign({\n customerContext: customerContext,\n savedCommonContext: savedCommonContext,\n }, processError(error, foregroundContexts)));\n });\n return {\n addError: function (_a, savedCommonContext) {\n var error = _a.error, handlingStack = _a.handlingStack, startClocks = _a.startClocks, customerContext = _a.context;\n var rawError = computeRawError(error, handlingStack, startClocks);\n lifeCycle.notify(12 /* RAW_ERROR_COLLECTED */, {\n customerContext: customerContext,\n savedCommonContext: savedCommonContext,\n error: rawError,\n });\n },\n };\n}\nfunction computeRawError(error, handlingStack, startClocks) {\n var stackTrace = error instanceof Error ? computeStackTrace(error) : undefined;\n return assign({\n startClocks: startClocks,\n source: ErrorSource.CUSTOM,\n originalError: error,\n handling: \"handled\" /* HANDLED */,\n }, formatUnknownError(stackTrace, error, 'Provided', handlingStack));\n}\nfunction processError(error, foregroundContexts) {\n var rawRumEvent = {\n date: error.startClocks.timeStamp,\n error: {\n id: generateUUID(),\n message: error.message,\n source: error.source,\n stack: error.stack,\n handling_stack: error.handlingStack,\n type: error.type,\n handling: error.handling,\n source_type: 'browser',\n },\n type: \"error\" /* ERROR */,\n };\n var inForeground = foregroundContexts.isInForegroundAt(error.startClocks.relative);\n if (inForeground !== undefined) {\n rawRumEvent.view = { in_foreground: inForeground };\n }\n return {\n rawRumEvent: rawRumEvent,\n startTime: error.startClocks.relative,\n domainContext: {\n error: error.originalError,\n },\n };\n}\n//# sourceMappingURL=errorCollection.js.map","import { clocksNow, initConsoleObservable, ErrorSource, ConsoleApiName } from '@datadog/browser-core';\nexport function trackConsoleError(errorObservable) {\n var subscription = initConsoleObservable([ConsoleApiName.error]).subscribe(function (consoleError) {\n return errorObservable.notify({\n startClocks: clocksNow(),\n message: consoleError.message,\n stack: consoleError.stack,\n source: ErrorSource.CONSOLE,\n handling: \"handled\" /* HANDLED */,\n handlingStack: consoleError.handlingStack,\n });\n });\n return {\n stop: function () {\n subscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=trackConsoleError.js.map","import { ErrorSource, formatUnknownError } from '../../tools/error';\nimport { clocksNow } from '../../tools/timeUtils';\nimport { startUnhandledErrorCollection } from '../tracekit';\nexport function trackRuntimeError(errorObservable) {\n return startUnhandledErrorCollection(function (stackTrace, errorObject) {\n var _a = formatUnknownError(stackTrace, errorObject, 'Uncaught'), stack = _a.stack, message = _a.message, type = _a.type;\n errorObservable.notify({\n message: message,\n stack: stack,\n type: type,\n source: ErrorSource.SOURCE,\n startClocks: clocksNow(),\n originalError: errorObject,\n handling: \"unhandled\" /* UNHANDLED */,\n });\n });\n}\n//# sourceMappingURL=trackRuntimeError.js.map","import { clocksNow, ErrorSource, initReportObservable, RawReportType } from '@datadog/browser-core';\nexport function trackReportError(errorObservable) {\n var subscription = initReportObservable([RawReportType.cspViolation, RawReportType.intervention]).subscribe(function (reportError) {\n return errorObservable.notify({\n startClocks: clocksNow(),\n message: reportError.message,\n stack: reportError.stack,\n type: reportError.subtype,\n source: ErrorSource.REPORT,\n handling: \"unhandled\" /* UNHANDLED */,\n });\n });\n return {\n stop: function () {\n subscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=trackReportError.js.map","import { toValidEntry } from './resourceUtils';\n/**\n * Look for corresponding timing in resource timing buffer\n *\n * Observations:\n * - Timing (start, end) are nested inside the request (start, end)\n * - Some timing can be not exactly nested, being off by < 1 ms\n * - Browsers generate a timing entry for OPTIONS request\n *\n * Strategy:\n * - from valid nested entries (with 1 ms error margin)\n * - if a single timing match, return the timing\n * - if two following timings match (OPTIONS request), return the timing for the actual request\n * - otherwise we can't decide, return undefined\n */\nexport function matchRequestTiming(request) {\n if (!performance || !('getEntriesByName' in performance)) {\n return;\n }\n var sameNameEntries = performance.getEntriesByName(request.url, 'resource');\n if (!sameNameEntries.length || !('toJSON' in sameNameEntries[0])) {\n return;\n }\n var candidates = sameNameEntries\n .map(function (entry) { return entry.toJSON(); })\n .filter(toValidEntry)\n .filter(function (entry) {\n return isBetween(entry, request.startClocks.relative, endTime({ startTime: request.startClocks.relative, duration: request.duration }));\n });\n if (candidates.length === 1) {\n return candidates[0];\n }\n if (candidates.length === 2 && firstCanBeOptionRequest(candidates)) {\n return candidates[1];\n }\n return;\n}\nfunction firstCanBeOptionRequest(correspondingEntries) {\n return endTime(correspondingEntries[0]) <= correspondingEntries[1].startTime;\n}\nfunction endTime(timing) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n return (timing.startTime + timing.duration);\n}\nfunction isBetween(timing, start, end) {\n var errorMargin = 1;\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n return timing.startTime >= start - errorMargin && endTime(timing) <= end + errorMargin;\n}\n//# sourceMappingURL=matchRequestTiming.js.map","import { combine, generateUUID, toServerDuration, relativeToClocks, assign, } from '@datadog/browser-core';\nimport { supportPerformanceEntry } from '../../../browser/performanceCollection';\nimport { matchRequestTiming } from './matchRequestTiming';\nimport { computePerformanceResourceDetails, computePerformanceResourceDuration, computeResourceKind, computeSize, isRequestKind, } from './resourceUtils';\nexport function startResourceCollection(lifeCycle) {\n lifeCycle.subscribe(6 /* REQUEST_COMPLETED */, function (request) {\n lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processRequest(request));\n });\n lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.entryType === 'resource' && !isRequestKind(entry)) {\n lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processResourceEntry(entry));\n }\n }\n });\n}\nfunction processRequest(request) {\n var type = request.type === \"xhr\" /* XHR */ ? \"xhr\" /* XHR */ : \"fetch\" /* FETCH */;\n var matchingTiming = matchRequestTiming(request);\n var startClocks = matchingTiming ? relativeToClocks(matchingTiming.startTime) : request.startClocks;\n var correspondingTimingOverrides = matchingTiming ? computePerformanceEntryMetrics(matchingTiming) : undefined;\n var tracingInfo = computeRequestTracingInfo(request);\n var resourceEvent = combine({\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n type: type,\n duration: toServerDuration(request.duration),\n method: request.method,\n status_code: request.status,\n url: request.url,\n },\n type: \"resource\" /* RESOURCE */,\n }, tracingInfo, correspondingTimingOverrides);\n return {\n startTime: startClocks.relative,\n rawRumEvent: resourceEvent,\n domainContext: {\n performanceEntry: matchingTiming && toPerformanceEntryRepresentation(matchingTiming),\n xhr: request.xhr,\n response: request.response,\n requestInput: request.input,\n requestInit: request.init,\n error: request.error,\n },\n };\n}\nfunction processResourceEntry(entry) {\n var type = computeResourceKind(entry);\n var entryMetrics = computePerformanceEntryMetrics(entry);\n var tracingInfo = computeEntryTracingInfo(entry);\n var startClocks = relativeToClocks(entry.startTime);\n var resourceEvent = combine({\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n type: type,\n url: entry.name,\n },\n type: \"resource\" /* RESOURCE */,\n }, tracingInfo, entryMetrics);\n return {\n startTime: startClocks.relative,\n rawRumEvent: resourceEvent,\n domainContext: {\n performanceEntry: toPerformanceEntryRepresentation(entry),\n },\n };\n}\nfunction computePerformanceEntryMetrics(timing) {\n return {\n resource: assign({\n duration: computePerformanceResourceDuration(timing),\n size: computeSize(timing),\n }, computePerformanceResourceDetails(timing)),\n };\n}\nfunction computeRequestTracingInfo(request) {\n var hasBeenTraced = request.traceId && request.spanId;\n if (!hasBeenTraced) {\n return undefined;\n }\n return {\n _dd: {\n span_id: request.spanId.toDecimalString(),\n trace_id: request.traceId.toDecimalString(),\n },\n };\n}\nfunction computeEntryTracingInfo(entry) {\n return entry.traceId ? { _dd: { trace_id: entry.traceId } } : undefined;\n}\nfunction toPerformanceEntryRepresentation(entry) {\n if (supportPerformanceEntry() && entry instanceof PerformanceEntry) {\n entry.toJSON();\n }\n return entry;\n}\n//# sourceMappingURL=resourceCollection.js.map","import { assign, addEventListeners, elapsed, ONE_MINUTE, find, findLast } from '@datadog/browser-core';\nimport { trackFirstHidden } from './trackFirstHidden';\n// Discard LCP and FCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport var TIMING_MAXIMUM_DELAY = 10 * ONE_MINUTE;\nexport function trackInitialViewTimings(lifeCycle, callback) {\n var timings = {};\n function setTimings(newTimings) {\n assign(timings, newTimings);\n callback(timings);\n }\n var stopNavigationTracking = trackNavigationTimings(lifeCycle, setTimings).stop;\n var stopFCPTracking = trackFirstContentfulPaintTiming(lifeCycle, function (firstContentfulPaint) {\n return setTimings({ firstContentfulPaint: firstContentfulPaint });\n }).stop;\n var stopLCPTracking = trackLargestContentfulPaintTiming(lifeCycle, window, function (largestContentfulPaint) {\n setTimings({\n largestContentfulPaint: largestContentfulPaint,\n });\n }).stop;\n var stopFIDTracking = trackFirstInputTimings(lifeCycle, function (_a) {\n var firstInputDelay = _a.firstInputDelay, firstInputTime = _a.firstInputTime;\n setTimings({\n firstInputDelay: firstInputDelay,\n firstInputTime: firstInputTime,\n });\n }).stop;\n return {\n stop: function () {\n stopNavigationTracking();\n stopFCPTracking();\n stopLCPTracking();\n stopFIDTracking();\n },\n };\n}\nexport function trackNavigationTimings(lifeCycle, callback) {\n var stop = lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.entryType === 'navigation') {\n callback({\n domComplete: entry.domComplete,\n domContentLoaded: entry.domContentLoadedEventEnd,\n domInteractive: entry.domInteractive,\n loadEvent: entry.loadEventEnd,\n });\n }\n }\n }).unsubscribe;\n return { stop: stop };\n}\nexport function trackFirstContentfulPaintTiming(lifeCycle, callback) {\n var firstHidden = trackFirstHidden();\n var stop = lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n var fcpEntry = find(entries, function (entry) {\n return entry.entryType === 'paint' &&\n entry.name === 'first-contentful-paint' &&\n entry.startTime < firstHidden.timeStamp &&\n entry.startTime < TIMING_MAXIMUM_DELAY;\n });\n if (fcpEntry) {\n callback(fcpEntry.startTime);\n }\n }).unsubscribe;\n return { stop: stop };\n}\n/**\n * Track the largest contentful paint (LCP) occurring during the initial View. This can yield\n * multiple values, only the most recent one should be used.\n * Documentation: https://web.dev/lcp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getLCP.ts\n */\nexport function trackLargestContentfulPaintTiming(lifeCycle, emitter, callback) {\n var firstHidden = trackFirstHidden();\n // Ignore entries that come after the first user interaction. According to the documentation, the\n // browser should not send largest-contentful-paint entries after a user interact with the page,\n // but the web-vitals reference implementation uses this as a safeguard.\n var firstInteractionTimestamp = Infinity;\n var stopEventListener = addEventListeners(emitter, [\"pointerdown\" /* POINTER_DOWN */, \"keydown\" /* KEY_DOWN */], function (event) {\n firstInteractionTimestamp = event.timeStamp;\n }, { capture: true, once: true }).stop;\n var unsubscribeLifeCycle = lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n var lcpEntry = findLast(entries, function (entry) {\n return entry.entryType === 'largest-contentful-paint' &&\n entry.startTime < firstInteractionTimestamp &&\n entry.startTime < firstHidden.timeStamp &&\n entry.startTime < TIMING_MAXIMUM_DELAY;\n });\n if (lcpEntry) {\n callback(lcpEntry.startTime);\n }\n }).unsubscribe;\n return {\n stop: function () {\n stopEventListener();\n unsubscribeLifeCycle();\n },\n };\n}\n/**\n * Track the first input occurring during the initial View to return:\n * - First Input Delay\n * - First Input Time\n * Callback is called at most one time.\n * Documentation: https://web.dev/fid/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getFID.ts\n */\nexport function trackFirstInputTimings(lifeCycle, callback) {\n var firstHidden = trackFirstHidden();\n var stop = lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n var firstInputEntry = find(entries, function (entry) {\n return entry.entryType === 'first-input' && entry.startTime < firstHidden.timeStamp;\n });\n if (firstInputEntry) {\n var firstInputDelay = elapsed(firstInputEntry.startTime, firstInputEntry.processingStart);\n callback({\n // Ensure firstInputDelay to be positive, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1185815\n firstInputDelay: firstInputDelay >= 0 ? firstInputDelay : 0,\n firstInputTime: firstInputEntry.startTime,\n });\n }\n }).unsubscribe;\n return {\n stop: stop,\n };\n}\n//# sourceMappingURL=trackInitialViewTimings.js.map","import { noop, round, ONE_SECOND, elapsed } from '@datadog/browser-core';\nimport { supportPerformanceTimingEvent } from '../../../browser/performanceCollection';\nimport { trackEventCounts } from '../../trackEventCounts';\nimport { waitIdlePage } from '../../waitIdlePage';\nexport function trackViewMetrics(lifeCycle, domMutationObservable, scheduleViewUpdate, loadingType, viewStart) {\n var viewMetrics = {\n eventCounts: {\n errorCount: 0,\n longTaskCount: 0,\n resourceCount: 0,\n userActionCount: 0,\n },\n };\n var stopEventCountsTracking = trackEventCounts(lifeCycle, function (newEventCounts) {\n viewMetrics.eventCounts = newEventCounts;\n scheduleViewUpdate();\n }).stop;\n var _a = trackLoadingTime(lifeCycle, domMutationObservable, loadingType, viewStart, function (newLoadingTime) {\n viewMetrics.loadingTime = newLoadingTime;\n scheduleViewUpdate();\n }), stopLoadingTimeTracking = _a.stop, setLoadEvent = _a.setLoadEvent;\n var stopCLSTracking;\n if (isLayoutShiftSupported()) {\n viewMetrics.cumulativeLayoutShift = 0;\n (stopCLSTracking = trackCumulativeLayoutShift(lifeCycle, function (cumulativeLayoutShift) {\n viewMetrics.cumulativeLayoutShift = cumulativeLayoutShift;\n scheduleViewUpdate();\n }).stop);\n }\n else {\n stopCLSTracking = noop;\n }\n return {\n stop: function () {\n stopEventCountsTracking();\n stopLoadingTimeTracking();\n stopCLSTracking();\n },\n setLoadEvent: setLoadEvent,\n viewMetrics: viewMetrics,\n };\n}\nfunction trackLoadingTime(lifeCycle, domMutationObservable, loadType, viewStart, callback) {\n var isWaitingForLoadEvent = loadType === \"initial_load\" /* INITIAL_LOAD */;\n var isWaitingForActivityLoadingTime = true;\n var loadingTimeCandidates = [];\n function invokeCallbackIfAllCandidatesAreReceived() {\n if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {\n callback(Math.max.apply(Math, loadingTimeCandidates));\n }\n }\n var stop = waitIdlePage(lifeCycle, domMutationObservable, function (event) {\n if (isWaitingForActivityLoadingTime) {\n isWaitingForActivityLoadingTime = false;\n if (event.hadActivity) {\n loadingTimeCandidates.push(elapsed(viewStart.timeStamp, event.end));\n }\n invokeCallbackIfAllCandidatesAreReceived();\n }\n }).stop;\n return {\n stop: stop,\n setLoadEvent: function (loadEvent) {\n if (isWaitingForLoadEvent) {\n isWaitingForLoadEvent = false;\n loadingTimeCandidates.push(loadEvent);\n invokeCallbackIfAllCandidatesAreReceived();\n }\n },\n };\n}\n/**\n * Track the cumulative layout shifts (CLS).\n * Layout shifts are grouped into session windows.\n * The minimum gap between session windows is 1 second.\n * The maximum duration of a session window is 5 second.\n * The session window layout shift value is the sum of layout shifts inside it.\n * The CLS value is the max of session windows values.\n *\n * This yields a new value whenever the CLS value is updated (a higher session window value is computed).\n *\n * See isLayoutShiftSupported to check for browser support.\n *\n * Documentation:\n * https://web.dev/cls/\n * https://web.dev/evolving-cls/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getCLS.ts\n */\nfunction trackCumulativeLayoutShift(lifeCycle, callback) {\n var maxClsValue = 0;\n var window = slidingSessionWindow();\n var stop = lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.entryType === 'layout-shift' && !entry.hadRecentInput) {\n window.update(entry);\n if (window.value() > maxClsValue) {\n maxClsValue = window.value();\n callback(round(maxClsValue, 4));\n }\n }\n }\n }).unsubscribe;\n return {\n stop: stop,\n };\n}\nfunction slidingSessionWindow() {\n var value = 0;\n var startTime;\n var endTime;\n return {\n update: function (entry) {\n var shouldCreateNewWindow = startTime === undefined ||\n entry.startTime - endTime >= ONE_SECOND ||\n entry.startTime - startTime >= 5 * ONE_SECOND;\n if (shouldCreateNewWindow) {\n startTime = endTime = entry.startTime;\n value = entry.value;\n }\n else {\n value += entry.value;\n endTime = entry.startTime;\n }\n },\n value: function () { return value; },\n };\n}\n/**\n * Check whether `layout-shift` is supported by the browser.\n */\nfunction isLayoutShiftSupported() {\n return supportPerformanceTimingEvent('layout-shift');\n}\n//# sourceMappingURL=trackViewMetrics.js.map","import { shallowClone, assign, elapsed, generateUUID, monitor, ONE_MINUTE, throttle, clocksNow, clocksOrigin, timeStampNow, display, looksLikeRelativeTime, } from '@datadog/browser-core';\nimport { trackInitialViewTimings } from './trackInitialViewTimings';\nimport { trackViewMetrics } from './trackViewMetrics';\nexport var THROTTLE_VIEW_UPDATE_PERIOD = 3000;\nexport var SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE;\nexport function trackViews(location, lifeCycle, domMutationObservable, locationChangeObservable, areViewsTrackedAutomatically, initialViewOptions) {\n var _a = trackInitialView(initialViewOptions), stopInitialViewTracking = _a.stop, initialView = _a.initialView;\n var currentView = initialView;\n var stopViewLifeCycle = startViewLifeCycle().stop;\n var locationChangeSubscription;\n if (areViewsTrackedAutomatically) {\n locationChangeSubscription = renewViewOnLocationChange(locationChangeObservable);\n }\n function trackInitialView(options) {\n var initialView = newView(lifeCycle, domMutationObservable, location, \"initial_load\" /* INITIAL_LOAD */, clocksOrigin(), options);\n var stop = trackInitialViewTimings(lifeCycle, function (timings) {\n initialView.updateTimings(timings);\n initialView.scheduleUpdate();\n }).stop;\n return { initialView: initialView, stop: stop };\n }\n function trackViewChange(startClocks, viewOptions) {\n return newView(lifeCycle, domMutationObservable, location, \"route_change\" /* ROUTE_CHANGE */, startClocks, viewOptions);\n }\n function startViewLifeCycle() {\n lifeCycle.subscribe(8 /* SESSION_RENEWED */, function () {\n // do not trigger view update to avoid wrong data\n currentView.end();\n // Renew view on session renewal\n currentView = trackViewChange(undefined, {\n name: currentView.name,\n service: currentView.service,\n version: currentView.version,\n });\n });\n // End the current view on page unload\n lifeCycle.subscribe(9 /* BEFORE_UNLOAD */, function () {\n currentView.end();\n currentView.triggerUpdate();\n });\n // Session keep alive\n var keepAliveInterval = window.setInterval(monitor(function () {\n currentView.triggerUpdate();\n }), SESSION_KEEP_ALIVE_INTERVAL);\n return {\n stop: function () {\n clearInterval(keepAliveInterval);\n },\n };\n }\n function renewViewOnLocationChange(locationChangeObservable) {\n return locationChangeObservable.subscribe(function (_a) {\n var oldLocation = _a.oldLocation, newLocation = _a.newLocation;\n if (areDifferentLocation(oldLocation, newLocation)) {\n currentView.end();\n currentView.triggerUpdate();\n currentView = trackViewChange();\n return;\n }\n });\n }\n return {\n addTiming: function (name, time) {\n if (time === void 0) { time = timeStampNow(); }\n currentView.addTiming(name, time);\n currentView.scheduleUpdate();\n },\n startView: function (options, startClocks) {\n currentView.end(startClocks);\n currentView.triggerUpdate();\n currentView = trackViewChange(startClocks, options);\n },\n stop: function () {\n locationChangeSubscription === null || locationChangeSubscription === void 0 ? void 0 : locationChangeSubscription.unsubscribe();\n stopInitialViewTracking();\n stopViewLifeCycle();\n currentView.end();\n },\n };\n}\nfunction newView(lifeCycle, domMutationObservable, initialLocation, loadingType, startClocks, viewOptions) {\n if (startClocks === void 0) { startClocks = clocksNow(); }\n // Setup initial values\n var id = generateUUID();\n var timings = {};\n var customTimings = {};\n var documentVersion = 0;\n var endClocks;\n var location = shallowClone(initialLocation);\n var name;\n var service;\n var version;\n if (viewOptions) {\n name = viewOptions.name;\n service = viewOptions.service;\n version = viewOptions.version;\n }\n lifeCycle.notify(2 /* VIEW_CREATED */, { id: id, name: name, startClocks: startClocks, service: service, version: version });\n // Update the view every time the measures are changing\n var _a = throttle(monitor(triggerViewUpdate), THROTTLE_VIEW_UPDATE_PERIOD, {\n leading: false,\n }), scheduleViewUpdate = _a.throttled, cancelScheduleViewUpdate = _a.cancel;\n var _b = trackViewMetrics(lifeCycle, domMutationObservable, scheduleViewUpdate, loadingType, startClocks), setLoadEvent = _b.setLoadEvent, stopViewMetricsTracking = _b.stop, viewMetrics = _b.viewMetrics;\n // Initial view update\n triggerViewUpdate();\n function triggerViewUpdate() {\n documentVersion += 1;\n var currentEnd = endClocks === undefined ? timeStampNow() : endClocks.timeStamp;\n lifeCycle.notify(3 /* VIEW_UPDATED */, assign({\n customTimings: customTimings,\n documentVersion: documentVersion,\n id: id,\n name: name,\n service: service,\n version: version,\n loadingType: loadingType,\n location: location,\n startClocks: startClocks,\n timings: timings,\n duration: elapsed(startClocks.timeStamp, currentEnd),\n isActive: endClocks === undefined,\n }, viewMetrics));\n }\n return {\n name: name,\n service: service,\n version: version,\n scheduleUpdate: scheduleViewUpdate,\n end: function (clocks) {\n if (clocks === void 0) { clocks = clocksNow(); }\n endClocks = clocks;\n stopViewMetricsTracking();\n lifeCycle.notify(4 /* VIEW_ENDED */, { endClocks: endClocks });\n },\n triggerUpdate: function () {\n // cancel any pending view updates execution\n cancelScheduleViewUpdate();\n triggerViewUpdate();\n },\n updateTimings: function (newTimings) {\n timings = newTimings;\n if (newTimings.loadEvent !== undefined) {\n setLoadEvent(newTimings.loadEvent);\n }\n },\n addTiming: function (name, time) {\n var relativeTime = looksLikeRelativeTime(time) ? time : elapsed(startClocks.timeStamp, time);\n customTimings[sanitizeTiming(name)] = relativeTime;\n },\n };\n}\n/**\n * Timing name is used as facet path that must contain only letters, digits, or the characters - _ . @ $\n */\nfunction sanitizeTiming(name) {\n var sanitized = name.replace(/[^a-zA-Z0-9-_.@$]/g, '_');\n if (sanitized !== name) {\n display.warn(\"Invalid timing name: \".concat(name, \", sanitized to: \").concat(sanitized));\n }\n return sanitized;\n}\nfunction areDifferentLocation(currentLocation, otherLocation) {\n return (currentLocation.pathname !== otherLocation.pathname ||\n (!isHashAnAnchor(otherLocation.hash) &&\n getPathFromHash(otherLocation.hash) !== getPathFromHash(currentLocation.hash)));\n}\nfunction isHashAnAnchor(hash) {\n var correspondingId = hash.substr(1);\n return !!document.getElementById(correspondingId);\n}\nfunction getPathFromHash(hash) {\n var index = hash.indexOf('?');\n return index < 0 ? hash : hash.slice(0, index);\n}\n//# sourceMappingURL=trackViews.js.map","import { isEmptyObject, mapValues, toServerDuration, isNumber } from '@datadog/browser-core';\nimport { trackViews } from './trackViews';\nexport function startViewCollection(lifeCycle, configuration, location, domMutationObservable, locationChangeObservable, foregroundContexts, recorderApi, initialViewOptions) {\n lifeCycle.subscribe(3 /* VIEW_UPDATED */, function (view) {\n return lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processViewUpdate(view, foregroundContexts, recorderApi));\n });\n return trackViews(location, lifeCycle, domMutationObservable, locationChangeObservable, !configuration.trackViewsManually, initialViewOptions);\n}\nfunction processViewUpdate(view, foregroundContexts, recorderApi) {\n var replayStats = recorderApi.getReplayStats(view.id);\n var viewEvent = {\n _dd: {\n document_version: view.documentVersion,\n replay_stats: replayStats,\n },\n date: view.startClocks.timeStamp,\n type: \"view\" /* VIEW */,\n view: {\n action: {\n count: view.eventCounts.userActionCount,\n },\n cumulative_layout_shift: view.cumulativeLayoutShift,\n dom_complete: toServerDuration(view.timings.domComplete),\n dom_content_loaded: toServerDuration(view.timings.domContentLoaded),\n dom_interactive: toServerDuration(view.timings.domInteractive),\n error: {\n count: view.eventCounts.errorCount,\n },\n first_contentful_paint: toServerDuration(view.timings.firstContentfulPaint),\n first_input_delay: toServerDuration(view.timings.firstInputDelay),\n first_input_time: toServerDuration(view.timings.firstInputTime),\n is_active: view.isActive,\n name: view.name,\n largest_contentful_paint: toServerDuration(view.timings.largestContentfulPaint),\n load_event: toServerDuration(view.timings.loadEvent),\n loading_time: discardNegativeDuration(toServerDuration(view.loadingTime)),\n loading_type: view.loadingType,\n long_task: {\n count: view.eventCounts.longTaskCount,\n },\n resource: {\n count: view.eventCounts.resourceCount,\n },\n time_spent: toServerDuration(view.duration),\n in_foreground_periods: foregroundContexts.selectInForegroundPeriodsFor(view.startClocks.relative, view.duration),\n },\n session: {\n has_replay: replayStats ? true : undefined,\n },\n };\n if (!isEmptyObject(view.customTimings)) {\n viewEvent.view.custom_timings = mapValues(view.customTimings, toServerDuration);\n }\n return {\n rawRumEvent: viewEvent,\n startTime: view.startClocks.relative,\n domainContext: {\n location: view.location,\n },\n };\n}\nfunction discardNegativeDuration(duration) {\n return isNumber(duration) && duration < 0 ? undefined : duration;\n}\n//# sourceMappingURL=viewCollection.js.map","import * as utils from '../../tools/utils';\nimport { monitor } from '../internalMonitoring';\nimport { ContextHistory } from '../../tools/contextHistory';\nimport { relativeNow, clocksOrigin } from '../../tools/timeUtils';\nimport { tryOldCookiesMigration } from './oldCookiesMigration';\nimport { startSessionStore, SESSION_TIME_OUT_DELAY } from './sessionStore';\nexport var VISIBILITY_CHECK_DELAY = utils.ONE_MINUTE;\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nvar stopCallbacks = [];\nexport function startSessionManager(options, productKey, computeSessionState) {\n tryOldCookiesMigration(options);\n var sessionStore = startSessionStore(options, productKey, computeSessionState);\n stopCallbacks.push(function () { return sessionStore.stop(); });\n var sessionContextHistory = new ContextHistory(SESSION_CONTEXT_TIMEOUT_DELAY);\n stopCallbacks.push(function () { return sessionContextHistory.stop(); });\n sessionStore.renewObservable.subscribe(function () {\n sessionContextHistory.add(buildSessionContext(), relativeNow());\n });\n sessionStore.expireObservable.subscribe(function () {\n sessionContextHistory.closeActive(relativeNow());\n });\n sessionStore.expandOrRenewSession();\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);\n trackActivity(function () { return sessionStore.expandOrRenewSession(); });\n trackVisibility(function () { return sessionStore.expandSession(); });\n function buildSessionContext() {\n return {\n id: sessionStore.getSession().id,\n trackingType: sessionStore.getSession()[productKey],\n };\n }\n return {\n findActiveSession: function (startTime) { return sessionContextHistory.find(startTime); },\n renewObservable: sessionStore.renewObservable,\n expireObservable: sessionStore.expireObservable,\n };\n}\nexport function stopSessionManager() {\n stopCallbacks.forEach(function (e) { return e(); });\n stopCallbacks = [];\n}\nfunction trackActivity(expandOrRenewSession) {\n var stop = utils.addEventListeners(window, [\"click\" /* CLICK */, \"touchstart\" /* TOUCH_START */, \"keydown\" /* KEY_DOWN */, \"scroll\" /* SCROLL */], expandOrRenewSession, { capture: true, passive: true }).stop;\n stopCallbacks.push(stop);\n}\nfunction trackVisibility(expandSession) {\n var expandSessionWhenVisible = monitor(function () {\n if (document.visibilityState === 'visible') {\n expandSession();\n }\n });\n var stop = utils.addEventListener(document, \"visibilitychange\" /* VISIBILITY_CHANGE */, expandSessionWhenVisible).stop;\n stopCallbacks.push(stop);\n var visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);\n stopCallbacks.push(function () {\n clearInterval(visibilityCheckInterval);\n });\n}\n//# sourceMappingURL=sessionManager.js.map","import { getCookie } from '../../browser/cookie';\nimport { SESSION_COOKIE_NAME, persistSession } from './sessionCookieStore';\nexport var OLD_SESSION_COOKIE_NAME = '_dd';\nexport var OLD_RUM_COOKIE_NAME = '_dd_r';\nexport var OLD_LOGS_COOKIE_NAME = '_dd_l';\n// duplicate values to avoid dependency issues\nexport var RUM_SESSION_KEY = 'rum';\nexport var LOGS_SESSION_KEY = 'logs';\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(options) {\n var sessionString = getCookie(SESSION_COOKIE_NAME);\n var oldSessionId = getCookie(OLD_SESSION_COOKIE_NAME);\n var oldRumType = getCookie(OLD_RUM_COOKIE_NAME);\n var oldLogsType = getCookie(OLD_LOGS_COOKIE_NAME);\n if (!sessionString) {\n var session = {};\n if (oldSessionId) {\n session.id = oldSessionId;\n }\n if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n session[LOGS_SESSION_KEY] = oldLogsType;\n }\n if (oldRumType && /^[012]$/.test(oldRumType)) {\n session[RUM_SESSION_KEY] = oldRumType;\n }\n persistSession(session, options);\n }\n}\n//# sourceMappingURL=oldCookiesMigration.js.map","import { performDraw, startSessionManager } from '@datadog/browser-core';\nexport var RUM_SESSION_KEY = 'rum';\nexport function startRumSessionManager(configuration, lifeCycle) {\n var sessionManager = startSessionManager(configuration.cookieOptions, RUM_SESSION_KEY, function (rawTrackingType) {\n return computeSessionState(configuration, rawTrackingType);\n });\n sessionManager.expireObservable.subscribe(function () {\n lifeCycle.notify(7 /* SESSION_EXPIRED */);\n });\n sessionManager.renewObservable.subscribe(function () {\n lifeCycle.notify(8 /* SESSION_RENEWED */);\n });\n return {\n findTrackedSession: function (startTime) {\n var session = sessionManager.findActiveSession(startTime);\n if (!session || !isTypeTracked(session.trackingType)) {\n return;\n }\n return {\n id: session.id,\n hasReplayPlan: session.trackingType === \"1\" /* TRACKED_REPLAY */,\n hasLitePlan: session.trackingType === \"2\" /* TRACKED_LITE */,\n };\n },\n };\n}\n/**\n * Start a tracked replay session stub\n * It needs to be a replay plan in order to get long tasks\n */\nexport function startRumSessionManagerStub() {\n var session = {\n id: '00000000-aaaa-0000-aaaa-000000000000',\n hasReplayPlan: true,\n hasLitePlan: false,\n };\n return {\n findTrackedSession: function () { return session; },\n };\n}\nfunction computeSessionState(configuration, rawTrackingType) {\n var trackingType;\n if (hasValidRumSession(rawTrackingType)) {\n trackingType = rawTrackingType;\n }\n else if (!performDraw(configuration.sampleRate)) {\n trackingType = \"0\" /* NOT_TRACKED */;\n }\n else if (!performDraw(configuration.replaySampleRate)) {\n trackingType = \"2\" /* TRACKED_LITE */;\n }\n else {\n trackingType = \"1\" /* TRACKED_REPLAY */;\n }\n return {\n trackingType: trackingType,\n isTracked: isTypeTracked(trackingType),\n };\n}\nfunction hasValidRumSession(trackingType) {\n return (trackingType === \"0\" /* NOT_TRACKED */ ||\n trackingType === \"1\" /* TRACKED_REPLAY */ ||\n trackingType === \"2\" /* TRACKED_LITE */);\n}\nfunction isTypeTracked(rumSessionType) {\n return rumSessionType === \"2\" /* TRACKED_LITE */ || rumSessionType === \"1\" /* TRACKED_REPLAY */;\n}\n//# sourceMappingURL=rumSessionManager.js.map","export { IncrementalSource } from './domain/record';\nexport var RecordType = {\n FullSnapshot: 2,\n IncrementalSnapshot: 3,\n Meta: 4,\n Focus: 6,\n ViewEnd: 7,\n VisualViewport: 8,\n};\n//# sourceMappingURL=types.js.map","import { DefaultPrivacyLevel } from '@datadog/browser-core';\nexport var NodePrivacyLevel = {\n IGNORE: 'ignore',\n HIDDEN: 'hidden',\n ALLOW: DefaultPrivacyLevel.ALLOW,\n MASK: DefaultPrivacyLevel.MASK,\n MASK_USER_INPUT: DefaultPrivacyLevel.MASK_USER_INPUT,\n};\nexport var PRIVACY_ATTR_NAME = 'data-dd-privacy';\n// Privacy Attrs\nexport var PRIVACY_ATTR_VALUE_ALLOW = 'allow';\nexport var PRIVACY_ATTR_VALUE_MASK = 'mask';\nexport var PRIVACY_ATTR_VALUE_MASK_USER_INPUT = 'mask-user-input';\nexport var PRIVACY_ATTR_VALUE_HIDDEN = 'hidden';\n// Privacy Classes - not all customers can set plain HTML attributes, so support classes too\nexport var PRIVACY_CLASS_ALLOW = 'dd-privacy-allow';\nexport var PRIVACY_CLASS_MASK = 'dd-privacy-mask';\nexport var PRIVACY_CLASS_MASK_USER_INPUT = 'dd-privacy-mask-user-input';\nexport var PRIVACY_CLASS_HIDDEN = 'dd-privacy-hidden';\n// Private Replacement Templates\nexport var CENSORED_STRING_MARK = '***';\nexport var CENSORED_IMG_MARK = 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==';\nexport var FORM_PRIVATE_TAG_NAMES = {\n INPUT: true,\n OUTPUT: true,\n TEXTAREA: true,\n SELECT: true,\n OPTION: true,\n DATALIST: true,\n OPTGROUP: true,\n};\n//# sourceMappingURL=constants.js.map","import { NodePrivacyLevel, PRIVACY_ATTR_NAME, PRIVACY_ATTR_VALUE_ALLOW, PRIVACY_ATTR_VALUE_MASK, PRIVACY_ATTR_VALUE_MASK_USER_INPUT, PRIVACY_ATTR_VALUE_HIDDEN, PRIVACY_CLASS_ALLOW, PRIVACY_CLASS_MASK, PRIVACY_CLASS_MASK_USER_INPUT, PRIVACY_CLASS_HIDDEN, FORM_PRIVATE_TAG_NAMES, CENSORED_STRING_MARK, } from '../../constants';\nexport var MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 100000;\nimport { shouldIgnoreElement } from './serialize';\nvar TEXT_MASKING_CHAR = 'x';\n/**\n * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is\n * know, it is best to use something like:\n *\n * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)\n */\nexport function getNodePrivacyLevel(node, defaultPrivacyLevel) {\n var parentNodePrivacyLevel = node.parentNode\n ? getNodePrivacyLevel(node.parentNode, defaultPrivacyLevel)\n : defaultPrivacyLevel;\n var selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node);\n return reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel);\n}\n/**\n * Reduces the next privacy level based on self + parent privacy levels\n */\nexport function reducePrivacyLevel(childPrivacyLevel, parentNodePrivacyLevel) {\n switch (parentNodePrivacyLevel) {\n // These values cannot be overridden\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return parentNodePrivacyLevel;\n }\n switch (childPrivacyLevel) {\n case NodePrivacyLevel.ALLOW:\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.MASK_USER_INPUT:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return childPrivacyLevel;\n default:\n return parentNodePrivacyLevel;\n }\n}\n/**\n * Determines the node's own privacy level without checking for ancestors.\n */\nexport function getNodeSelfPrivacyLevel(node) {\n // Only Element types can have a privacy level set\n if (!isElement(node)) {\n return;\n }\n var privAttr = node.getAttribute(PRIVACY_ATTR_NAME);\n // Overrules for replay purpose\n if (node.tagName === 'BASE') {\n return NodePrivacyLevel.ALLOW;\n }\n // Overrules to enforce end-user protection\n if (node.tagName === 'INPUT') {\n var inputElement = node;\n if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {\n return NodePrivacyLevel.MASK;\n }\n if (inputElement.type === 'hidden') {\n return NodePrivacyLevel.MASK;\n }\n var 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 // Check HTML privacy attributes and classes\n if (privAttr === PRIVACY_ATTR_VALUE_HIDDEN || node.classList.contains(PRIVACY_CLASS_HIDDEN)) {\n return NodePrivacyLevel.HIDDEN;\n }\n if (privAttr === PRIVACY_ATTR_VALUE_MASK || node.classList.contains(PRIVACY_CLASS_MASK)) {\n return NodePrivacyLevel.MASK;\n }\n if (privAttr === PRIVACY_ATTR_VALUE_MASK_USER_INPUT || node.classList.contains(PRIVACY_CLASS_MASK_USER_INPUT)) {\n return NodePrivacyLevel.MASK_USER_INPUT;\n }\n if (privAttr === PRIVACY_ATTR_VALUE_ALLOW || node.classList.contains(PRIVACY_CLASS_ALLOW)) {\n return NodePrivacyLevel.ALLOW;\n }\n if (shouldIgnoreElement(node)) {\n return NodePrivacyLevel.IGNORE;\n }\n}\n/**\n * Helper aiming to unify `mask` and `mask-user-input` privacy levels:\n *\n * In the `mask` case, it is trivial: we should mask the element.\n *\n * In the `mask-user-input` case, we should mask the element only if it is a \"form\" element or the\n * direct parent is a form element for text nodes).\n *\n * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a\n * node if it is ignored or hidden? it doesn't matter since it won't be serialized).\n */\nexport function shouldMaskNode(node, privacyLevel) {\n switch (privacyLevel) {\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return true;\n case NodePrivacyLevel.MASK_USER_INPUT:\n return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node);\n default:\n return false;\n }\n}\nfunction isElement(node) {\n return node.nodeType === node.ELEMENT_NODE;\n}\nfunction isTextNode(node) {\n return node.nodeType === node.TEXT_NODE;\n}\nfunction isFormElement(node) {\n if (!node || node.nodeType !== node.ELEMENT_NODE) {\n return false;\n }\n var element = node;\n if (element.tagName === 'INPUT') {\n switch (element.type) {\n case 'button':\n case 'color':\n case 'reset':\n case 'submit':\n return false;\n }\n }\n return !!FORM_PRIVATE_TAG_NAMES[element.tagName];\n}\n/**\n * Text censoring non-destructively maintains whitespace characters in order to preserve text shape\n * during replay.\n */\nexport var censorText = function (text) { return text.replace(/\\S/g, TEXT_MASKING_CHAR); };\nexport function getTextContent(textNode, ignoreWhiteSpace, parentNodePrivacyLevel) {\n var _a;\n // The parent node may not be a html element which has a tagName attribute.\n // So just let it be undefined which is ok in this use case.\n var parentTagName = (_a = textNode.parentElement) === null || _a === void 0 ? void 0 : _a.tagName;\n var textContent = textNode.textContent || '';\n if (ignoreWhiteSpace && !textContent.trim()) {\n return;\n }\n var nodePrivacyLevel = parentNodePrivacyLevel;\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\n var isScript = parentTagName === 'SCRIPT';\n if (isScript) {\n // For perf reasons, we don't record script (heuristic)\n textContent = CENSORED_STRING_MARK;\n }\n else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n // Should never occur, but just in case, we set to CENSORED_MARK.\n textContent = CENSORED_STRING_MARK;\n }\n else if (shouldMaskNode(textNode, nodePrivacyLevel) &&\n // Style tags are `overruled` (Use `hide` to enforce privacy)\n !isStyle) {\n if (\n // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP\n parentTagName === 'DATALIST' ||\n parentTagName === 'SELECT' ||\n parentTagName === 'OPTGROUP') {\n if (!textContent.trim()) {\n return;\n }\n }\n else if (parentTagName === 'OPTION') {\n //