{"version":3,"file":"main.fa801772.js","sources":["../../../../../../node_modules/@datadog/browser-core/esm/tools/display.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/utils/numberUtils.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/utils/timeUtils.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/utils/byteUtils.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/utils/polyfills.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/utils/objectUtils.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/getGlobalObject.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/getZoneJsOriginalValue.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/monitor.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/timer.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/observable.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/utils/functionUtils.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/utils/stringUtils.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/utils/browserDetection.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/experimentalFeatures.js","../../../../../../node_modules/@datadog/browser-core/esm/browser/cookie.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionStoreStrategy.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/utils/typeUtils.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/user/user.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/session/sessionConstants.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/session/sessionStateValidation.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/session/sessionState.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInCookie.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInLocalStorage.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/session/sessionStoreOperations.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/trackingConsent.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/serialisation/jsonStringify.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/utils/urlPolyfill.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/configuration/intakeSites.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/configuration/tags.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/stackTrace/computeStackTrace.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/stackTrace/handlingStack.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/serialisation/sanitize.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/error/error.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/error/error.types.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","../../../../../../node_modules/@datadog/browser-core/esm/boot/init.js","../../../../../../node_modules/@datadog/browser-core/esm/boot/displayAlreadyInitializedError.js","../../../../../../node_modules/@datadog/browser-core/esm/browser/addEventListener.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/sendToExtension.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/mergeInto.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/connectivity/connectivity.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/utils/arrayUtils.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/valueHistory.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/utils/responseUtils.js","../../../../../../node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","../../../../../../node_modules/@datadog/browser-core/esm/transport/httpRequest.js","../../../../../../node_modules/@datadog/browser-core/esm/transport/eventBridge.js","../../../../../../node_modules/@datadog/browser-core/esm/browser/pageExitObservable.js","../../../../../../node_modules/@datadog/browser-core/esm/transport/batch.js","../../../../../../node_modules/@datadog/browser-core/esm/transport/flushController.js","../../../../../../node_modules/@datadog/browser-core/esm/transport/startBatchWithReplica.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/encoder.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/abstractLifeCycle.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/eventRateLimiter/createEventRateLimiter.js","../../../../../../node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","../../../../../../node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/context/contextManager.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/context/storeContextManager.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/context/customerDataTracker.js","../../../../../../node_modules/@datadog/browser-core/esm/tools/readBytesFromStream.js","../../../../../../node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/logger/isAuthorized.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/createErrorFieldFromRawError.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/logger.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/contexts/commonContext.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/configuration.js","../../../../../../node_modules/@datadog/browser-logs/esm/boot/preStartLogs.js","../../../../../../node_modules/@datadog/browser-logs/esm/boot/logsPublicApi.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/logsSessionManager.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/contexts/rumInternalContext.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/assembly.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/console/consoleCollection.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/report/reportCollection.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/networkError/networkErrorCollection.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/runtimeError/runtimeErrorCollection.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/lifeCycle.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/logger/loggerCollection.js","../../../../../../node_modules/@datadog/browser-logs/esm/transport/startLogsBatch.js","../../../../../../node_modules/@datadog/browser-logs/esm/transport/startLogsBridge.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/contexts/internalContext.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/reportError.js","../../../../../../node_modules/@datadog/browser-logs/esm/domain/logsTelemetry.js","../../../../../../node_modules/@datadog/browser-logs/esm/boot/startLogs.js","../../../../../../node_modules/@datadog/browser-logs/esm/entries/main.js"],"sourcesContent":["/* eslint-disable local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport var ConsoleApiName = {\n log: 'log',\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error',\n};\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport var globalConsole = console;\nexport var originalConsoleMethods = {};\nObject.keys(ConsoleApiName).forEach(function (name) {\n originalConsoleMethods[name] = globalConsole[name];\n});\nvar PREFIX = 'Datadog Browser SDK:';\nexport var display = {\n debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),\n log: originalConsoleMethods.log.bind(globalConsole, PREFIX),\n info: originalConsoleMethods.info.bind(globalConsole, PREFIX),\n warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),\n error: originalConsoleMethods.error.bind(globalConsole, PREFIX),\n};\nexport var DOCS_ORIGIN = 'https://docs.datadoghq.com';\nexport var DOCS_TROUBLESHOOTING = \"\".concat(DOCS_ORIGIN, \"/real_user_monitoring/browser/troubleshooting\");\nexport var MORE_DETAILS = 'More details:';\n//# sourceMappingURL=display.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","/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n return +num.toFixed(decimals);\n}\nexport function isPercentage(value) {\n return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=numberUtils.js.map","import { isNumber, round } from './numberUtils';\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 function relativeToClocks(relative) {\n return { relative: relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nexport function timeStampToClocks(timeStamp) {\n return { relative: getRelativeTime(timeStamp), timeStamp: timeStamp };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n var correctedOrigin = (dateNow() - performance.now());\n // apply correction only for positive drift\n if (correctedOrigin > getNavigationStart()) {\n return Math.round(addDuration(correctedOrigin, relativeTime));\n }\n return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n if (!isNumber(duration)) {\n return duration;\n }\n return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n // case ourselves.\n // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n return new Date().getTime();\n}\nexport function timeStampNow() {\n return dateNow();\n}\nexport function relativeNow() {\n return performance.now();\n}\nexport function clocksNow() {\n return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n return (end - start);\n}\nexport function addDuration(a, b) {\n return a + b;\n}\n/**\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 return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nvar navigationStart;\nfunction getNavigationStart() {\n if (navigationStart === undefined) {\n navigationStart = performance.timing.navigationStart;\n }\n return navigationStart;\n}\n//# sourceMappingURL=timeUtils.js.map","export var ONE_KIBI_BYTE = 1024;\nexport var ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// eslint-disable-next-line no-control-regex\nvar HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nexport function computeBytesCount(candidate) {\n // Accurate bytes count computations can degrade performances when there is a lot of events to process\n if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n return candidate.length;\n }\n if (window.TextEncoder !== undefined) {\n return new TextEncoder().encode(candidate).length;\n }\n return new Blob([candidate]).size;\n}\nexport function concatBuffers(buffers) {\n var length = buffers.reduce(function (total, buffer) { return total + buffer.length; }, 0);\n var result = new Uint8Array(length);\n var offset = 0;\n for (var _i = 0, buffers_1 = buffers; _i < buffers_1.length; _i++) {\n var buffer = buffers_1[_i];\n result.set(buffer, offset);\n offset += buffer.length;\n }\n return result;\n}\n//# sourceMappingURL=byteUtils.js.map","export function includes(candidate, search) {\n return candidate.indexOf(search) !== -1;\n}\nexport function arrayFrom(arrayLike) {\n if (Array.from) {\n return Array.from(arrayLike);\n }\n var array = [];\n if (arrayLike instanceof Set) {\n arrayLike.forEach(function (item) { return array.push(item); });\n }\n else {\n for (var i = 0; i < arrayLike.length; i++) {\n array.push(arrayLike[i]);\n }\n }\n return array;\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)) {\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 forEach(list, callback) {\n Array.prototype.forEach.call(list, callback);\n}\nexport function objectValues(object) {\n return Object.keys(object).map(function (key) { return object[key]; });\n}\nexport function objectEntries(object) {\n return Object.keys(object).map(function (key) { return [key, object[key]]; });\n}\nexport function startsWith(candidate, search) {\n return candidate.slice(0, search.length) === search;\n}\nexport function endsWith(candidate, search) {\n return candidate.slice(-search.length) === search;\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}\n//# sourceMappingURL=polyfills.js.map","import { assign } from './polyfills';\nexport function shallowClone(object) {\n return assign({}, object);\n}\nexport function objectHasValue(object, value) {\n return Object.keys(object).some(function (key) { return object[key] === value; });\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//# sourceMappingURL=objectUtils.js.map","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n Object.defineProperty(Object.prototype, '_dd_temp_', {\n get: 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}\n//# sourceMappingURL=getGlobalObject.js.map","import { getGlobalObject } from './getGlobalObject';\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue(target, name) {\n var browserWindow = getGlobalObject();\n var original;\n if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n original = target[browserWindow.Zone.__symbol__(name)];\n }\n if (!original) {\n original = target[name];\n }\n return original;\n}\n//# sourceMappingURL=getZoneJsOriginalValue.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { display } from './display';\nvar onMonitorErrorCollected;\nvar debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n onMonitorErrorCollected = undefined;\n debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n 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 = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n return decorated.apply(this, args);\n };\n}\nexport function monitor(fn) {\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return callMonitored(fn, this, arguments);\n }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return fn.apply(context, args);\n }\n catch (e) {\n displayIfDebugEnabled(e);\n if (onMonitorErrorCollected) {\n try {\n onMonitorErrorCollected(e);\n }\n catch (e) {\n displayIfDebugEnabled(e);\n }\n }\n }\n}\nexport function displayIfDebugEnabled() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (debugMode) {\n display.error.apply(display, __spreadArray(['[MONITOR]'], args, false));\n }\n}\n//# sourceMappingURL=monitor.js.map","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue';\nimport { monitor } from './monitor';\nimport { getGlobalObject } from './getGlobalObject';\nexport function setTimeout(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(monitor(callback), delay);\n}\nexport function clearTimeout(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId);\n}\nexport function setInterval(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay);\n}\nexport function clearInterval(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId);\n}\n//# sourceMappingURL=timer.js.map","// eslint-disable-next-line no-restricted-syntax\nvar 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 this.observers.push(f);\n if (this.observers.length === 1 && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined;\n }\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 return new Observable(function (globalObservable) {\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}\n//# sourceMappingURL=observable.js.map","import { setTimeout, clearTimeout } from '../timer';\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}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n//# sourceMappingURL=functionUtils.js.map","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n return placeholder\n ? // eslint-disable-next-line no-bitwise\n (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n : \"\".concat(1e7, \"-\").concat(1e3, \"-\").concat(4e3, \"-\").concat(8e3, \"-\").concat(1e11).replace(/[018]/g, generateUUID);\n}\nvar COMMA_SEPARATED_KEY_VALUE = /([\\w-]+)\\s*=\\s*([^;]+)/g;\nexport function findCommaSeparatedValue(rawString, name) {\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n var match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n if (match[1] === name) {\n return match[2];\n }\n }\n else {\n break;\n }\n }\n}\nexport function findCommaSeparatedValues(rawString) {\n var result = new Map();\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n var match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n result.set(match[1], match[2]);\n }\n else {\n break;\n }\n }\n return result;\n}\nexport function safeTruncate(candidate, length, suffix) {\n 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 }\n return \"\".concat(candidate.slice(0, correctedLength)).concat(suffix);\n}\n//# sourceMappingURL=stringUtils.js.map","export function isIE() {\n return detectBrowserCached() === 0 /* Browser.IE */;\n}\nexport function isChromium() {\n return detectBrowserCached() === 1 /* Browser.CHROMIUM */;\n}\nexport function isSafari() {\n return detectBrowserCached() === 2 /* Browser.SAFARI */;\n}\nvar browserCache;\nfunction detectBrowserCached() {\n return browserCache !== null && browserCache !== void 0 ? browserCache : (browserCache = detectBrowser());\n}\n// Exported only for tests\nexport function detectBrowser(browserWindow) {\n var _a;\n if (browserWindow === void 0) { browserWindow = window; }\n var userAgent = browserWindow.navigator.userAgent;\n if (browserWindow.chrome || /HeadlessChrome/.test(userAgent)) {\n return 1 /* Browser.CHROMIUM */;\n }\n if (\n // navigator.vendor is deprecated, but it is the most resilient way we found to detect\n // \"Apple maintained browsers\" (AKA Safari). If one day it gets removed, we still have the\n // useragent test as a semi-working fallback.\n ((_a = browserWindow.navigator.vendor) === null || _a === void 0 ? void 0 : _a.indexOf('Apple')) === 0 ||\n (/safari/i.test(userAgent) && !/chrome|android/i.test(userAgent))) {\n return 2 /* Browser.SAFARI */;\n }\n if (browserWindow.document.documentMode) {\n return 0 /* Browser.IE */;\n }\n return 3 /* Browser.OTHER */;\n}\n//# sourceMappingURL=browserDetection.js.map","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n *\n * FORMAT:\n * All feature flags should be snake_cased\n */\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected feature flag\nimport { objectHasValue } from './utils/objectUtils';\n// eslint-disable-next-line no-restricted-syntax\nexport var ExperimentalFeature;\n(function (ExperimentalFeature) {\n ExperimentalFeature[\"WRITABLE_RESOURCE_GRAPHQL\"] = \"writable_resource_graphql\";\n ExperimentalFeature[\"REMOTE_CONFIGURATION\"] = \"remote_configuration\";\n ExperimentalFeature[\"LONG_ANIMATION_FRAME\"] = \"long_animation_frame\";\n ExperimentalFeature[\"ANONYMOUS_USER_TRACKING\"] = \"anonymous_user_tracking\";\n ExperimentalFeature[\"ACTION_NAME_MASKING\"] = \"action_name_masking\";\n ExperimentalFeature[\"CONSISTENT_TRACE_SAMPLING\"] = \"consistent_trace_sampling\";\n ExperimentalFeature[\"DELAY_VIEWPORT_COLLECTION\"] = \"delay_viewport_collection\";\n})(ExperimentalFeature || (ExperimentalFeature = {}));\nvar enabledExperimentalFeatures = new Set();\nexport function initFeatureFlags(enableExperimentalFeatures) {\n if (Array.isArray(enableExperimentalFeatures)) {\n addExperimentalFeatures(enableExperimentalFeatures.filter(function (flag) {\n return objectHasValue(ExperimentalFeature, flag);\n }));\n }\n}\nexport function addExperimentalFeatures(enabledFeatures) {\n enabledFeatures.forEach(function (flag) {\n enabledExperimentalFeatures.add(flag);\n });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n return enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n enabledExperimentalFeatures.clear();\n}\nexport function getExperimentalFeatures() {\n return enabledExperimentalFeatures;\n}\n//# sourceMappingURL=experimentalFeatures.js.map","import { display } from '../tools/display';\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { findCommaSeparatedValue, findCommaSeparatedValues, generateUUID } from '../tools/utils/stringUtils';\nexport function setCookie(name, value, expireDelay, options) {\n if (expireDelay === void 0) { expireDelay = 0; }\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 var partitioned = options && options.partitioned ? ';partitioned' : '';\n document.cookie = \"\".concat(name, \"=\").concat(value, \";\").concat(expires, \";path=/;samesite=\").concat(sameSite).concat(domain).concat(secure).concat(partitioned);\n}\nexport function getCookie(name) {\n return findCommaSeparatedValue(document.cookie, name);\n}\nvar initCookieParsed;\n/**\n * Returns a cached value of the cookie. Use this during SDK initialization (and whenever possible)\n * to avoid accessing document.cookie multiple times.\n */\nexport function getInitCookie(name) {\n if (!initCookieParsed) {\n initCookieParsed = findCommaSeparatedValues(document.cookie);\n }\n return initCookieParsed.get(name);\n}\nexport function resetInitCookies() {\n initCookieParsed = undefined;\n}\nexport function deleteCookie(name, options) {\n setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n if (document.cookie === undefined || document.cookie === null) {\n return false;\n }\n try {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n var testCookieName = \"dd_cookie_test_\".concat(generateUUID());\n var testCookieValue = 'test';\n setCookie(testCookieName, testCookieValue, ONE_MINUTE, 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","export var SESSION_STORE_KEY = '_dd_s';\n//# sourceMappingURL=sessionStoreStrategy.js.map","/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return 'array';\n }\n return typeof value;\n}\n//# sourceMappingURL=typeUtils.js.map","import { display } from '../../tools/display';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { assign } from '../../tools/utils/polyfills';\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\nexport function sanitizeUser(newUser) {\n // We shallow clone only to prevent mutation of user data.\n var user = assign({}, newUser);\n var keys = ['id', 'name', 'email'];\n keys.forEach(function (key) {\n if (key in user) {\n /* eslint-disable @typescript-eslint/no-base-to-string */\n user[key] = String(user[key]);\n }\n });\n return user;\n}\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser) {\n var isValid = getType(newUser) === 'object';\n if (!isValid) {\n display.error('Unsupported user:', newUser);\n }\n return isValid;\n}\nexport function generateAnonymousId() {\n return Math.floor(Math.random() * Math.pow(2, 53)).toString(36);\n}\n//# sourceMappingURL=user.js.map","import { ONE_HOUR, ONE_MINUTE, ONE_YEAR } from '../../tools/utils/timeUtils';\nexport var SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport var SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;\nexport var SESSION_COOKIE_EXPIRATION_DELAY = ONE_YEAR;\nexport var SessionPersistence = {\n COOKIE: 'cookie',\n LOCAL_STORAGE: 'local-storage',\n};\n//# sourceMappingURL=sessionConstants.js.map","export var SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/;\nexport var SESSION_ENTRY_SEPARATOR = '&';\nexport function isValidSessionString(sessionString) {\n return (!!sessionString &&\n (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));\n}\n//# sourceMappingURL=sessionStateValidation.js.map","import { ExperimentalFeature, isExperimentalFeatureEnabled } from '../../tools/experimentalFeatures';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { objectEntries } from '../../tools/utils/polyfills';\nimport { dateNow } from '../../tools/utils/timeUtils';\nimport { generateAnonymousId } from '../user';\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { isValidSessionString, SESSION_ENTRY_REGEXP, SESSION_ENTRY_SEPARATOR } from './sessionStateValidation';\nexport var EXPIRED = '1';\nexport function getExpiredSessionState(previousSessionState) {\n var expiredSessionState = {\n isExpired: EXPIRED,\n };\n if (isExperimentalFeatureEnabled(ExperimentalFeature.ANONYMOUS_USER_TRACKING)) {\n if (previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId) {\n expiredSessionState.anonymousId = previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId;\n }\n else {\n expiredSessionState.anonymousId = generateAnonymousId();\n }\n }\n return expiredSessionState;\n}\nexport function isSessionInNotStartedState(session) {\n return isEmptyObject(session);\n}\nexport function isSessionStarted(session) {\n return !isSessionInNotStartedState(session);\n}\nexport function isSessionInExpiredState(session) {\n return session.isExpired !== undefined || !isActiveSession(session);\n}\n// An active session is a session in either `Tracked` or `NotTracked` state\nfunction isActiveSession(sessionState) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return ((sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&\n (sessionState.expire === undefined || dateNow() < Number(sessionState.expire)));\n}\nexport function expandSessionState(session) {\n session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);\n}\nexport function toSessionString(session) {\n return (objectEntries(session)\n // we use `aid` as a key for anonymousId\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return (key === 'anonymousId' ? \"aid=\".concat(value) : \"\".concat(key, \"=\").concat(value));\n })\n .join(SESSION_ENTRY_SEPARATOR));\n}\nexport function toSessionState(sessionString) {\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 if (key === 'aid') {\n // we use `aid` as a key for anonymousId\n session.anonymousId = value;\n }\n else {\n session[key] = value;\n }\n }\n });\n }\n return session;\n}\n//# sourceMappingURL=sessionState.js.map","import { getInitCookie } from '../../browser/cookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nimport { expandSessionState, isSessionStarted } from './sessionState';\nexport 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(cookieStoreStrategy) {\n var sessionString = getInitCookie(SESSION_STORE_KEY);\n if (!sessionString) {\n var oldSessionId = getInitCookie(OLD_SESSION_COOKIE_NAME);\n var oldRumType = getInitCookie(OLD_RUM_COOKIE_NAME);\n var oldLogsType = getInitCookie(OLD_LOGS_COOKIE_NAME);\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 if (isSessionStarted(session)) {\n expandSessionState(session);\n cookieStoreStrategy.persistSession(session);\n }\n }\n}\n//# sourceMappingURL=oldCookiesMigration.js.map","import { isChromium } from '../../../tools/utils/browserDetection';\nimport { ExperimentalFeature, isExperimentalFeatureEnabled } from '../../../tools/experimentalFeatures';\nimport { getCurrentSite, areCookiesAuthorized, getCookie, setCookie } from '../../../browser/cookie';\nimport { tryOldCookiesMigration } from '../oldCookiesMigration';\nimport { SESSION_COOKIE_EXPIRATION_DELAY, SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY, SessionPersistence, } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nexport function selectCookieStrategy(initConfiguration) {\n var cookieOptions = buildCookieOptions(initConfiguration);\n return areCookiesAuthorized(cookieOptions) ? { type: SessionPersistence.COOKIE, cookieOptions: cookieOptions } : undefined;\n}\nexport function initCookieStrategy(cookieOptions) {\n var cookieStore = {\n /**\n * Lock strategy allows mitigating issues due to concurrent access to cookie.\n * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.\n */\n isLockEnabled: isChromium(),\n persistSession: persistSessionCookie(cookieOptions),\n retrieveSession: retrieveSessionCookie,\n expireSession: function (sessionState) { return expireSessionCookie(cookieOptions, sessionState); },\n };\n tryOldCookiesMigration(cookieStore);\n return cookieStore;\n}\nfunction persistSessionCookie(options) {\n return function (session) {\n setCookie(SESSION_STORE_KEY, toSessionString(session), SESSION_EXPIRATION_DELAY, options);\n };\n}\nfunction expireSessionCookie(options, sessionState) {\n var expiredSessionState = getExpiredSessionState(sessionState);\n setCookie(SESSION_STORE_KEY, toSessionString(expiredSessionState), isExperimentalFeatureEnabled(ExperimentalFeature.ANONYMOUS_USER_TRACKING)\n ? SESSION_COOKIE_EXPIRATION_DELAY\n : SESSION_TIME_OUT_DELAY, options);\n}\nfunction retrieveSessionCookie() {\n var sessionString = getCookie(SESSION_STORE_KEY);\n var sessionState = toSessionState(sessionString);\n return sessionState;\n}\nexport function buildCookieOptions(initConfiguration) {\n var cookieOptions = {};\n cookieOptions.secure =\n !!initConfiguration.useSecureSessionCookie ||\n !!initConfiguration.usePartitionedCrossSiteSessionCookie ||\n !!initConfiguration.useCrossSiteSessionCookie;\n cookieOptions.crossSite =\n !!initConfiguration.usePartitionedCrossSiteSessionCookie || !!initConfiguration.useCrossSiteSessionCookie;\n cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n if (initConfiguration.trackSessionAcrossSubdomains) {\n cookieOptions.domain = getCurrentSite();\n }\n return cookieOptions;\n}\n//# sourceMappingURL=sessionInCookie.js.map","import { generateUUID } from '../../../tools/utils/stringUtils';\nimport { SessionPersistence } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nvar LOCAL_STORAGE_TEST_KEY = '_dd_test_';\nexport function selectLocalStorageStrategy() {\n try {\n var id = generateUUID();\n var testKey = \"\".concat(LOCAL_STORAGE_TEST_KEY).concat(id);\n localStorage.setItem(testKey, id);\n var retrievedId = localStorage.getItem(testKey);\n localStorage.removeItem(testKey);\n return id === retrievedId ? { type: SessionPersistence.LOCAL_STORAGE } : undefined;\n }\n catch (_a) {\n return undefined;\n }\n}\nexport function initLocalStorageStrategy() {\n return {\n isLockEnabled: false,\n persistSession: persistInLocalStorage,\n retrieveSession: retrieveSessionFromLocalStorage,\n expireSession: expireSessionFromLocalStorage,\n };\n}\nfunction persistInLocalStorage(sessionState) {\n localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState));\n}\nfunction retrieveSessionFromLocalStorage() {\n var sessionString = localStorage.getItem(SESSION_STORE_KEY);\n return toSessionState(sessionString);\n}\nfunction expireSessionFromLocalStorage(previousSessionState) {\n persistInLocalStorage(getExpiredSessionState(previousSessionState));\n}\n//# sourceMappingURL=sessionInLocalStorage.js.map","import { setTimeout } from '../../tools/timer';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { expandSessionState, isSessionInExpiredState } from './sessionState';\nexport var LOCK_RETRY_DELAY = 10;\nexport var LOCK_MAX_TRIES = 100;\nvar bufferedOperations = [];\nvar ongoingOperations;\nexport function processSessionStoreOperations(operations, sessionStoreStrategy, numberOfRetries) {\n var _a;\n if (numberOfRetries === void 0) { numberOfRetries = 0; }\n var isLockEnabled = sessionStoreStrategy.isLockEnabled, persistSession = sessionStoreStrategy.persistSession, expireSession = sessionStoreStrategy.expireSession;\n var persistWithLock = function (session) { return persistSession(assign({}, session, { lock: currentLock })); };\n var retrieveStore = function () {\n var session = sessionStoreStrategy.retrieveSession();\n var lock = session.lock;\n if (session.lock) {\n delete session.lock;\n }\n return {\n session: session,\n lock: lock,\n };\n };\n if (!ongoingOperations) {\n ongoingOperations = operations;\n }\n if (operations !== ongoingOperations) {\n bufferedOperations.push(operations);\n return;\n }\n if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {\n next(sessionStoreStrategy);\n return;\n }\n var currentLock;\n var currentStore = retrieveStore();\n if (isLockEnabled) {\n // if someone has lock, retry later\n if (currentStore.lock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n // acquire lock\n currentLock = generateUUID();\n persistWithLock(currentStore.session);\n // if lock is not acquired, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n var processedSession = operations.process(currentStore.session);\n if (isLockEnabled) {\n // if lock corrupted after process, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n if (processedSession) {\n if (isSessionInExpiredState(processedSession)) {\n expireSession(processedSession);\n }\n else {\n expandSessionState(processedSession);\n if (isLockEnabled) {\n persistWithLock(processedSession);\n }\n else {\n persistSession(processedSession);\n }\n }\n }\n if (isLockEnabled) {\n // correctly handle lock around expiration would require to handle this case properly at several levels\n // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n if (!(processedSession && isSessionInExpiredState(processedSession))) {\n // if lock corrupted after persist, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n persistSession(currentStore.session);\n processedSession = currentStore.session;\n }\n }\n // call after even if session is not persisted in order to perform operations on\n // up-to-date session state value => the value could have been modified by another tab\n (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentStore.session);\n next(sessionStoreStrategy);\n}\nfunction retryLater(operations, sessionStore, currentNumberOfRetries) {\n setTimeout(function () {\n processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1);\n }, LOCK_RETRY_DELAY);\n}\nfunction next(sessionStore) {\n ongoingOperations = undefined;\n var nextOperations = bufferedOperations.shift();\n if (nextOperations) {\n processSessionStoreOperations(nextOperations, sessionStore);\n }\n}\n//# sourceMappingURL=sessionStoreOperations.js.map","import { clearInterval, setInterval } from '../../tools/timer';\nimport { Observable } from '../../tools/observable';\nimport { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { display } from '../../tools/display';\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie';\nimport { getExpiredSessionState, isSessionInExpiredState, isSessionInNotStartedState, isSessionStarted, } from './sessionState';\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage';\nimport { processSessionStoreOperations } from './sessionStoreOperations';\nimport { SessionPersistence } from './sessionConstants';\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport var STORAGE_POLL_DELAY = ONE_SECOND;\n/**\n * Selects the correct session store strategy type based on the configuration and storage\n * availability.\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n switch (initConfiguration.sessionPersistence) {\n case SessionPersistence.COOKIE:\n return selectCookieStrategy(initConfiguration);\n case SessionPersistence.LOCAL_STORAGE:\n return selectLocalStorageStrategy();\n case undefined: {\n var sessionStoreStrategyType = selectCookieStrategy(initConfiguration);\n if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n sessionStoreStrategyType = selectLocalStorageStrategy();\n }\n return sessionStoreStrategyType;\n }\n default:\n display.error(\"Invalid session persistence '\".concat(String(initConfiguration.sessionPersistence), \"'\"));\n }\n}\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(sessionStoreStrategyType, productKey, computeSessionState) {\n var renewObservable = new Observable();\n var expireObservable = new Observable();\n var sessionStateUpdateObservable = new Observable();\n var sessionStoreStrategy = sessionStoreStrategyType.type === SessionPersistence.COOKIE\n ? initCookieStrategy(sessionStoreStrategyType.cookieOptions)\n : initLocalStorageStrategy();\n var expireSession = sessionStoreStrategy.expireSession;\n var watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);\n var sessionCache;\n startSession();\n var _a = throttle(function () {\n processSessionStoreOperations({\n process: function (sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return;\n }\n var synchronizedSession = synchronizeSession(sessionState);\n expandOrRenewSessionState(synchronizedSession);\n return synchronizedSession;\n },\n after: function (sessionState) {\n if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n renewSessionInCache(sessionState);\n }\n sessionCache = sessionState;\n },\n }, sessionStoreStrategy);\n }, STORAGE_POLL_DELAY), throttledExpandOrRenewSession = _a.throttled, cancelExpandOrRenewSession = _a.cancel;\n function expandSession() {\n processSessionStoreOperations({\n process: function (sessionState) { return (hasSessionInCache() ? synchronizeSession(sessionState) : undefined); },\n }, sessionStoreStrategy);\n }\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session store\n * - if the session is not active, clear the session store and expire the session cache\n */\n function watchSession() {\n processSessionStoreOperations({\n process: function (sessionState) {\n return isSessionInExpiredState(sessionState) ? getExpiredSessionState(sessionState) : undefined;\n },\n after: synchronizeSession,\n }, sessionStoreStrategy);\n }\n function synchronizeSession(sessionState) {\n if (isSessionInExpiredState(sessionState)) {\n sessionState = getExpiredSessionState(sessionState);\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache();\n }\n else {\n sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState });\n sessionCache = sessionState;\n }\n }\n return sessionState;\n }\n function startSession() {\n processSessionStoreOperations({\n process: function (sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return getExpiredSessionState(sessionState);\n }\n },\n after: function (sessionState) {\n sessionCache = sessionState;\n },\n }, sessionStoreStrategy);\n }\n function expandOrRenewSessionState(sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return false;\n }\n var _a = computeSessionState(sessionState[productKey]), trackingType = _a.trackingType, isTracked = _a.isTracked;\n sessionState[productKey] = trackingType;\n delete sessionState.isExpired;\n if (isTracked && !sessionState.id) {\n sessionState.id = generateUUID();\n sessionState.created = String(dateNow());\n }\n }\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined;\n }\n function isSessionInCacheOutdated(sessionState) {\n return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey];\n }\n function expireSessionInCache() {\n sessionCache = getExpiredSessionState(sessionCache);\n expireObservable.notify();\n }\n function renewSessionInCache(sessionState) {\n sessionCache = sessionState;\n renewObservable.notify();\n }\n function updateSessionState(partialSessionState) {\n processSessionStoreOperations({\n process: function (sessionState) { return assign({}, sessionState, partialSessionState); },\n after: synchronizeSession,\n }, sessionStoreStrategy);\n }\n return {\n expandOrRenewSession: throttledExpandOrRenewSession,\n expandSession: expandSession,\n getSession: function () { return sessionCache; },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n sessionStateUpdateObservable: sessionStateUpdateObservable,\n restartSession: startSession,\n expire: function () {\n cancelExpandOrRenewSession();\n expireSession(sessionCache);\n synchronizeSession(getExpiredSessionState(sessionCache));\n },\n stop: function () {\n clearInterval(watchSessionTimeoutId);\n },\n updateSessionState: updateSessionState,\n };\n}\n//# sourceMappingURL=sessionStore.js.map","import { Observable } from '../tools/observable';\nexport var TrackingConsent = {\n GRANTED: 'granted',\n NOT_GRANTED: 'not-granted',\n};\nexport function createTrackingConsentState(currentConsent) {\n var observable = new Observable();\n return {\n tryToInit: function (trackingConsent) {\n if (!currentConsent) {\n currentConsent = trackingConsent;\n }\n },\n update: function (trackingConsent) {\n currentConsent = trackingConsent;\n observable.notify();\n },\n isGranted: function () {\n return currentConsent === TrackingConsent.GRANTED;\n },\n observable: observable,\n };\n}\n//# sourceMappingURL=trackingConsent.js.map","import { noop } from '../utils/functionUtils';\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n if (typeof value !== 'object' || value === null) {\n return JSON.stringify(value);\n }\n // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n // subclasses.\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n var restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n var restoreValueToJson = detachToJsonMethod(value);\n try {\n return JSON.stringify(value, replacer, space);\n }\n catch (_a) {\n return '';\n }\n finally {\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n restoreValuePrototypeToJson();\n restoreValueToJson();\n }\n}\nexport function detachToJsonMethod(value) {\n var object = value;\n var objectToJson = object.toJSON;\n if (objectToJson) {\n delete object.toJSON;\n return function () {\n object.toJSON = objectToJson;\n };\n }\n return noop;\n}\n//# sourceMappingURL=jsonStringify.js.map","import { jsonStringify } from '../serialisation/jsonStringify';\nexport function normalizeUrl(url) {\n return buildUrl(url, location.href).href;\n}\nexport function isValidUrl(url) {\n try {\n return !!buildUrl(url);\n }\n catch (_a) {\n return false;\n }\n}\nexport function getPathName(url) {\n var pathname = buildUrl(url).pathname;\n return pathname[0] === '/' ? pathname : \"/\".concat(pathname);\n}\nexport function buildUrl(url, base) {\n var supportedURL = getSupportedUrl();\n if (supportedURL) {\n try {\n return base !== undefined ? new supportedURL(url, base) : new supportedURL(url);\n }\n catch (error) {\n throw new Error(\"Failed to construct URL: \".concat(String(error), \" \").concat(jsonStringify({ url: url, base: base })));\n }\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 originalURL = URL;\nvar isURLSupported;\nfunction getSupportedUrl() {\n if (isURLSupported === undefined) {\n try {\n var url = new originalURL('http://test/path');\n isURLSupported = url.href === 'http://test/path';\n }\n catch (_a) {\n isURLSupported = false;\n }\n }\n return isURLSupported ? originalURL : undefined;\n}\n//# sourceMappingURL=urlPolyfill.js.map","export var INTAKE_SITE_STAGING = 'datad0g.com';\nexport var INTAKE_SITE_FED_STAGING = 'dd0g-gov.com';\nexport var INTAKE_SITE_US1 = 'datadoghq.com';\nexport var INTAKE_SITE_EU1 = 'datadoghq.eu';\nexport var INTAKE_SITE_US1_FED = 'ddog-gov.com';\nexport var PCI_INTAKE_HOST_US1 = 'pci.browser-intake-datadoghq.com';\nexport var INTAKE_URL_PARAMETERS = ['ddsource', 'ddtags'];\n//# sourceMappingURL=intakeSites.js.map","import { timeStampNow } from '../../tools/utils/timeUtils';\nimport { normalizeUrl } from '../../tools/utils/urlPolyfill';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { INTAKE_SITE_US1, INTAKE_SITE_FED_STAGING, PCI_INTAKE_HOST_US1 } from './intakeSites';\nexport function createEndpointBuilder(initConfiguration, trackType, configurationTags) {\n var buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType);\n return {\n build: function (api, payload) {\n var parameters = buildEndpointParameters(initConfiguration, trackType, configurationTags, api, payload);\n return buildUrlWithParameters(parameters);\n },\n urlPrefix: buildUrlWithParameters(''),\n trackType: trackType,\n };\n}\n/**\n * Create a function used to build a full endpoint url from provided parameters. The goal of this\n * function is to pre-compute some parts of the URL to avoid re-computing everything on every\n * request, as only parameters are changing.\n */\nfunction createEndpointUrlWithParametersBuilder(initConfiguration, trackType) {\n var path = \"/api/v2/\".concat(trackType);\n var proxy = initConfiguration.proxy;\n if (typeof proxy === 'string') {\n var normalizedProxyUrl_1 = normalizeUrl(proxy);\n return function (parameters) { return \"\".concat(normalizedProxyUrl_1, \"?ddforward=\").concat(encodeURIComponent(\"\".concat(path, \"?\").concat(parameters))); };\n }\n if (typeof proxy === 'function') {\n return function (parameters) { return proxy({ path: path, parameters: parameters }); };\n }\n var host = buildEndpointHost(trackType, initConfiguration);\n return function (parameters) { return \"https://\".concat(host).concat(path, \"?\").concat(parameters); };\n}\nfunction buildEndpointHost(trackType, initConfiguration) {\n var _a = initConfiguration.site, site = _a === void 0 ? INTAKE_SITE_US1 : _a, internalAnalyticsSubdomain = initConfiguration.internalAnalyticsSubdomain;\n if (trackType === 'logs' && initConfiguration.usePciIntake && site === INTAKE_SITE_US1) {\n return PCI_INTAKE_HOST_US1;\n }\n if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n return \"\".concat(internalAnalyticsSubdomain, \".\").concat(INTAKE_SITE_US1);\n }\n if (site === INTAKE_SITE_FED_STAGING) {\n return \"http-intake.logs.\".concat(site);\n }\n var domainParts = site.split('.');\n var extension = domainParts.pop();\n return \"browser-intake-\".concat(domainParts.join('-'), \".\").concat(extension);\n}\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters(_a, trackType, configurationTags, api, _b) {\n var clientToken = _a.clientToken, internalAnalyticsSubdomain = _a.internalAnalyticsSubdomain;\n var retry = _b.retry, encoding = _b.encoding;\n var tags = [\"sdk_version:\".concat(\"5.35.0\"), \"api:\".concat(api)].concat(configurationTags);\n if (retry) {\n tags.push(\"retry_count:\".concat(retry.count), \"retry_after:\".concat(retry.lastFailureStatus));\n }\n var parameters = [\n 'ddsource=browser',\n \"ddtags=\".concat(encodeURIComponent(tags.join(','))),\n \"dd-api-key=\".concat(clientToken),\n \"dd-evp-origin-version=\".concat(encodeURIComponent(\"5.35.0\")),\n 'dd-evp-origin=browser',\n \"dd-request-id=\".concat(generateUUID()),\n ];\n if (encoding) {\n parameters.push(\"dd-evp-encoding=\".concat(encoding));\n }\n if (trackType === 'rum') {\n parameters.push(\"batch_time=\".concat(timeStampNow()));\n }\n if (internalAnalyticsSubdomain) {\n parameters.reverse();\n }\n return parameters.join('&');\n}\n//# sourceMappingURL=endpointBuilder.js.map","import { DOCS_ORIGIN, MORE_DETAILS, 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}\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 || hasForbiddenCharacters(rawValue)) {\n display.warn(\"\".concat(key, \" value doesn't meet tag requirements and will be sanitized. \").concat(MORE_DETAILS, \" \").concat(DOCS_ORIGIN, \"/getting_started/tagging/#defining-tags\"));\n }\n // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n // by forging a value containing commas.\n var sanitizedValue = rawValue.replace(/,/g, '_');\n return \"\".concat(key, \":\").concat(sanitizedValue);\n}\nfunction hasForbiddenCharacters(rawValue) {\n // Unicode property escapes is not supported in all browsers, so we use a try/catch.\n // Todo: Remove the try/catch when dropping IE11.\n if (!supportUnicodePropertyEscapes()) {\n return false;\n }\n // We use the Unicode property escapes to match any character that is a letter including other languages like Chinese, Japanese, etc.\n // p{Ll} matches a lowercase letter.\n // p{Lo} matches a letter that is neither uppercase nor lowercase (ex: Japanese characters).\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#unicode_property_escapes_vs._character_classes\n return new RegExp('[^\\\\p{Ll}\\\\p{Lo}0-9_:./-]', 'u').test(rawValue);\n}\nexport function supportUnicodePropertyEscapes() {\n try {\n new RegExp('[\\\\p{Ll}]', 'u');\n return true;\n }\n catch (_a) {\n return false;\n }\n}\n//# sourceMappingURL=tags.js.map","import { assign, includes } from '../../tools/utils/polyfills';\nimport { createEndpointBuilder } from './endpointBuilder';\nimport { buildTags } from './tags';\nimport { INTAKE_SITE_US1, INTAKE_URL_PARAMETERS } from './intakeSites';\nexport function computeTransportConfiguration(initConfiguration) {\n var site = initConfiguration.site || INTAKE_SITE_US1;\n var tags = buildTags(initConfiguration);\n var endpointBuilders = computeEndpointBuilders(initConfiguration, tags);\n var replicaConfiguration = computeReplicaConfiguration(initConfiguration, tags);\n return assign({\n replica: replicaConfiguration,\n site: site,\n }, endpointBuilders);\n}\nfunction computeEndpointBuilders(initConfiguration, tags) {\n return {\n logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay', tags),\n };\n}\nfunction computeReplicaConfiguration(initConfiguration, tags) {\n if (!initConfiguration.replica) {\n return;\n }\n var replicaConfiguration = assign({}, initConfiguration, {\n site: INTAKE_SITE_US1,\n clientToken: initConfiguration.replica.clientToken,\n });\n var replicaEndpointBuilders = {\n logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),\n };\n return assign({ applicationId: initConfiguration.replica.applicationId }, replicaEndpointBuilders);\n}\nexport function isIntakeUrl(url) {\n // check if tags is present in the query string\n return INTAKE_URL_PARAMETERS.every(function (param) { return includes(url, param); });\n}\n//# sourceMappingURL=transportConfiguration.js.map","import { catchUserErrors } from '../../tools/catchUserErrors';\nimport { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nimport { ONE_SECOND } from '../../tools/utils/timeUtils';\nimport { isPercentage } from '../../tools/utils/numberUtils';\nimport { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils';\nimport { objectHasValue } from '../../tools/utils/objectUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { selectSessionStoreStrategyType } from '../session/sessionStore';\nimport { TrackingConsent } from '../trackingConsent';\nimport { computeTransportConfiguration } from './transportConfiguration';\nexport var DefaultPrivacyLevel = {\n ALLOW: 'allow',\n MASK: 'mask',\n MASK_USER_INPUT: 'mask-user-input',\n};\nexport var TraceContextInjection = {\n ALL: 'all',\n SAMPLED: 'sampled',\n};\nfunction isString(tag, tagName) {\n if (tag !== undefined && tag !== null && typeof tag !== 'string') {\n display.error(\"\".concat(tagName, \" must be defined as a string\"));\n return false;\n }\n return true;\n}\nfunction isDatadogSite(site) {\n if (site && typeof site === 'string' && !/(datadog|ddog|datad0g|dd0g)/.test(site)) {\n display.error(\"Site should be a valid Datadog site. \".concat(MORE_DETAILS, \" \").concat(DOCS_ORIGIN, \"/getting_started/site/.\"));\n return false;\n }\n return true;\n}\nexport function isSampleRate(sampleRate, name) {\n if (sampleRate !== undefined && !isPercentage(sampleRate)) {\n display.error(\"\".concat(name, \" Sample Rate should be a number between 0 and 100\"));\n return false;\n }\n return true;\n}\nexport function validateAndBuildConfiguration(initConfiguration) {\n var _a, _b, _c, _d, _e;\n if (!initConfiguration || !initConfiguration.clientToken) {\n display.error('Client Token is not configured, we will not send any data.');\n return;\n }\n if (!isDatadogSite(initConfiguration.site) ||\n !isSampleRate(initConfiguration.sessionSampleRate, 'Session') ||\n !isSampleRate(initConfiguration.telemetrySampleRate, 'Telemetry') ||\n !isSampleRate(initConfiguration.telemetryConfigurationSampleRate, 'Telemetry Configuration') ||\n !isSampleRate(initConfiguration.telemetryUsageSampleRate, 'Telemetry Usage') ||\n !isString(initConfiguration.version, 'Version') ||\n !isString(initConfiguration.env, 'Env') ||\n !isString(initConfiguration.service, 'Service')) {\n return;\n }\n if (initConfiguration.trackingConsent !== undefined &&\n !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)) {\n display.error('Tracking Consent should be either \"granted\" or \"not-granted\"');\n return;\n }\n return assign({\n beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n sessionStoreStrategyType: selectSessionStoreStrategyType(initConfiguration),\n sessionSampleRate: (_a = initConfiguration.sessionSampleRate) !== null && _a !== void 0 ? _a : 100,\n telemetrySampleRate: (_b = initConfiguration.telemetrySampleRate) !== null && _b !== void 0 ? _b : 20,\n telemetryConfigurationSampleRate: (_c = initConfiguration.telemetryConfigurationSampleRate) !== null && _c !== void 0 ? _c : 5,\n telemetryUsageSampleRate: (_d = initConfiguration.telemetryUsageSampleRate) !== null && _d !== void 0 ? _d : 5,\n service: initConfiguration.service || undefined,\n silentMultipleInit: !!initConfiguration.silentMultipleInit,\n allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,\n trackingConsent: (_e = initConfiguration.trackingConsent) !== null && _e !== void 0 ? _e : TrackingConsent.GRANTED,\n storeContextsAcrossPages: !!initConfiguration.storeContextsAcrossPages,\n /**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\n batchBytesLimit: 16 * ONE_KIBI_BYTE,\n eventRateLimiterThreshold: 3000,\n maxTelemetryEventsPerPage: 15,\n /**\n * flush automatically, aim to be lower than ALB connection timeout\n * to maximize connection reuse.\n */\n flushTimeout: (30 * ONE_SECOND),\n /**\n * Logs intake limit\n */\n batchMessagesLimit: 50,\n messageBytesLimit: 256 * ONE_KIBI_BYTE,\n }, computeTransportConfiguration(initConfiguration));\n}\nexport function serializeConfiguration(initConfiguration) {\n return {\n session_sample_rate: initConfiguration.sessionSampleRate,\n telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,\n use_before_send: !!initConfiguration.beforeSend,\n use_cross_site_session_cookie: initConfiguration.useCrossSiteSessionCookie,\n use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,\n use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n use_proxy: !!initConfiguration.proxy,\n silent_multiple_init: initConfiguration.silentMultipleInit,\n track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n session_persistence: initConfiguration.sessionPersistence,\n allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,\n store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,\n tracking_consent: initConfiguration.trackingConsent,\n };\n}\n//# sourceMappingURL=configuration.js.map","/**\n * Cross-browser stack trace computation.\n *\n * Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js\n */\nimport { startsWith } from '../utils/polyfills';\nvar UNKNOWN_FUNCTION = '?';\nexport function computeStackTrace(ex) {\n var stack = [];\n var stackProperty = tryToGetString(ex, 'stack');\n var exString = String(ex);\n if (stackProperty && startsWith(stackProperty, exString)) {\n stackProperty = stackProperty.slice(exString.length);\n }\n if (stackProperty) {\n stackProperty.split('\\n').forEach(function (line) {\n var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION;\n }\n stack.push(stackFrame);\n }\n });\n }\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack: stack,\n };\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|snippet||\\\\w+\\\\.|\\\\/).*?)';\nvar filePosition = '(?::(\\\\d+))';\nvar CHROME_LINE_RE = new RegExp(\"^\\\\s*at (.*?) ?\\\\(\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"?\\\\)?\\\\s*$\"), 'i');\nvar CHROME_EVAL_RE = new RegExp(\"\\\\((\\\\S*)\".concat(filePosition).concat(filePosition, \"\\\\)\"));\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 CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(\"^\\\\s*at ?\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"??\\\\s*$\"), 'i');\nfunction parseChromeAnonymousLine(line) {\n var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1],\n };\n}\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 = /^\\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}\nexport function computeStackTraceFromOnErrorMessage(messageObj, url, line, column) {\n var stack = [{ url: url, column: column, line: line }];\n var _a = tryToParseMessage(messageObj), name = _a.name, message = _a.message;\n return {\n name: name,\n message: message,\n stack: stack,\n };\n}\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): )?([\\s\\S]*)$/;\nfunction tryToParseMessage(messageObj) {\n var _a;\n var name;\n var message;\n if ({}.toString.call(messageObj) === '[object String]') {\n ;\n _a = ERROR_TYPES_RE.exec(messageObj), name = _a[1], message = _a[2];\n }\n return { name: name, message: message };\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { callMonitored } from '../monitor';\nimport { noop } from '../utils/functionUtils';\nimport { computeStackTrace } from './computeStackTrace';\n/**\n * Creates a stacktrace without SDK internal frames.\n * Constraints:\n * - Has to be called at the utmost position of the call stack.\n * - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack() {\n /**\n * Skip the two internal frames:\n * - SDK API (console.error, ...)\n * - this function\n * in order to keep only the user calls\n */\n 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 (_a) {\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}\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 formatErrorMessage(stack) {\n return \"\".concat(stack.name || 'Error', \": \").concat(stack.message);\n}\n//# sourceMappingURL=handlingStack.js.map","import { setTimeout } from './timer';\nimport { callMonitored } from './monitor';\nimport { noop } from './utils/functionUtils';\nimport { arrayFrom, startsWith } from './utils/polyfills';\nimport { createHandlingStack } from './stackTrace/handlingStack';\n/**\n * Instruments a method on a object, calling the given callback before the original method is\n * invoked. The callback receives an object with information about the method call.\n *\n * This function makes sure that we are \"good citizens\" regarding third party instrumentations: when\n * removing the instrumentation, the original method is usually restored, but if a third party\n * instrumentation was set after ours, we keep it in place and just replace our instrumentation with\n * a noop.\n *\n * Note: it is generally better to instrument methods that are \"owned\" by the object instead of ones\n * that are inherited from the prototype chain. Example:\n * * do: `instrumentMethod(Array.prototype, 'push', ...)`\n * * don't: `instrumentMethod([], 'push', ...)`\n *\n * This method is also used to set event handler properties (ex: window.onerror = ...), as it has\n * the same requirements as instrumenting a method:\n * * if the event handler is already set by a third party, we need to call it and not just blindly\n * override it.\n * * if the event handler is set by a third party after us, we need to keep it in place when\n * removing ours.\n *\n * @example\n *\n * instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {\n * console.log('Before calling fetch on', target, 'with parameters', parameters)\n *\n * onPostCall((result) => {\n * console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)\n * })\n * })\n */\nexport function instrumentMethod(targetPrototype, method, onPreCall, _a) {\n var _b = _a === void 0 ? {} : _a, computeHandlingStack = _b.computeHandlingStack;\n var original = targetPrototype[method];\n if (typeof original !== 'function') {\n if (method in targetPrototype && startsWith(method, 'on')) {\n original = noop;\n }\n else {\n return { stop: noop };\n }\n }\n var stopped = false;\n var instrumentation = function () {\n if (stopped) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return original.apply(this, arguments);\n }\n var parameters = arrayFrom(arguments);\n var postCallCallback;\n callMonitored(onPreCall, null, [\n {\n target: this,\n parameters: parameters,\n onPostCall: function (callback) {\n postCallCallback = callback;\n },\n handlingStack: computeHandlingStack ? createHandlingStack() : undefined,\n },\n ]);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n var result = original.apply(this, parameters);\n if (postCallCallback) {\n callMonitored(postCallCallback, null, [result]);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result;\n };\n targetPrototype[method] = instrumentation;\n return {\n stop: function () {\n stopped = true;\n // If the instrumentation has been removed by a third party, keep the last one\n if (targetPrototype[method] === instrumentation) {\n targetPrototype[method] = original;\n }\n },\n };\n}\nexport function instrumentSetter(targetPrototype, property, after) {\n var originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property);\n if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n return { stop: noop };\n }\n var stoppedInstrumentation = noop;\n var instrumentation = function (target, value) {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(function () {\n if (instrumentation !== stoppedInstrumentation) {\n after(target, value);\n }\n }, 0);\n };\n var instrumentationWrapper = function (value) {\n originalDescriptor.set.call(this, value);\n instrumentation(this, value);\n };\n Object.defineProperty(targetPrototype, property, {\n set: instrumentationWrapper,\n });\n return {\n stop: function () {\n var _a;\n if (((_a = Object.getOwnPropertyDescriptor(targetPrototype, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n Object.defineProperty(targetPrototype, property, originalDescriptor);\n }\n instrumentation = stoppedInstrumentation;\n },\n };\n}\n//# sourceMappingURL=instrumentMethod.js.map","import { display } from '../display';\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils';\nimport { detachToJsonMethod } from './jsonStringify';\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nvar SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE;\n// Symbol for the root element of the JSONPath used for visited objects\nvar JSON_PATH_ROOT_ELEMENT = '$';\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nvar KEY_DECORATION_LENGTH = 3;\nexport function sanitize(source, maxCharacterCount) {\n if (maxCharacterCount === void 0) { maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT; }\n // Unbind any toJSON function we may have on [] or {} prototypes\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n var containerQueue = [];\n var visitedObjectsWithPath = new WeakMap();\n var sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);\n var serializedSanitizedData = JSON.stringify(sanitizedData);\n var accumulatedCharacterCount = serializedSanitizedData ? serializedSanitizedData.length : 0;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source);\n return undefined;\n }\n while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n var containerToProcess = containerQueue.shift();\n var separatorLength = 0; // 0 for the first element, 1 for subsequent elements\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (var key = 0; key < containerToProcess.source.length; key++) {\n var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length;\n }\n else {\n // When an element of an Array (targetData) is undefined, it is serialized as null:\n // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n accumulatedCharacterCount += 4;\n }\n accumulatedCharacterCount += separatorLength;\n separatorLength = 1;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n else {\n for (var key in containerToProcess.source) {\n if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount +=\n JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;\n separatorLength = 1;\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n }\n }\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n return sanitizedData;\n}\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {\n // Start by handling toJSON, as we want to sanitize its output\n var sourceToSanitize = tryToApplyToJSON(source);\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize);\n }\n var sanitizedSource = sanitizeObjects(sourceToSanitize);\n if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n return sanitizedSource;\n }\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n var sourceAsObject = source;\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return \"[Reference seen at \".concat(visitedObjectsWithPath.get(sourceAsObject), \"]\");\n }\n // Add processed source to queue\n var currentPath = key !== undefined ? \"\".concat(parentPath, \".\").concat(key) : parentPath;\n var target = Array.isArray(sourceToSanitize) ? [] : {};\n visitedObjectsWithPath.set(sourceAsObject, currentPath);\n queue.push({ source: sourceToSanitize, target: target, path: currentPath });\n return target;\n}\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return \"[BigInt] \".concat(value.toString());\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return \"[Function] \".concat(value.name || 'unknown');\n }\n // JSON.stringify() does not serialize symbols.\n if (typeof value === 'symbol') {\n return \"[Symbol] \".concat(value.description || value.toString());\n }\n return value;\n}\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value) {\n try {\n // Handle events - Keep a simple implementation to avoid breaking changes\n if (value instanceof Event) {\n return {\n isTrusted: value.isTrusted,\n };\n }\n // Handle all remaining object types in a generic way\n var result = Object.prototype.toString.call(value);\n var match = result.match(/\\[object (.*)\\]/);\n if (match && match[1]) {\n return \"[\".concat(match[1], \"]\");\n }\n }\n catch (_a) {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]';\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n var object = value;\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON();\n }\n catch (_a) {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n return value;\n}\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n display.warn(\"The data provided has been \".concat(changeType, \" as it is over the limit of \").concat(maxCharacterCount, \" characters:\"), source);\n}\n//# sourceMappingURL=sanitize.js.map","import { sanitize } from '../../tools/serialisation/sanitize';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nexport var NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error';\nexport function computeRawError(_a) {\n var stackTrace = _a.stackTrace, originalError = _a.originalError, handlingStack = _a.handlingStack, startClocks = _a.startClocks, nonErrorPrefix = _a.nonErrorPrefix, source = _a.source, handling = _a.handling;\n var isErrorInstance = isError(originalError);\n var message = computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError);\n var stack = hasUsableStack(isErrorInstance, stackTrace)\n ? toStackTraceString(stackTrace)\n : NO_ERROR_STACK_PRESENT_MESSAGE;\n var causes = isErrorInstance ? flattenErrorCauses(originalError, source) : undefined;\n var type = stackTrace ? stackTrace.name : undefined;\n var fingerprint = tryToGetFingerprint(originalError);\n return {\n startClocks: startClocks,\n source: source,\n handling: handling,\n handlingStack: handlingStack,\n originalError: originalError,\n type: type,\n message: message,\n stack: stack,\n causes: causes,\n fingerprint: fingerprint,\n };\n}\nfunction computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError) {\n // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n // TODO rework tracekit integration to avoid scattering error building logic\n return (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.message) && (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name)\n ? stackTrace.message\n : !isErrorInstance\n ? \"\".concat(nonErrorPrefix, \" \").concat(jsonStringify(sanitize(originalError)))\n : 'Empty message';\n}\nfunction hasUsableStack(isErrorInstance, stackTrace) {\n if (stackTrace === undefined) {\n return false;\n }\n if (isErrorInstance) {\n return true;\n }\n // handle cases where tracekit return stack = [] or stack = [{url: undefined, line: undefined, column: undefined}]\n // TODO rework tracekit integration to avoid generating those unusable stack\n return stackTrace.stack.length > 0 && (stackTrace.stack.length > 1 || stackTrace.stack[0].url !== undefined);\n}\nexport function tryToGetFingerprint(originalError) {\n return isError(originalError) && 'dd_fingerprint' in originalError ? String(originalError.dd_fingerprint) : undefined;\n}\nexport function getFileFromStackTraceString(stack) {\n var _a;\n return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function isError(error) {\n return error instanceof Error || Object.prototype.toString.call(error) === '[object Error]';\n}\nexport function flattenErrorCauses(error, parentSource) {\n var currentError = error;\n var causes = [];\n while (isError(currentError === null || currentError === void 0 ? void 0 : currentError.cause) && causes.length < 10) {\n var stackTrace = computeStackTrace(currentError.cause);\n causes.push({\n message: currentError.cause.message,\n source: parentSource,\n type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n stack: stackTrace && toStackTraceString(stackTrace),\n });\n currentError = currentError.cause;\n }\n return causes.length ? causes : undefined;\n}\n//# sourceMappingURL=error.js.map","export var ErrorSource = {\n AGENT: 'agent',\n CONSOLE: 'console',\n CUSTOM: 'custom',\n LOGGER: 'logger',\n NETWORK: 'network',\n SOURCE: 'source',\n REPORT: 'report',\n};\n//# sourceMappingURL=error.types.js.map","import { instrumentMethod } from '../../tools/instrumentMethod';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nimport { computeStackTrace, computeStackTraceFromOnErrorMessage } from '../../tools/stackTrace/computeStackTrace';\nimport { computeRawError, isError } from './error';\nimport { ErrorSource } from './error.types';\nexport function trackRuntimeError(errorObservable) {\n var handleRuntimeError = function (stackTrace, originalError) {\n var rawError = computeRawError({\n stackTrace: stackTrace,\n originalError: originalError,\n startClocks: clocksNow(),\n nonErrorPrefix: \"Uncaught\" /* NonErrorPrefix.UNCAUGHT */,\n source: ErrorSource.SOURCE,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n });\n errorObservable.notify(rawError);\n };\n var stopInstrumentingOnError = instrumentOnError(handleRuntimeError).stop;\n var stopInstrumentingOnUnhandledRejection = instrumentUnhandledRejection(handleRuntimeError).stop;\n return {\n stop: function () {\n stopInstrumentingOnError();\n stopInstrumentingOnUnhandledRejection();\n },\n };\n}\nexport function instrumentOnError(callback) {\n return instrumentMethod(window, 'onerror', function (_a) {\n var _b = _a.parameters, messageObj = _b[0], url = _b[1], line = _b[2], column = _b[3], errorObj = _b[4];\n var stackTrace;\n if (isError(errorObj)) {\n stackTrace = computeStackTrace(errorObj);\n }\n else {\n stackTrace = computeStackTraceFromOnErrorMessage(messageObj, url, line, column);\n }\n callback(stackTrace, errorObj !== null && errorObj !== void 0 ? errorObj : messageObj);\n });\n}\nexport function instrumentUnhandledRejection(callback) {\n return instrumentMethod(window, 'onunhandledrejection', function (_a) {\n var e = _a.parameters[0];\n var reason = e.reason || 'Empty reason';\n var stack = computeStackTrace(reason);\n callback(stack, reason);\n });\n}\n//# sourceMappingURL=trackRuntimeError.js.map","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { assign } from '../tools/utils/polyfills';\nimport { display } from '../tools/display';\nexport function makePublicApi(stub) {\n var publicApi = assign({\n version: \"5.35.0\",\n // This API method is intentionally not monitored, since the only thing executed is the\n // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and\n // we don't want to interfere with the user uncaught exceptions.\n onReady: function (callback) {\n callback();\n },\n }, stub);\n // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n // as much as possible but of course it's not a real protection.\n Object.defineProperty(publicApi, '_setDebug', {\n get: function () {\n return setDebugMode;\n },\n enumerable: false,\n });\n return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n var existingGlobalVariable = global[name];\n if (existingGlobalVariable && !existingGlobalVariable.q && existingGlobalVariable.version) {\n display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.');\n }\n global[name] = api;\n if (existingGlobalVariable && existingGlobalVariable.q) {\n existingGlobalVariable.q.forEach(function (fn) { return catchUserErrors(fn, 'onReady callback threw an error:')(); });\n }\n}\n//# sourceMappingURL=init.js.map","import { display } from '../tools/display';\nexport function displayAlreadyInitializedError(sdkName, initConfiguration) {\n if (!initConfiguration.silentMultipleInit) {\n display.error(\"\".concat(sdkName, \" is already initialized.\"));\n }\n}\n//# sourceMappingURL=displayAlreadyInitializedError.js.map","import { monitor } from '../tools/monitor';\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue';\n/**\n * Add an event listener to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(configuration, eventTarget, eventName, listener, options) {\n return addEventListeners(configuration, eventTarget, [eventName], listener, options);\n}\n/**\n * Add event listeners to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(configuration, eventTarget, eventNames, listener, _a) {\n var _b = _a === void 0 ? {} : _a, once = _b.once, capture = _b.capture, passive = _b.passive;\n var listenerWithMonitor = monitor(function (event) {\n if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {\n return;\n }\n if (once) {\n stop();\n }\n listener(event);\n });\n var options = passive ? { capture: capture, passive: passive } : capture;\n // Use the window.EventTarget.prototype when possible to avoid wrong overrides (e.g: https://github.com/salesforce/lwc/issues/1824)\n var listenerTarget = window.EventTarget && eventTarget instanceof EventTarget ? window.EventTarget.prototype : eventTarget;\n var add = getZoneJsOriginalValue(listenerTarget, 'addEventListener');\n eventNames.forEach(function (eventName) { return add.call(eventTarget, eventName, listenerWithMonitor, options); });\n function stop() {\n var remove = getZoneJsOriginalValue(listenerTarget, 'removeEventListener');\n eventNames.forEach(function (eventName) { return remove.call(eventTarget, eventName, listenerWithMonitor, options); });\n }\n return {\n stop: stop,\n };\n}\n//# sourceMappingURL=addEventListener.js.map","import { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { monitor } from '../../tools/monitor';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { addEventListener } from '../../browser/addEventListener';\nimport { assign, includes } from '../../tools/utils/polyfills';\nimport { safeTruncate } from '../../tools/utils/stringUtils';\nimport { ErrorSource } from '../error/error.types';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nexport var RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation',\n};\nexport function initReportObservable(configuration, apis) {\n var observables = [];\n if (includes(apis, RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration));\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 return new Observable(function (observable) {\n if (!window.ReportingObserver) {\n return;\n }\n var handleReports = monitor(function (reports, _) {\n return reports.forEach(function (report) { return observable.notify(buildRawReportErrorFromReport(report)); });\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}\nfunction createCspViolationReportObservable(configuration) {\n return new Observable(function (observable) {\n var stop = addEventListener(configuration, document, \"securitypolicyviolation\" /* DOM_EVENT.SECURITY_POLICY_VIOLATION */, function (event) {\n observable.notify(buildRawReportErrorFromCspViolation(event));\n }).stop;\n return stop;\n });\n}\nfunction buildRawReportErrorFromReport(report) {\n var type = report.type, body = report.body;\n return buildRawReportError({\n type: body.id,\n message: \"\".concat(type, \": \").concat(body.message),\n originalError: report,\n stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n });\n}\nfunction buildRawReportErrorFromCspViolation(event) {\n var message = \"'\".concat(event.blockedURI, \"' blocked by '\").concat(event.effectiveDirective, \"' directive\");\n return buildRawReportError({\n type: event.effectiveDirective,\n message: \"\".concat(RawReportType.cspViolation, \": \").concat(message),\n originalError: event,\n csp: {\n disposition: event.disposition,\n },\n stack: buildStack(event.effectiveDirective, event.originalPolicy\n ? \"\".concat(message, \" of the policy \\\"\").concat(safeTruncate(event.originalPolicy, 100, '...'), \"\\\"\")\n : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber),\n });\n}\nfunction buildRawReportError(partial) {\n return assign({\n startClocks: clocksNow(),\n source: ErrorSource.REPORT,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n }, partial);\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 !== null && lineNumber !== void 0 ? lineNumber : undefined,\n column: columnNumber !== null && columnNumber !== void 0 ? columnNumber : undefined,\n },\n ],\n })\n : undefined;\n}\n//# sourceMappingURL=reportObservable.js.map","export function sendToExtension(type, payload) {\n var callback = window.__ddBrowserSdkExtensionCallback;\n if (callback) {\n callback({ type: type, payload: payload });\n }\n}\n//# sourceMappingURL=sendToExtension.js.map","import { getType } from './utils/typeUtils';\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto(destination, source, circularReferenceChecker) {\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}\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//# sourceMappingURL=mergeInto.js.map","export function getConnectivity() {\n var _a;\n var navigator = window.navigator;\n return {\n status: navigator.onLine ? 'connected' : 'not_connected',\n interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : undefined,\n effective_type: (_a = navigator.connection) === null || _a === void 0 ? void 0 : _a.effectiveType,\n };\n}\n//# sourceMappingURL=connectivity.js.map","import { arrayFrom } from './polyfills';\nexport function removeDuplicates(array) {\n var set = new Set();\n array.forEach(function (item) { return set.add(item); });\n return arrayFrom(set);\n}\nexport function removeItem(array, item) {\n var index = array.indexOf(item);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrayUtils.js.map","import { removeItem } from './utils/arrayUtils';\nvar BUFFER_LIMIT = 500;\nexport function createBoundedBuffer() {\n var buffer = [];\n var add = function (callback) {\n var length = buffer.push(callback);\n if (length > BUFFER_LIMIT) {\n buffer.splice(0, 1);\n }\n };\n var remove = function (callback) {\n removeItem(buffer, callback);\n };\n var drain = function (arg) {\n buffer.forEach(function (callback) { return callback(arg); });\n buffer.length = 0;\n };\n return {\n add: add,\n remove: remove,\n drain: drain,\n };\n}\n//# sourceMappingURL=boundedBuffer.js.map","export var TelemetryType = {\n log: 'log',\n configuration: 'configuration',\n usage: 'usage',\n};\n//# sourceMappingURL=rawTelemetryEvent.types.js.map","import { ConsoleApiName } from '../../tools/display';\nimport { NO_ERROR_STACK_PRESENT_MESSAGE, isError } from '../error/error';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures';\nimport { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration';\nimport { Observable } from '../../tools/observable';\nimport { timeStampNow } from '../../tools/utils/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { sendToExtension } from '../../tools/sendToExtension';\nimport { startsWith, arrayFrom, includes, assign } from '../../tools/utils/polyfills';\nimport { performDraw } from '../../tools/utils/numberUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { combine } from '../../tools/mergeInto';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { getConnectivity } from '../connectivity';\nimport { createBoundedBuffer } from '../../tools/boundedBuffer';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nvar ALLOWED_FRAME_URLS = [\n 'https://www.datadoghq-browser-agent.com',\n 'https://www.datad0g-browser-agent.com',\n 'https://d3uc069fcn7uxw.cloudfront.net',\n 'https://d20xtzwzcl0ceb.cloudfront.net',\n 'http://localhost',\n '',\n];\nvar TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\n// eslint-disable-next-line local-rules/disallow-side-effects\nvar preStartTelemetryBuffer = createBoundedBuffer();\nvar onRawTelemetryEventCollected = function (event) {\n preStartTelemetryBuffer.add(function () { return onRawTelemetryEventCollected(event); });\n};\nexport function startTelemetry(telemetryService, configuration) {\n var _a;\n var contextProvider;\n var observable = new Observable();\n var alreadySentEvents = new Set();\n var telemetryEnabled = !includes(TELEMETRY_EXCLUDED_SITES, configuration.site) && performDraw(configuration.telemetrySampleRate);\n var telemetryEnabledPerType = (_a = {},\n _a[TelemetryType.log] = telemetryEnabled,\n _a[TelemetryType.configuration] = telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate),\n _a[TelemetryType.usage] = telemetryEnabled && performDraw(configuration.telemetryUsageSampleRate),\n _a);\n var runtimeEnvInfo = getRuntimeEnvInfo();\n onRawTelemetryEventCollected = function (rawEvent) {\n var stringifiedEvent = jsonStringify(rawEvent);\n if (telemetryEnabledPerType[rawEvent.type] &&\n alreadySentEvents.size < configuration.maxTelemetryEventsPerPage &&\n !alreadySentEvents.has(stringifiedEvent)) {\n var event_1 = toTelemetryEvent(telemetryService, rawEvent, runtimeEnvInfo);\n observable.notify(event_1);\n sendToExtension('telemetry', event_1);\n alreadySentEvents.add(stringifiedEvent);\n }\n };\n startMonitorErrorCollection(addTelemetryError);\n function toTelemetryEvent(telemetryService, event, runtimeEnvInfo) {\n return combine({\n type: 'telemetry',\n date: timeStampNow(),\n service: telemetryService,\n version: \"5.35.0\",\n source: 'browser',\n _dd: {\n format_version: 2,\n },\n telemetry: combine(event, {\n runtime_env: runtimeEnvInfo,\n connectivity: getConnectivity(),\n sdk_setup: \"npm\",\n }),\n experimental_features: arrayFrom(getExperimentalFeatures()),\n }, contextProvider !== undefined ? contextProvider() : {});\n }\n return {\n setContextProvider: function (provider) {\n contextProvider = provider;\n },\n observable: observable,\n enabled: telemetryEnabled,\n };\n}\nfunction getRuntimeEnvInfo() {\n return {\n is_local_file: window.location.protocol === 'file:',\n is_worker: 'WorkerGlobalScope' in self,\n };\n}\nexport function startFakeTelemetry() {\n var events = [];\n onRawTelemetryEventCollected = function (event) {\n events.push(event);\n };\n return events;\n}\n// need to be called after telemetry context is provided and observers are registered\nexport function drainPreStartTelemetry() {\n preStartTelemetryBuffer.drain();\n}\nexport function resetTelemetry() {\n preStartTelemetryBuffer = createBoundedBuffer();\n onRawTelemetryEventCollected = function (event) {\n preStartTelemetryBuffer.add(function () { return onRawTelemetryEventCollected(event); });\n };\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nexport function isTelemetryReplicationAllowed(configuration) {\n return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n onRawTelemetryEventCollected(assign({\n type: TelemetryType.log,\n message: message,\n status: \"debug\" /* StatusType.debug */,\n }, context));\n}\nexport function addTelemetryError(e, context) {\n onRawTelemetryEventCollected(assign({\n type: TelemetryType.log,\n status: \"error\" /* StatusType.error */,\n }, formatError(e), context));\n}\nexport function addTelemetryConfiguration(configuration) {\n onRawTelemetryEventCollected({\n type: TelemetryType.configuration,\n configuration: configuration,\n });\n}\nexport function addTelemetryUsage(usage) {\n onRawTelemetryEventCollected({\n type: TelemetryType.usage,\n usage: usage,\n });\n}\nexport function formatError(e) {\n if (isError(e)) {\n var stackTrace = computeStackTrace(e);\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n },\n message: stackTrace.message,\n };\n }\n return {\n error: {\n stack: NO_ERROR_STACK_PRESENT_MESSAGE,\n },\n message: \"\".concat(\"Uncaught\" /* NonErrorPrefix.UNCAUGHT */, \" \").concat(jsonStringify(e)),\n };\n}\nexport function scrubCustomerFrames(stackTrace) {\n stackTrace.stack = stackTrace.stack.filter(function (frame) { return !frame.url || ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) { return startsWith(frame.url, allowedFrameUrl); }); });\n return stackTrace;\n}\n//# sourceMappingURL=telemetry.js.map","import { setInterval, clearInterval } from './timer';\nimport { removeItem } from './utils/arrayUtils';\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils';\nvar END_OF_TIMES = Infinity;\nexport var CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE;\nexport function createValueHistory(_a) {\n var expireDelay = _a.expireDelay, maxEntries = _a.maxEntries;\n var entries = [];\n var clearOldValuesInterval = setInterval(function () { return clearOldValues(); }, CLEAR_OLD_VALUES_INTERVAL);\n function clearOldValues() {\n var oldTimeThreshold = relativeNow() - expireDelay;\n while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {\n entries.pop();\n }\n }\n /**\n * Add a value to the history associated with a start time. Returns a reference to this newly\n * added entry that can be removed or closed.\n */\n function add(value, startTime) {\n var entry = {\n value: value,\n startTime: startTime,\n endTime: END_OF_TIMES,\n remove: function () {\n removeItem(entries, entry);\n },\n close: function (endTime) {\n entry.endTime = endTime;\n },\n };\n if (maxEntries && entries.length >= maxEntries) {\n entries.pop();\n }\n entries.unshift(entry);\n return entry;\n }\n /**\n * Return the latest value that was active during `startTime`, or the currently active value\n * if no `startTime` is provided. This method assumes that entries are not overlapping.\n *\n * If `option.returnInactive` is true, returns the value at `startTime` (active or not).\n */\n function find(startTime, options) {\n if (startTime === void 0) { startTime = END_OF_TIMES; }\n if (options === void 0) { options = { returnInactive: false }; }\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.startTime <= startTime) {\n if (options.returnInactive || startTime <= entry.endTime) {\n return entry.value;\n }\n break;\n }\n }\n }\n /**\n * Helper function to close the currently active value, if any. This method assumes that entries\n * are not overlapping.\n */\n function closeActive(endTime) {\n var latestEntry = entries[0];\n if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n latestEntry.close(endTime);\n }\n }\n /**\n * Return all values with an active period overlapping with the duration,\n * or all values that were active during `startTime` if no duration is provided,\n * or all currently active values if no `startTime` is provided.\n */\n function findAll(startTime, duration) {\n if (startTime === void 0) { startTime = END_OF_TIMES; }\n if (duration === void 0) { duration = 0; }\n var endTime = addDuration(startTime, duration);\n return entries\n .filter(function (entry) { return entry.startTime <= endTime && startTime <= entry.endTime; })\n .map(function (entry) { return entry.value; });\n }\n /**\n * Remove all entries from this collection.\n */\n function reset() {\n entries = [];\n }\n /**\n * Stop internal garbage collection of past entries.\n */\n function stop() {\n clearInterval(clearOldValuesInterval);\n }\n return { add: add, find: find, closeActive: closeActive, findAll: findAll, reset: reset, stop: stop };\n}\n//# sourceMappingURL=valueHistory.js.map","import { Observable } from '../../tools/observable';\nimport { createValueHistory } from '../../tools/valueHistory';\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { addEventListener, addEventListeners } from '../../browser/addEventListener';\nimport { clearInterval, setInterval } from '../../tools/timer';\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { startSessionStore } from './sessionStore';\nexport var VISIBILITY_CHECK_DELAY = ONE_MINUTE;\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nvar stopCallbacks = [];\nexport function startSessionManager(configuration, productKey, computeSessionState, trackingConsentState) {\n var renewObservable = new Observable();\n var expireObservable = new Observable();\n // TODO - Improve configuration type and remove assertion\n var sessionStore = startSessionStore(configuration.sessionStoreStrategyType, productKey, computeSessionState);\n stopCallbacks.push(function () { return sessionStore.stop(); });\n var sessionContextHistory = createValueHistory({\n expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY,\n });\n stopCallbacks.push(function () { return sessionContextHistory.stop(); });\n sessionStore.renewObservable.subscribe(function () {\n sessionContextHistory.add(buildSessionContext(), relativeNow());\n renewObservable.notify();\n });\n sessionStore.expireObservable.subscribe(function () {\n expireObservable.notify();\n sessionContextHistory.closeActive(relativeNow());\n });\n // We expand/renew session unconditionally as tracking consent is always granted when the session\n // manager is started.\n sessionStore.expandOrRenewSession();\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);\n trackingConsentState.observable.subscribe(function () {\n if (trackingConsentState.isGranted()) {\n sessionStore.expandOrRenewSession();\n }\n else {\n sessionStore.expire();\n }\n });\n trackActivity(configuration, function () {\n if (trackingConsentState.isGranted()) {\n sessionStore.expandOrRenewSession();\n }\n });\n trackVisibility(configuration, function () { return sessionStore.expandSession(); });\n trackResume(configuration, function () { return sessionStore.restartSession(); });\n function buildSessionContext() {\n return {\n id: sessionStore.getSession().id,\n trackingType: sessionStore.getSession()[productKey],\n isReplayForced: !!sessionStore.getSession().forcedReplay,\n anonymousId: sessionStore.getSession().anonymousId,\n };\n }\n return {\n findSession: function (startTime, options) { return sessionContextHistory.find(startTime, options); },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,\n expire: sessionStore.expire,\n updateSessionState: sessionStore.updateSessionState,\n };\n}\nexport function stopSessionManager() {\n stopCallbacks.forEach(function (e) { return e(); });\n stopCallbacks = [];\n}\nfunction trackActivity(configuration, expandOrRenewSession) {\n var stop = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"scroll\" /* DOM_EVENT.SCROLL */], expandOrRenewSession, { capture: true, passive: true }).stop;\n stopCallbacks.push(stop);\n}\nfunction trackVisibility(configuration, expandSession) {\n var expandSessionWhenVisible = function () {\n if (document.visibilityState === 'visible') {\n expandSession();\n }\n };\n var stop = addEventListener(configuration, document, \"visibilitychange\" /* DOM_EVENT.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}\nfunction trackResume(configuration, cb) {\n var stop = addEventListener(configuration, window, \"resume\" /* DOM_EVENT.RESUME */, cb, { capture: true }).stop;\n stopCallbacks.push(stop);\n}\n//# sourceMappingURL=sessionManager.js.map","export function isServerError(status) {\n return status >= 500;\n}\nexport function tryToClone(response) {\n try {\n return response.clone();\n }\n catch (_a) {\n // clone can throw if the response has already been used by another instrumentation or is disturbed\n return;\n }\n}\n//# sourceMappingURL=responseUtils.js.map","import { setTimeout } from '../tools/timer';\nimport { clocksNow, ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils';\nimport { isServerError } from '../tools/utils/responseUtils';\nimport { ErrorSource } from '../domain/error/error.types';\nexport var MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport var MAX_ONGOING_REQUESTS = 32;\nexport var MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE;\nexport var MAX_BACKOFF_TIME = ONE_MINUTE;\nexport var INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, trackType, reportError) {\n if (state.transportStatus === 0 /* TransportStatus.UP */ &&\n state.queuedPayloads.size() === 0 &&\n state.bandwidthMonitor.canHandle(payload)) {\n send(payload, state, sendStrategy, {\n onSuccess: function () { return retryQueuedPayloads(0 /* RetryReason.AFTER_SUCCESS */, state, sendStrategy, trackType, reportError); },\n onFailure: function () {\n state.queuedPayloads.enqueue(payload);\n scheduleRetry(state, sendStrategy, trackType, reportError);\n },\n });\n }\n else {\n state.queuedPayloads.enqueue(payload);\n }\n}\nfunction scheduleRetry(state, sendStrategy, trackType, reportError) {\n if (state.transportStatus !== 2 /* TransportStatus.DOWN */) {\n return;\n }\n setTimeout(function () {\n var payload = state.queuedPayloads.first();\n send(payload, state, sendStrategy, {\n onSuccess: function () {\n state.queuedPayloads.dequeue();\n state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n retryQueuedPayloads(1 /* RetryReason.AFTER_RESUME */, state, sendStrategy, trackType, reportError);\n },\n onFailure: function () {\n state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n scheduleRetry(state, sendStrategy, trackType, reportError);\n },\n });\n }, state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, _a) {\n var onSuccess = _a.onSuccess, onFailure = _a.onFailure;\n state.bandwidthMonitor.add(payload);\n sendStrategy(payload, function (response) {\n state.bandwidthMonitor.remove(payload);\n if (!shouldRetryRequest(response)) {\n state.transportStatus = 0 /* TransportStatus.UP */;\n onSuccess();\n }\n else {\n // do not consider transport down if another ongoing request could succeed\n state.transportStatus =\n state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 /* TransportStatus.FAILURE_DETECTED */ : 2 /* TransportStatus.DOWN */;\n payload.retry = {\n count: payload.retry ? payload.retry.count + 1 : 1,\n lastFailureStatus: response.status,\n };\n onFailure();\n }\n });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, trackType, reportError) {\n if (reason === 0 /* RetryReason.AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n reportError({\n message: \"Reached max \".concat(trackType, \" events size queued for upload: \").concat(MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE, \"MiB\"),\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n });\n state.queueFullReported = true;\n }\n var previousQueue = state.queuedPayloads;\n state.queuedPayloads = newPayloadQueue();\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, trackType, reportError);\n }\n}\nfunction shouldRetryRequest(response) {\n return (response.type !== 'opaque' &&\n ((response.status === 0 && !navigator.onLine) ||\n response.status === 408 ||\n response.status === 429 ||\n isServerError(response.status)));\n}\nexport function newRetryState() {\n return {\n transportStatus: 0 /* TransportStatus.UP */,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false,\n };\n}\nfunction newPayloadQueue() {\n var queue = [];\n return {\n bytesCount: 0,\n enqueue: function (payload) {\n if (this.isFull()) {\n return;\n }\n queue.push(payload);\n this.bytesCount += payload.bytesCount;\n },\n first: function () {\n return queue[0];\n },\n dequeue: function () {\n var payload = queue.shift();\n if (payload) {\n this.bytesCount -= payload.bytesCount;\n }\n return payload;\n },\n size: function () {\n return queue.length;\n },\n isFull: function () {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n },\n };\n}\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle: function (payload) {\n return (this.ongoingRequestCount === 0 ||\n (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n this.ongoingRequestCount < MAX_ONGOING_REQUESTS));\n },\n add: function (payload) {\n this.ongoingRequestCount += 1;\n this.ongoingByteCount += payload.bytesCount;\n },\n remove: function (payload) {\n this.ongoingRequestCount -= 1;\n this.ongoingByteCount -= payload.bytesCount;\n },\n };\n}\n//# sourceMappingURL=sendWithRetryStrategy.js.map","import { addTelemetryError } from '../domain/telemetry';\nimport { monitor } from '../tools/monitor';\nimport { addEventListener } from '../browser/addEventListener';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(endpointBuilder, bytesLimit, reportError) {\n var retryState = newRetryState();\n var sendStrategyForRetry = function (payload, onResponse) {\n return fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse);\n };\n return {\n send: function (payload) {\n sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.trackType, reportError);\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: function (payload) {\n sendBeaconStrategy(endpointBuilder, bytesLimit, payload);\n },\n };\n}\nfunction sendBeaconStrategy(endpointBuilder, bytesLimit, payload) {\n var canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit;\n if (canUseBeacon) {\n try {\n var beaconUrl = endpointBuilder.build('beacon', payload);\n var isQueued = navigator.sendBeacon(beaconUrl, payload.data);\n if (isQueued) {\n return;\n }\n }\n catch (e) {\n reportBeaconError(e);\n }\n }\n var xhrUrl = endpointBuilder.build('xhr', payload);\n sendXHR(xhrUrl, payload.data);\n}\nvar hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true;\n addTelemetryError(e);\n }\n}\nexport function fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse) {\n var canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit;\n if (canUseKeepAlive) {\n var fetchUrl = endpointBuilder.build('fetch', payload);\n fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' }).then(monitor(function (response) { return onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type }); }), monitor(function () {\n var xhrUrl = endpointBuilder.build('xhr', payload);\n // failed to queue the request\n sendXHR(xhrUrl, payload.data, onResponse);\n }));\n }\n else {\n var xhrUrl = endpointBuilder.build('xhr', payload);\n sendXHR(xhrUrl, payload.data, onResponse);\n }\n}\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a');\n }\n catch (_a) {\n return false;\n }\n}\nexport function sendXHR(url, data, onResponse) {\n var request = new XMLHttpRequest();\n request.open('POST', url, true);\n if (data instanceof Blob) {\n // When using a Blob instance, IE does not use its 'type' to define the 'Content-Type' header\n // automatically, so the intake request ends up being rejected with an HTTP status 415\n // Defining the header manually fixes this issue.\n request.setRequestHeader('Content-Type', data.type);\n }\n addEventListener(\n // allow untrusted event to acount for synthetic event dispatched by third party xhr wrapper\n { allowUntrustedEvents: true }, request, 'loadend', function () {\n onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: request.status });\n }, {\n // prevent multiple onResponse callbacks\n // if the xhr instance is reused by a third party\n once: true,\n });\n request.send(data);\n}\n//# sourceMappingURL=httpRequest.js.map","import { endsWith, includes } from '../tools/utils/polyfills';\nimport { getGlobalObject } from '../tools/getGlobalObject';\nexport function getEventBridge() {\n var eventBridgeGlobal = getEventBridgeGlobal();\n if (!eventBridgeGlobal) {\n return;\n }\n return {\n getCapabilities: function () {\n var _a;\n return JSON.parse(((_a = eventBridgeGlobal.getCapabilities) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal)) || '[]');\n },\n getPrivacyLevel: function () {\n var _a;\n return (_a = eventBridgeGlobal.getPrivacyLevel) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal);\n },\n getAllowedWebViewHosts: function () {\n return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n },\n send: function (eventType, event, viewId) {\n var view = viewId ? { id: viewId } : undefined;\n eventBridgeGlobal.send(JSON.stringify({ eventType: eventType, event: event, view: view }));\n },\n };\n}\nexport function bridgeSupports(capability) {\n var bridge = getEventBridge();\n return !!bridge && includes(bridge.getCapabilities(), capability);\n}\nexport function canUseEventBridge(currentHost) {\n var _a;\n if (currentHost === void 0) { currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n var bridge = getEventBridge();\n return (!!bridge &&\n bridge\n .getAllowedWebViewHosts()\n .some(function (allowedHost) { return currentHost === allowedHost || endsWith(currentHost, \".\".concat(allowedHost)); }));\n}\nfunction getEventBridgeGlobal() {\n return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","import { Observable } from '../tools/observable';\nimport { objectValues, includes } from '../tools/utils/polyfills';\nimport { addEventListeners, addEventListener } from './addEventListener';\nexport var PageExitReason = {\n HIDDEN: 'visibility_hidden',\n UNLOADING: 'before_unload',\n PAGEHIDE: 'page_hide',\n FROZEN: 'page_frozen',\n};\nexport function createPageExitObservable(configuration) {\n return new Observable(function (observable) {\n var stopListeners = addEventListeners(configuration, window, [\"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, \"freeze\" /* DOM_EVENT.FREEZE */], function (event) {\n if (event.type === \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */ && document.visibilityState === 'hidden') {\n /**\n * Only event that guarantee to fire on mobile devices when the page transitions to background state\n * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n */\n observable.notify({ reason: PageExitReason.HIDDEN });\n }\n else if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n /**\n * After transitioning in background a tab can be freezed to preserve resources. (cf: https://developer.chrome.com/blog/page-lifecycle-api)\n * Allow to collect events happening between hidden and frozen state.\n */\n observable.notify({ reason: PageExitReason.FROZEN });\n }\n }, { capture: true }).stop;\n var stopBeforeUnloadListener = addEventListener(configuration, window, \"beforeunload\" /* DOM_EVENT.BEFORE_UNLOAD */, function () {\n observable.notify({ reason: PageExitReason.UNLOADING });\n }).stop;\n return function () {\n stopListeners();\n stopBeforeUnloadListener();\n };\n });\n}\nexport function isPageExitReason(reason) {\n return includes(objectValues(PageExitReason), reason);\n}\n//# sourceMappingURL=pageExitObservable.js.map","import { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../tools/display';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { isPageExitReason } from '../browser/pageExitObservable';\nimport { jsonStringify } from '../tools/serialisation/jsonStringify';\nimport { computeBytesCount } from '../tools/utils/byteUtils';\nexport function createBatch(_a) {\n var encoder = _a.encoder, request = _a.request, flushController = _a.flushController, messageBytesLimit = _a.messageBytesLimit;\n var upsertBuffer = {};\n var flushSubscription = flushController.flushObservable.subscribe(function (event) { return flush(event); });\n function push(serializedMessage, estimatedMessageBytesCount, key) {\n flushController.notifyBeforeAddMessage(estimatedMessageBytesCount);\n if (key !== undefined) {\n upsertBuffer[key] = serializedMessage;\n flushController.notifyAfterAddMessage();\n }\n else {\n encoder.write(encoder.isEmpty ? serializedMessage : \"\\n\".concat(serializedMessage), function (realMessageBytesCount) {\n flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount);\n });\n }\n }\n function hasMessageFor(key) {\n return key !== undefined && upsertBuffer[key] !== undefined;\n }\n function remove(key) {\n var removedMessage = upsertBuffer[key];\n delete upsertBuffer[key];\n var messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage);\n flushController.notifyAfterRemoveMessage(messageBytesCount);\n }\n function addOrUpdate(message, key) {\n var serializedMessage = jsonStringify(message);\n var estimatedMessageBytesCount = encoder.estimateEncodedBytesCount(serializedMessage);\n if (estimatedMessageBytesCount >= messageBytesLimit) {\n display.warn(\"Discarded a message whose size was bigger than the maximum allowed size \".concat(messageBytesLimit, \"KB. \").concat(MORE_DETAILS, \" \").concat(DOCS_TROUBLESHOOTING, \"/#technical-limitations\"));\n return;\n }\n if (hasMessageFor(key)) {\n remove(key);\n }\n push(serializedMessage, estimatedMessageBytesCount, key);\n }\n function flush(event) {\n var upsertMessages = objectValues(upsertBuffer).join('\\n');\n upsertBuffer = {};\n var isPageExit = isPageExitReason(event.reason);\n var send = isPageExit ? request.sendOnExit : request.send;\n if (isPageExit &&\n // Note: checking that the encoder is async is not strictly needed, but it's an optimization:\n // if the encoder is async we need to send two requests in some cases (one for encoded data\n // and the other for non-encoded data). But if it's not async, we don't have to worry about\n // it and always send a single request.\n encoder.isAsync) {\n var encoderResult = encoder.finishSync();\n // Send encoded messages\n if (encoderResult.outputBytesCount) {\n send(formatPayloadFromEncoder(encoderResult));\n }\n // Send messages that are not yet encoded at this point\n var pendingMessages = [encoderResult.pendingData, upsertMessages].filter(Boolean).join('\\n');\n if (pendingMessages) {\n send({\n data: pendingMessages,\n bytesCount: computeBytesCount(pendingMessages),\n });\n }\n }\n else {\n if (upsertMessages) {\n encoder.write(encoder.isEmpty ? upsertMessages : \"\\n\".concat(upsertMessages));\n }\n encoder.finish(function (encoderResult) {\n send(formatPayloadFromEncoder(encoderResult));\n });\n }\n }\n return {\n flushController: flushController,\n add: addOrUpdate,\n upsert: addOrUpdate,\n stop: flushSubscription.unsubscribe,\n };\n}\nfunction formatPayloadFromEncoder(encoderResult) {\n var data;\n if (typeof encoderResult.output === 'string') {\n data = encoderResult.output;\n }\n else {\n data = new Blob([encoderResult.output], {\n // This will set the 'Content-Type: text/plain' header. Reasoning:\n // * The intake rejects the request if there is no content type.\n // * The browser will issue CORS preflight requests if we set it to 'application/json', which\n // could induce higher intake load (and maybe has other impacts).\n // * Also it's not quite JSON, since we are concatenating multiple JSON objects separated by\n // new lines.\n type: 'text/plain',\n });\n }\n return {\n data: data,\n bytesCount: encoderResult.outputBytesCount,\n encoding: encoderResult.encoding,\n };\n}\n//# sourceMappingURL=batch.js.map","import { Observable } from '../tools/observable';\nimport { clearTimeout, setTimeout } from '../tools/timer';\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController(_a) {\n var messagesLimit = _a.messagesLimit, bytesLimit = _a.bytesLimit, durationLimit = _a.durationLimit, pageExitObservable = _a.pageExitObservable, sessionExpireObservable = _a.sessionExpireObservable;\n var pageExitSubscription = pageExitObservable.subscribe(function (event) { return flush(event.reason); });\n var sessionExpireSubscription = sessionExpireObservable.subscribe(function () { return flush('session_expire'); });\n var flushObservable = new Observable(function () { return function () {\n pageExitSubscription.unsubscribe();\n sessionExpireSubscription.unsubscribe();\n }; });\n var currentBytesCount = 0;\n var currentMessagesCount = 0;\n function flush(flushReason) {\n if (currentMessagesCount === 0) {\n return;\n }\n var messagesCount = currentMessagesCount;\n var bytesCount = currentBytesCount;\n currentMessagesCount = 0;\n currentBytesCount = 0;\n cancelDurationLimitTimeout();\n flushObservable.notify({\n reason: flushReason,\n messagesCount: messagesCount,\n bytesCount: bytesCount,\n });\n }\n var durationLimitTimeoutId;\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(function () {\n flush('duration_limit');\n }, durationLimit);\n }\n }\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId);\n durationLimitTimeoutId = undefined;\n }\n return {\n flushObservable: flushObservable,\n get messagesCount() {\n return currentMessagesCount;\n },\n /**\n * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right before adding the message, so no flush\n * event can happen after `notifyBeforeAddMessage` and before adding the message.\n *\n * @param estimatedMessageBytesCount: an estimation of the message bytes count once it is\n * actually added.\n */\n notifyBeforeAddMessage: function (estimatedMessageBytesCount) {\n if (currentBytesCount + estimatedMessageBytesCount >= bytesLimit) {\n flush('bytes_limit');\n }\n // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n // to notify when a flush is needed (for example on page exit).\n currentMessagesCount += 1;\n currentBytesCount += estimatedMessageBytesCount;\n scheduleDurationLimitTimeout();\n },\n /**\n * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n *\n * This function can be called asynchronously after the message was added, but in this case it\n * should not be called if a flush event occurred in between.\n *\n * @param messageBytesCountDiff: the difference between the estimated message bytes count and\n * its actual bytes count once added to the pool.\n */\n notifyAfterAddMessage: function (messageBytesCountDiff) {\n if (messageBytesCountDiff === void 0) { messageBytesCountDiff = 0; }\n currentBytesCount += messageBytesCountDiff;\n if (currentMessagesCount >= messagesLimit) {\n flush('messages_limit');\n }\n else if (currentBytesCount >= bytesLimit) {\n flush('bytes_limit');\n }\n },\n /**\n * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right after removing the message, so no flush\n * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n *\n * @param messageBytesCount: the message bytes count that was added to the pool. Should\n * correspond to the sum of bytes counts passed to `notifyBeforeAddMessage` and\n * `notifyAfterAddMessage`.\n */\n notifyAfterRemoveMessage: function (messageBytesCount) {\n currentBytesCount -= messageBytesCount;\n currentMessagesCount -= 1;\n if (currentMessagesCount === 0) {\n cancelDurationLimitTimeout();\n }\n },\n };\n}\n//# sourceMappingURL=flushController.js.map","import { createBatch } from './batch';\nimport { createHttpRequest } from './httpRequest';\nimport { createFlushController } from './flushController';\nexport function startBatchWithReplica(configuration, primary, replica, reportError, pageExitObservable, sessionExpireObservable, batchFactoryImp) {\n if (batchFactoryImp === void 0) { batchFactoryImp = createBatch; }\n var primaryBatch = createBatchFromConfig(configuration, primary);\n var replicaBatch = replica && createBatchFromConfig(configuration, replica);\n function createBatchFromConfig(configuration, _a) {\n var endpoint = _a.endpoint, encoder = _a.encoder;\n return batchFactoryImp({\n encoder: encoder,\n request: createHttpRequest(endpoint, configuration.batchBytesLimit, reportError),\n flushController: createFlushController({\n messagesLimit: configuration.batchMessagesLimit,\n bytesLimit: configuration.batchBytesLimit,\n durationLimit: configuration.flushTimeout,\n pageExitObservable: pageExitObservable,\n sessionExpireObservable: sessionExpireObservable,\n }),\n messageBytesLimit: configuration.messageBytesLimit,\n });\n }\n return {\n flushObservable: primaryBatch.flushController.flushObservable,\n add: function (message, replicated) {\n if (replicated === void 0) { replicated = true; }\n primaryBatch.add(message);\n if (replicaBatch && replicated) {\n replicaBatch.add(replica.transformMessage ? replica.transformMessage(message) : message);\n }\n },\n upsert: function (message, key) {\n primaryBatch.upsert(message, key);\n if (replicaBatch) {\n replicaBatch.upsert(replica.transformMessage ? replica.transformMessage(message) : message, key);\n }\n },\n stop: function () {\n primaryBatch.stop();\n if (replicaBatch) {\n replicaBatch.stop();\n }\n },\n };\n}\n//# sourceMappingURL=startBatchWithReplica.js.map","import { computeBytesCount } from './utils/byteUtils';\nexport function createIdentityEncoder() {\n var output = '';\n var outputBytesCount = 0;\n return {\n isAsync: false,\n get isEmpty() {\n return !output;\n },\n write: function (data, callback) {\n var additionalEncodedBytesCount = computeBytesCount(data);\n outputBytesCount += additionalEncodedBytesCount;\n output += data;\n if (callback) {\n callback(additionalEncodedBytesCount);\n }\n },\n finish: function (callback) {\n callback(this.finishSync());\n },\n finishSync: function () {\n var result = {\n output: output,\n outputBytesCount: outputBytesCount,\n rawBytesCount: outputBytesCount,\n pendingData: '',\n };\n output = '';\n outputBytesCount = 0;\n return result;\n },\n estimateEncodedBytesCount: function (data) {\n return data.length;\n },\n };\n}\n//# sourceMappingURL=encoder.js.map","// eslint-disable-next-line no-restricted-syntax\nvar AbstractLifeCycle = /** @class */ (function () {\n function AbstractLifeCycle() {\n this.callbacks = {};\n }\n AbstractLifeCycle.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 AbstractLifeCycle.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 AbstractLifeCycle;\n}());\nexport { AbstractLifeCycle };\n//# sourceMappingURL=abstractLifeCycle.js.map","import { setTimeout } from '../../tools/timer';\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { ErrorSource } from '../error/error.types';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n 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 { instrumentMethod } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, clocksNow, timeStampNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { shallowClone } from '../tools/utils/objectUtils';\nimport { addEventListener } from './addEventListener';\nvar xhrObservable;\nvar xhrContexts = new WeakMap();\nexport function initXhrObservable(configuration) {\n if (!xhrObservable) {\n xhrObservable = createXhrObservable(configuration);\n }\n return xhrObservable;\n}\nfunction createXhrObservable(configuration) {\n return new Observable(function (observable) {\n var stopInstrumentingStart = instrumentMethod(XMLHttpRequest.prototype, 'open', openXhr).stop;\n var stopInstrumentingSend = instrumentMethod(XMLHttpRequest.prototype, 'send', function (call) {\n sendXhr(call, configuration, observable);\n }, { computeHandlingStack: true }).stop;\n var stopInstrumentingAbort = instrumentMethod(XMLHttpRequest.prototype, 'abort', abortXhr).stop;\n return function () {\n stopInstrumentingStart();\n stopInstrumentingSend();\n stopInstrumentingAbort();\n };\n });\n}\nfunction openXhr(_a) {\n var xhr = _a.target, _b = _a.parameters, method = _b[0], url = _b[1];\n xhrContexts.set(xhr, {\n state: 'open',\n method: String(method).toUpperCase(),\n url: normalizeUrl(String(url)),\n });\n}\nfunction sendXhr(_a, configuration, observable) {\n var xhr = _a.target, handlingStack = _a.handlingStack;\n var context = xhrContexts.get(xhr);\n if (!context) {\n return;\n }\n var startContext = context;\n startContext.state = 'start';\n startContext.startClocks = clocksNow();\n startContext.isAborted = false;\n startContext.xhr = xhr;\n startContext.handlingStack = handlingStack;\n var hasBeenReported = false;\n var stopInstrumentingOnReadyStateChange = instrumentMethod(xhr, 'onreadystatechange', function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n // application during a future event. For example, Angular is calling .abort() on\n // completed requests during an onreadystatechange event, so the status becomes '0'\n // before the request is collected.\n onEnd();\n }\n }).stop;\n var onEnd = function () {\n unsubscribeLoadEndListener();\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 = xhr.status;\n observable.notify(shallowClone(completeContext));\n };\n var unsubscribeLoadEndListener = addEventListener(configuration, xhr, 'loadend', onEnd).stop;\n observable.notify(startContext);\n}\nfunction abortXhr(_a) {\n var xhr = _a.target;\n var context = xhrContexts.get(xhr);\n if (context) {\n context.isAborted = true;\n }\n}\n//# sourceMappingURL=xhrObservable.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { assign } from '../tools/utils/polyfills';\nimport { clocksNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nvar fetchObservable;\nexport function initFetchObservable() {\n if (!fetchObservable) {\n fetchObservable = createFetchObservable();\n }\n return fetchObservable;\n}\nexport function resetFetchObservable() {\n fetchObservable = undefined;\n}\nfunction createFetchObservable() {\n return new Observable(function (observable) {\n if (!window.fetch) {\n return;\n }\n var stop = instrumentMethod(window, 'fetch', function (call) { return beforeSend(call, observable); }, {\n computeHandlingStack: true,\n }).stop;\n return stop;\n });\n}\nfunction beforeSend(_a, observable) {\n var parameters = _a.parameters, onPostCall = _a.onPostCall, handlingStack = _a.handlingStack;\n var input = parameters[0], init = parameters[1];\n var methodFromParams = init && init.method;\n if (methodFromParams === undefined && input instanceof Request) {\n methodFromParams = input.method;\n }\n var method = methodFromParams !== undefined ? String(methodFromParams).toUpperCase() : 'GET';\n var url = input instanceof Request ? input.url : normalizeUrl(String(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 handlingStack: handlingStack,\n };\n observable.notify(context);\n // Those properties can be changed by observable subscribers\n parameters[0] = context.input;\n parameters[1] = context.init;\n onPostCall(function (responsePromise) { return afterSend(observable, responsePromise, context); });\n}\nfunction afterSend(observable, responsePromise, startContext) {\n var context = startContext;\n function reportFetch(partialContext) {\n context.state = 'resolve';\n assign(context, partialContext);\n observable.notify(context);\n }\n responsePromise.then(monitor(function (response) {\n reportFetch({\n response: response,\n responseType: response.type,\n status: response.status,\n isAborted: false,\n });\n }), monitor(function (error) {\n var _a, _b;\n reportFetch({\n status: 0,\n isAborted: ((_b = (_a = context.init) === null || _a === void 0 ? void 0 : _a.signal) === null || _b === void 0 ? void 0 : _b.aborted) || (error instanceof DOMException && error.code === DOMException.ABORT_ERR),\n error: error,\n });\n }));\n}\n//# sourceMappingURL=fetchObservable.js.map","import { flattenErrorCauses, isError, tryToGetFingerprint } from '../error/error';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { ConsoleApiName, globalConsole } from '../../tools/display';\nimport { callMonitored } from '../../tools/monitor';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { find } from '../../tools/utils/polyfills';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { ErrorSource } from '../error/error.types';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { createHandlingStack, toStackTraceString, formatErrorMessage } from '../../tools/stackTrace/handlingStack';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nvar consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n var consoleObservables = apis.map(function (api) {\n if (!consoleObservablesByApi[api]) {\n consoleObservablesByApi[api] = createConsoleObservable(api); // we are sure that the observable created for this api will yield the expected ConsoleLog type\n }\n return consoleObservablesByApi[api];\n });\n return mergeObservables.apply(void 0, consoleObservables);\n}\nexport function resetConsoleObservable() {\n consoleObservablesByApi = {};\n}\nfunction createConsoleObservable(api) {\n return new Observable(function (observable) {\n var originalConsoleApi = globalConsole[api];\n globalConsole[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 globalConsole[api] = originalConsoleApi;\n };\n });\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n var message = params.map(function (param) { return formatConsoleParameters(param); }).join(' ');\n var error;\n if (api === ConsoleApiName.error) {\n var firstErrorParam = find(params, isError);\n error = {\n stack: firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined,\n fingerprint: tryToGetFingerprint(firstErrorParam),\n causes: firstErrorParam ? flattenErrorCauses(firstErrorParam, 'console') : undefined,\n startClocks: clocksNow(),\n message: message,\n source: ErrorSource.CONSOLE,\n handling: \"handled\" /* ErrorHandling.HANDLED */,\n handlingStack: handlingStack,\n };\n }\n return {\n api: api,\n message: message,\n error: error,\n handlingStack: handlingStack,\n };\n}\nfunction formatConsoleParameters(param) {\n if (typeof param === 'string') {\n return sanitize(param);\n }\n if (isError(param)) {\n return formatErrorMessage(computeStackTrace(param));\n }\n return jsonStringify(sanitize(param), undefined, 2);\n}\n//# sourceMappingURL=consoleObservable.js.map","import { deepClone } from '../../tools/mergeInto';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { Observable } from '../../tools/observable';\nexport function createContextManager(customerDataTracker) {\n var context = {};\n var changeObservable = new Observable();\n var contextManager = {\n getContext: function () { return deepClone(context); },\n setContext: function (newContext) {\n if (getType(newContext) === 'object') {\n context = sanitize(newContext);\n customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.updateCustomerData(context);\n }\n else {\n contextManager.clearContext();\n }\n changeObservable.notify();\n },\n setContextProperty: function (key, property) {\n context[key] = sanitize(property);\n customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.updateCustomerData(context);\n changeObservable.notify();\n },\n removeContextProperty: function (key) {\n delete context[key];\n customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.updateCustomerData(context);\n changeObservable.notify();\n },\n clearContext: function () {\n context = {};\n customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.resetCustomerData();\n changeObservable.notify();\n },\n changeObservable: changeObservable,\n };\n return contextManager;\n}\n//# sourceMappingURL=contextManager.js.map","import { addEventListener } from '../../browser/addEventListener';\nimport { combine } from '../../tools/mergeInto';\nvar CONTEXT_STORE_KEY_PREFIX = '_dd_c';\nvar storageListeners = [];\nexport function storeContextManager(configuration, contextManager, productKey, customerDataType) {\n var storageKey = buildStorageKey(productKey, customerDataType);\n storageListeners.push(addEventListener(configuration, window, \"storage\" /* DOM_EVENT.STORAGE */, function (_a) {\n var key = _a.key;\n if (storageKey === key) {\n synchronizeWithStorage();\n }\n }));\n contextManager.changeObservable.subscribe(dumpToStorage);\n contextManager.setContext(combine(getFromStorage(), contextManager.getContext()));\n function synchronizeWithStorage() {\n contextManager.setContext(getFromStorage());\n }\n function dumpToStorage() {\n localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()));\n }\n function getFromStorage() {\n var rawContext = localStorage.getItem(storageKey);\n return rawContext !== null ? JSON.parse(rawContext) : {};\n }\n}\nexport function buildStorageKey(productKey, customerDataType) {\n return \"\".concat(CONTEXT_STORE_KEY_PREFIX, \"_\").concat(productKey, \"_\").concat(customerDataType);\n}\nexport function removeStorageListeners() {\n storageListeners.map(function (listener) { return listener.stop(); });\n}\n//# sourceMappingURL=storeContextManager.js.map","import { ONE_KIBI_BYTE, computeBytesCount } from '../../tools/utils/byteUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../../tools/display';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\n// RUM and logs batch bytes limit is 16KB\n// ensure that we leave room for other event attributes and maintain a decent amount of event per batch\n// (3KB (customer data) + 1KB (other attributes)) * 4 (events per batch) = 16KB\nexport var CUSTOMER_DATA_BYTES_LIMIT = 3 * ONE_KIBI_BYTE;\n// We observed that the compression ratio is around 8 in general, but we also want to keep a margin\n// because some data might not be compressed (ex: last view update on page exit). We chose 16KiB\n// because it is also the limit of the 'batchBytesCount' that we use for RUM and Logs data, but this\n// is a bit arbitrary.\nexport var CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT = 16 * ONE_KIBI_BYTE;\nexport var BYTES_COMPUTATION_THROTTLING_DELAY = 200;\nexport function createCustomerDataTrackerManager(compressionStatus) {\n if (compressionStatus === void 0) { compressionStatus = 2 /* CustomerDataCompressionStatus.Disabled */; }\n var customerDataTrackers = new Map();\n var alreadyWarned = false;\n function checkCustomerDataLimit(initialBytesCount) {\n if (initialBytesCount === void 0) { initialBytesCount = 0; }\n if (alreadyWarned || compressionStatus === 0 /* CustomerDataCompressionStatus.Unknown */) {\n return;\n }\n var bytesCountLimit = compressionStatus === 2 /* CustomerDataCompressionStatus.Disabled */\n ? CUSTOMER_DATA_BYTES_LIMIT\n : CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT;\n var bytesCount = initialBytesCount;\n customerDataTrackers.forEach(function (tracker) {\n bytesCount += tracker.getBytesCount();\n });\n if (bytesCount > bytesCountLimit) {\n displayCustomerDataLimitReachedWarning(bytesCountLimit);\n alreadyWarned = true;\n }\n }\n return {\n /**\n * Creates a detached tracker. The manager will not store a reference to that tracker, and the\n * bytes count will be counted independently from other detached trackers.\n *\n * This is particularly useful when we don't know when the tracker will be unused, so we don't\n * leak memory (ex: when used in Logger instances).\n */\n createDetachedTracker: function () {\n var tracker = createCustomerDataTracker(function () { return checkCustomerDataLimit(tracker.getBytesCount()); });\n return tracker;\n },\n /**\n * Creates a tracker if it doesn't exist, and returns it.\n */\n getOrCreateTracker: function (type) {\n if (!customerDataTrackers.has(type)) {\n customerDataTrackers.set(type, createCustomerDataTracker(checkCustomerDataLimit));\n }\n return customerDataTrackers.get(type);\n },\n setCompressionStatus: function (newCompressionStatus) {\n if (compressionStatus === 0 /* CustomerDataCompressionStatus.Unknown */) {\n compressionStatus = newCompressionStatus;\n checkCustomerDataLimit();\n }\n },\n getCompressionStatus: function () { return compressionStatus; },\n stop: function () {\n customerDataTrackers.forEach(function (tracker) { return tracker.stop(); });\n customerDataTrackers.clear();\n },\n };\n}\nexport function createCustomerDataTracker(checkCustomerDataLimit) {\n var bytesCountCache = 0;\n // Throttle the bytes computation to minimize the impact on performance.\n // Especially useful if the user call context APIs synchronously multiple times in a row\n var _a = throttle(function (context) {\n bytesCountCache = computeBytesCount(jsonStringify(context));\n checkCustomerDataLimit();\n }, BYTES_COMPUTATION_THROTTLING_DELAY), computeBytesCountThrottled = _a.throttled, cancelComputeBytesCount = _a.cancel;\n var resetBytesCount = function () {\n cancelComputeBytesCount();\n bytesCountCache = 0;\n };\n return {\n updateCustomerData: function (context) {\n if (isEmptyObject(context)) {\n resetBytesCount();\n }\n else {\n computeBytesCountThrottled(context);\n }\n },\n resetCustomerData: resetBytesCount,\n getBytesCount: function () { return bytesCountCache; },\n stop: function () {\n cancelComputeBytesCount();\n },\n };\n}\nfunction displayCustomerDataLimitReachedWarning(bytesCountLimit) {\n display.warn(\"Customer data exceeds the recommended \".concat(bytesCountLimit / ONE_KIBI_BYTE, \"KiB threshold. \").concat(MORE_DETAILS, \" \").concat(DOCS_TROUBLESHOOTING, \"/#customer-data-exceeds-the-recommended-threshold-warning\"));\n}\n//# sourceMappingURL=customerDataTracker.js.map","import { monitor } from './monitor';\nimport { noop } from './utils/functionUtils';\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nexport function readBytesFromStream(stream, callback, options) {\n var reader = stream.getReader();\n var chunks = [];\n var readBytesCount = 0;\n readMore();\n function readMore() {\n reader.read().then(monitor(function (result) {\n if (result.done) {\n onDone();\n return;\n }\n if (options.collectStreamBody) {\n chunks.push(result.value);\n }\n readBytesCount += result.value.length;\n if (readBytesCount > options.bytesLimit) {\n onDone();\n }\n else {\n readMore();\n }\n }), monitor(function (error) { return callback(error); }));\n }\n function onDone() {\n reader.cancel().catch(\n // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n // as an unhandled rejection\n noop);\n var bytes;\n var limitExceeded;\n if (options.collectStreamBody) {\n var completeBuffer_1;\n if (chunks.length === 1) {\n // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just\n // use it directly.\n completeBuffer_1 = chunks[0];\n }\n else {\n // else, we need to copy buffers into a larger buffer to concatenate them.\n completeBuffer_1 = new Uint8Array(readBytesCount);\n var offset_1 = 0;\n chunks.forEach(function (chunk) {\n completeBuffer_1.set(chunk, offset_1);\n offset_1 += chunk.length;\n });\n }\n bytes = completeBuffer_1.slice(0, options.bytesLimit);\n limitExceeded = completeBuffer_1.length > options.bytesLimit;\n }\n callback(undefined, bytes, limitExceeded);\n }\n}\n//# sourceMappingURL=readBytesFromStream.js.map","import { getInitCookie } from '../../browser/cookie';\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 willSyntheticsInjectRum() {\n return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM || getInitCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n var value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getInitCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n var value = window._DATADOG_SYNTHETICS_RESULT_ID || getInitCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\n//# sourceMappingURL=syntheticsWorkerValues.js.map","var _a;\nimport { includes } from '@datadog/browser-core';\nexport function isAuthorized(status, handlerType, logger) {\n var loggerHandler = logger.getHandler();\n var sanitizedHandlerType = Array.isArray(loggerHandler) ? loggerHandler : [loggerHandler];\n return (STATUS_PRIORITIES[status] >= STATUS_PRIORITIES[logger.getLevel()] && includes(sanitizedHandlerType, handlerType));\n}\nexport var StatusType = {\n ok: 'ok',\n debug: 'debug',\n info: 'info',\n notice: 'notice',\n warn: 'warn',\n error: 'error',\n critical: 'critical',\n alert: 'alert',\n emerg: 'emerg',\n};\nexport var STATUS_PRIORITIES = (_a = {},\n _a[StatusType.ok] = 0,\n _a[StatusType.debug] = 1,\n _a[StatusType.info] = 2,\n _a[StatusType.notice] = 4,\n _a[StatusType.warn] = 5,\n _a[StatusType.error] = 6,\n _a[StatusType.critical] = 7,\n _a[StatusType.alert] = 8,\n _a[StatusType.emerg] = 9,\n _a);\n//# sourceMappingURL=isAuthorized.js.map","export function createErrorFieldFromRawError(rawError, _a) {\n var _b = _a === void 0 ? {} : _a, \n /**\n * Set this to `true` to include the error message in the error field. In most cases, the error\n * message is already included in the log message, so we don't need to include it again.\n */\n _c = _b.includeMessage, \n /**\n * Set this to `true` to include the error message in the error field. In most cases, the error\n * message is already included in the log message, so we don't need to include it again.\n */\n includeMessage = _c === void 0 ? false : _c;\n return {\n stack: rawError.stack,\n kind: rawError.type,\n message: includeMessage ? rawError.message : undefined,\n causes: rawError.causes,\n fingerprint: rawError.fingerprint,\n handling: rawError.handling,\n };\n}\n//# sourceMappingURL=createErrorFieldFromRawError.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { clocksNow, computeRawError, computeStackTrace, combine, createContextManager, ErrorSource, monitored, sanitize, createHandlingStack, isError, } from '@datadog/browser-core';\nimport { isAuthorized, StatusType } from './logger/isAuthorized';\nimport { createErrorFieldFromRawError } from './createErrorFieldFromRawError';\nexport var HandlerType = {\n console: 'console',\n http: 'http',\n silent: 'silent',\n};\nexport var STATUSES = Object.keys(StatusType);\n// note: it is safe to merge declarations as long as the methods are actually defined on the prototype\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging, no-restricted-syntax\nvar Logger = /** @class */ (function () {\n function Logger(handleLogStrategy, customerDataTracker, name, handlerType, level, loggerContext) {\n if (handlerType === void 0) { handlerType = HandlerType.http; }\n if (level === void 0) { level = StatusType.debug; }\n if (loggerContext === void 0) { loggerContext = {}; }\n this.handleLogStrategy = handleLogStrategy;\n this.handlerType = handlerType;\n this.level = level;\n this.contextManager = createContextManager(customerDataTracker);\n this.contextManager.setContext(loggerContext);\n if (name) {\n this.contextManager.setContextProperty('logger', { name: name });\n }\n }\n Logger.prototype.logImplementation = function (message, messageContext, status, error, handlingStack) {\n if (status === void 0) { status = StatusType.info; }\n var sanitizedMessageContext = sanitize(messageContext);\n var context;\n if (error !== undefined && error !== null) {\n var rawError = computeRawError({\n stackTrace: isError(error) ? computeStackTrace(error) : undefined,\n originalError: error,\n nonErrorPrefix: \"Provided\" /* NonErrorPrefix.PROVIDED */,\n source: ErrorSource.LOGGER,\n handling: \"handled\" /* ErrorHandling.HANDLED */,\n startClocks: clocksNow(),\n });\n context = combine({\n error: createErrorFieldFromRawError(rawError, { includeMessage: true }),\n }, sanitizedMessageContext);\n }\n else {\n context = sanitizedMessageContext;\n }\n this.handleLogStrategy({\n message: sanitize(message),\n context: context,\n status: status,\n }, this, handlingStack);\n };\n Logger.prototype.log = function (message, messageContext, status, error) {\n if (status === void 0) { status = StatusType.info; }\n var handlingStack;\n if (isAuthorized(status, HandlerType.http, this)) {\n handlingStack = createHandlingStack();\n }\n this.logImplementation(message, messageContext, status, error, handlingStack);\n };\n Logger.prototype.setContext = function (context) {\n this.contextManager.setContext(context);\n };\n Logger.prototype.getContext = function () {\n return this.contextManager.getContext();\n };\n Logger.prototype.setContextProperty = function (key, value) {\n this.contextManager.setContextProperty(key, value);\n };\n Logger.prototype.removeContextProperty = function (key) {\n this.contextManager.removeContextProperty(key);\n };\n Logger.prototype.clearContext = function () {\n this.contextManager.clearContext();\n };\n Logger.prototype.setHandler = function (handler) {\n this.handlerType = handler;\n };\n Logger.prototype.getHandler = function () {\n return this.handlerType;\n };\n Logger.prototype.setLevel = function (level) {\n this.level = level;\n };\n Logger.prototype.getLevel = function () {\n return this.level;\n };\n __decorate([\n monitored\n ], Logger.prototype, \"logImplementation\", null);\n return Logger;\n}());\nexport { Logger };\n/* eslint-disable local-rules/disallow-side-effects */\nLogger.prototype.ok = createLoggerMethod(StatusType.ok);\nLogger.prototype.debug = createLoggerMethod(StatusType.debug);\nLogger.prototype.info = createLoggerMethod(StatusType.info);\nLogger.prototype.notice = createLoggerMethod(StatusType.notice);\nLogger.prototype.warn = createLoggerMethod(StatusType.warn);\nLogger.prototype.error = createLoggerMethod(StatusType.error);\nLogger.prototype.critical = createLoggerMethod(StatusType.critical);\nLogger.prototype.alert = createLoggerMethod(StatusType.alert);\nLogger.prototype.emerg = createLoggerMethod(StatusType.emerg);\nfunction createLoggerMethod(status) {\n return function (message, messageContext, error) {\n var handlingStack;\n if (isAuthorized(status, HandlerType.http, this)) {\n handlingStack = createHandlingStack();\n }\n this.logImplementation(message, messageContext, status, error, handlingStack);\n };\n}\n//# sourceMappingURL=logger.js.map","export function buildCommonContext(globalContextManager, userContextManager) {\n return {\n view: {\n referrer: document.referrer,\n url: window.location.href,\n },\n context: globalContextManager.getContext(),\n user: userContextManager.getContext(),\n };\n}\n//# sourceMappingURL=commonContext.js.map","import { serializeConfiguration, assign, ONE_KIBI_BYTE, validateAndBuildConfiguration, display, removeDuplicates, ConsoleApiName, RawReportType, includes, objectValues, } from '@datadog/browser-core';\n/**\n * arbitrary value, byte precision not needed\n */\nexport var DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT = 32 * ONE_KIBI_BYTE;\nexport function validateAndBuildLogsConfiguration(initConfiguration) {\n if (initConfiguration.usePciIntake === true && initConfiguration.site && initConfiguration.site !== 'datadoghq.com') {\n display.warn('PCI compliance for Logs is only available for Datadog organizations in the US1 site. Default intake will be used.');\n }\n var baseConfiguration = validateAndBuildConfiguration(initConfiguration);\n var forwardConsoleLogs = validateAndBuildForwardOption(initConfiguration.forwardConsoleLogs, objectValues(ConsoleApiName), 'Forward Console Logs');\n var forwardReports = validateAndBuildForwardOption(initConfiguration.forwardReports, objectValues(RawReportType), 'Forward Reports');\n if (!baseConfiguration || !forwardConsoleLogs || !forwardReports) {\n return;\n }\n if (initConfiguration.forwardErrorsToLogs && !includes(forwardConsoleLogs, ConsoleApiName.error)) {\n forwardConsoleLogs.push(ConsoleApiName.error);\n }\n return assign({\n forwardErrorsToLogs: initConfiguration.forwardErrorsToLogs !== false,\n forwardConsoleLogs: forwardConsoleLogs,\n forwardReports: forwardReports,\n requestErrorResponseLengthLimit: DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT,\n sendLogsAfterSessionExpiration: !!initConfiguration.sendLogsAfterSessionExpiration,\n }, baseConfiguration);\n}\nexport function validateAndBuildForwardOption(option, allowedValues, label) {\n if (option === undefined) {\n return [];\n }\n if (!(option === 'all' || (Array.isArray(option) && option.every(function (api) { return includes(allowedValues, api); })))) {\n display.error(\"\".concat(label, \" should be \\\"all\\\" or an array with allowed values \\\"\").concat(allowedValues.join('\", \"'), \"\\\"\"));\n return;\n }\n return option === 'all' ? allowedValues : removeDuplicates(option);\n}\nexport function serializeLogsConfiguration(configuration) {\n var baseSerializedInitConfiguration = serializeConfiguration(configuration);\n return assign({\n forward_errors_to_logs: configuration.forwardErrorsToLogs,\n forward_console_logs: configuration.forwardConsoleLogs,\n forward_reports: configuration.forwardReports,\n use_pci_intake: configuration.usePciIntake,\n send_logs_after_session_expiration: configuration.sendLogsAfterSessionExpiration,\n }, baseSerializedInitConfiguration);\n}\n//# sourceMappingURL=configuration.js.map","import { createBoundedBuffer, assign, canUseEventBridge, display, displayAlreadyInitializedError, initFeatureFlags, initFetchObservable, noop, timeStampNow, } from '@datadog/browser-core';\nimport { validateAndBuildLogsConfiguration, } from '../domain/configuration';\nexport function createPreStartStrategy(getCommonContext, trackingConsentState, doStartLogs) {\n var bufferApiCalls = createBoundedBuffer();\n var cachedInitConfiguration;\n var cachedConfiguration;\n var trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartLogs);\n function tryStartLogs() {\n if (!cachedConfiguration || !cachedInitConfiguration || !trackingConsentState.isGranted()) {\n return;\n }\n trackingConsentStateSubscription.unsubscribe();\n var startLogsResult = doStartLogs(cachedInitConfiguration, cachedConfiguration);\n bufferApiCalls.drain(startLogsResult);\n }\n return {\n init: function (initConfiguration) {\n if (!initConfiguration) {\n display.error('Missing configuration');\n return;\n }\n // Set the experimental feature flags as early as possible, so we can use them in most places\n initFeatureFlags(initConfiguration.enableExperimentalFeatures);\n if (canUseEventBridge()) {\n initConfiguration = overrideInitConfigurationForBridge(initConfiguration);\n }\n // Expose the initial configuration regardless of initialization success.\n cachedInitConfiguration = initConfiguration;\n if (cachedConfiguration) {\n displayAlreadyInitializedError('DD_LOGS', initConfiguration);\n return;\n }\n var configuration = validateAndBuildLogsConfiguration(initConfiguration);\n if (!configuration) {\n return;\n }\n cachedConfiguration = configuration;\n // Instrumuent fetch to track network requests\n // This is needed in case the consent is not granted and some cutsomer\n // library (Apollo Client) is storing uninstrumented fetch to be used later\n // The subscrption is needed so that the instrumentation process is completed\n initFetchObservable().subscribe(noop);\n trackingConsentState.tryToInit(configuration.trackingConsent);\n tryStartLogs();\n },\n get initConfiguration() {\n return cachedInitConfiguration;\n },\n getInternalContext: noop,\n handleLog: function (message, statusType, handlingStack, context, date) {\n if (context === void 0) { context = getCommonContext(); }\n if (date === void 0) { date = timeStampNow(); }\n bufferApiCalls.add(function (startLogsResult) {\n return startLogsResult.handleLog(message, statusType, handlingStack, context, date);\n });\n },\n };\n}\nfunction overrideInitConfigurationForBridge(initConfiguration) {\n return assign({}, initConfiguration, { clientToken: 'empty' });\n}\n//# sourceMappingURL=preStartLogs.js.map","import { addTelemetryUsage, assign, createContextManager, makePublicApi, monitor, checkUser, sanitizeUser, sanitize, createCustomerDataTrackerManager, storeContextManager, displayAlreadyInitializedError, deepClone, createTrackingConsentState, } from '@datadog/browser-core';\nimport { Logger } from '../domain/logger';\nimport { buildCommonContext } from '../domain/contexts/commonContext';\nimport { createPreStartStrategy } from './preStartLogs';\nvar LOGS_STORAGE_KEY = 'logs';\nexport function makeLogsPublicApi(startLogsImpl) {\n var customerDataTrackerManager = createCustomerDataTrackerManager();\n var globalContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(2 /* CustomerDataType.GlobalContext */));\n var userContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(1 /* CustomerDataType.User */));\n var trackingConsentState = createTrackingConsentState();\n function getCommonContext() {\n return buildCommonContext(globalContextManager, userContextManager);\n }\n var strategy = createPreStartStrategy(getCommonContext, trackingConsentState, function (initConfiguration, configuration) {\n if (initConfiguration.storeContextsAcrossPages) {\n storeContextManager(configuration, globalContextManager, LOGS_STORAGE_KEY, 2 /* CustomerDataType.GlobalContext */);\n storeContextManager(configuration, userContextManager, LOGS_STORAGE_KEY, 1 /* CustomerDataType.User */);\n }\n var startLogsResult = startLogsImpl(initConfiguration, configuration, getCommonContext, trackingConsentState);\n strategy = createPostStartStrategy(initConfiguration, startLogsResult);\n return startLogsResult;\n });\n var customLoggers = {};\n var mainLogger = new Logger(function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n return strategy.handleLog.apply(strategy, params);\n }, customerDataTrackerManager.createDetachedTracker());\n return makePublicApi({\n logger: mainLogger,\n init: monitor(function (initConfiguration) { return strategy.init(initConfiguration); }),\n setTrackingConsent: monitor(function (trackingConsent) {\n trackingConsentState.update(trackingConsent);\n addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent });\n }),\n getGlobalContext: monitor(function () { return globalContextManager.getContext(); }),\n setGlobalContext: monitor(function (context) { return globalContextManager.setContext(context); }),\n setGlobalContextProperty: monitor(function (key, value) { return globalContextManager.setContextProperty(key, value); }),\n removeGlobalContextProperty: monitor(function (key) { return globalContextManager.removeContextProperty(key); }),\n clearGlobalContext: monitor(function () { return globalContextManager.clearContext(); }),\n createLogger: monitor(function (name, conf) {\n if (conf === void 0) { conf = {}; }\n customLoggers[name] = new Logger(function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n return strategy.handleLog.apply(strategy, params);\n }, customerDataTrackerManager.createDetachedTracker(), sanitize(name), conf.handler, conf.level, sanitize(conf.context));\n return customLoggers[name];\n }),\n getLogger: monitor(function (name) { return customLoggers[name]; }),\n getInitConfiguration: monitor(function () { return deepClone(strategy.initConfiguration); }),\n getInternalContext: monitor(function (startTime) { return strategy.getInternalContext(startTime); }),\n setUser: monitor(function (newUser) {\n if (checkUser(newUser)) {\n userContextManager.setContext(sanitizeUser(newUser));\n }\n }),\n getUser: monitor(function () { return userContextManager.getContext(); }),\n setUserProperty: monitor(function (key, property) {\n var _a;\n var sanitizedProperty = sanitizeUser((_a = {}, _a[key] = property, _a))[key];\n userContextManager.setContextProperty(key, sanitizedProperty);\n }),\n removeUserProperty: monitor(function (key) { return userContextManager.removeContextProperty(key); }),\n clearUser: monitor(function () { return userContextManager.clearContext(); }),\n });\n}\nfunction createPostStartStrategy(initConfiguration, startLogsResult) {\n return assign({\n init: function (initConfiguration) {\n displayAlreadyInitializedError('DD_LOGS', initConfiguration);\n },\n initConfiguration: initConfiguration,\n }, startLogsResult);\n}\n//# sourceMappingURL=logsPublicApi.js.map","import { Observable, performDraw, startSessionManager } from '@datadog/browser-core';\nexport var LOGS_SESSION_KEY = 'logs';\nexport function startLogsSessionManager(configuration, trackingConsentState) {\n var sessionManager = startSessionManager(configuration, LOGS_SESSION_KEY, function (rawTrackingType) { return computeSessionState(configuration, rawTrackingType); }, trackingConsentState);\n return {\n findTrackedSession: function (startTime, options) {\n if (options === void 0) { options = { returnInactive: false }; }\n var session = sessionManager.findSession(startTime, options);\n return session && session.trackingType === \"1\" /* LoggerTrackingType.TRACKED */\n ? {\n id: session.id,\n }\n : undefined;\n },\n expireObservable: sessionManager.expireObservable,\n };\n}\nexport function startLogsSessionManagerStub(configuration) {\n var isTracked = computeTrackingType(configuration) === \"1\" /* LoggerTrackingType.TRACKED */;\n var session = isTracked ? {} : undefined;\n return {\n findTrackedSession: function () { return session; },\n expireObservable: new Observable(),\n };\n}\nfunction computeTrackingType(configuration) {\n if (!performDraw(configuration.sessionSampleRate)) {\n return \"0\" /* LoggerTrackingType.NOT_TRACKED */;\n }\n return \"1\" /* LoggerTrackingType.TRACKED */;\n}\nfunction computeSessionState(configuration, rawSessionType) {\n var trackingType = hasValidLoggerSession(rawSessionType) ? rawSessionType : computeTrackingType(configuration);\n return {\n trackingType: trackingType,\n isTracked: trackingType === \"1\" /* LoggerTrackingType.TRACKED */,\n };\n}\nfunction hasValidLoggerSession(trackingType) {\n return trackingType === \"0\" /* LoggerTrackingType.NOT_TRACKED */ || trackingType === \"1\" /* LoggerTrackingType.TRACKED */;\n}\n//# sourceMappingURL=logsSessionManager.js.map","import { willSyntheticsInjectRum, addTelemetryDebug, getSyntheticsTestId, getSyntheticsResultId, } from '@datadog/browser-core';\nvar logsSentBeforeRumInjectionTelemetryAdded = false;\nexport function getRUMInternalContext(startTime) {\n var browserWindow = window;\n if (willSyntheticsInjectRum()) {\n var context = getInternalContextFromRumGlobal(browserWindow.DD_RUM_SYNTHETICS);\n if (!context && !logsSentBeforeRumInjectionTelemetryAdded) {\n logsSentBeforeRumInjectionTelemetryAdded = true;\n addTelemetryDebug('Logs sent before RUM is injected by the synthetics worker', {\n testId: getSyntheticsTestId(),\n resultId: getSyntheticsResultId(),\n });\n }\n return context;\n }\n return getInternalContextFromRumGlobal(browserWindow.DD_RUM);\n function getInternalContextFromRumGlobal(rumGlobal) {\n if (rumGlobal && rumGlobal.getInternalContext) {\n return rumGlobal.getInternalContext(startTime);\n }\n }\n}\nexport function resetRUMInternalContext() {\n logsSentBeforeRumInjectionTelemetryAdded = false;\n}\n//# sourceMappingURL=rumInternalContext.js.map","import { ErrorSource, combine, createEventRateLimiter, getRelativeTime, isEmptyObject } from '@datadog/browser-core';\nimport { STATUSES } from './logger';\nimport { getRUMInternalContext } from './contexts/rumInternalContext';\nexport function startLogsAssembly(sessionManager, configuration, lifeCycle, getCommonContext, reportError) {\n var statusWithCustom = STATUSES.concat(['custom']);\n var logRateLimiters = {};\n statusWithCustom.forEach(function (status) {\n logRateLimiters[status] = createEventRateLimiter(status, configuration.eventRateLimiterThreshold, reportError);\n });\n lifeCycle.subscribe(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, function (_a) {\n var _b, _c;\n var rawLogsEvent = _a.rawLogsEvent, _d = _a.messageContext, messageContext = _d === void 0 ? undefined : _d, _e = _a.savedCommonContext, savedCommonContext = _e === void 0 ? undefined : _e, domainContext = _a.domainContext;\n var startTime = getRelativeTime(rawLogsEvent.date);\n var session = sessionManager.findTrackedSession(startTime);\n if (!session &&\n (!configuration.sendLogsAfterSessionExpiration ||\n !sessionManager.findTrackedSession(startTime, { returnInactive: true }))) {\n return;\n }\n var commonContext = savedCommonContext || getCommonContext();\n var log = combine({\n service: configuration.service,\n session_id: session ? session.id : undefined,\n session: session ? { id: session.id } : undefined,\n // Insert user first to allow overrides from global context\n usr: !isEmptyObject(commonContext.user) ? commonContext.user : undefined,\n view: commonContext.view,\n }, commonContext.context, getRUMInternalContext(startTime), rawLogsEvent, messageContext);\n if (((_b = configuration.beforeSend) === null || _b === void 0 ? void 0 : _b.call(configuration, log, domainContext)) === false ||\n (log.origin !== ErrorSource.AGENT &&\n ((_c = logRateLimiters[log.status]) !== null && _c !== void 0 ? _c : logRateLimiters['custom']).isLimitReached())) {\n return;\n }\n lifeCycle.notify(1 /* LifeCycleEventType.LOG_COLLECTED */, log);\n });\n}\n//# sourceMappingURL=assembly.js.map","var _a;\nimport { timeStampNow, ConsoleApiName, ErrorSource, initConsoleObservable } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nimport { createErrorFieldFromRawError } from '../createErrorFieldFromRawError';\nexport var LogStatusForApi = (_a = {},\n _a[ConsoleApiName.log] = StatusType.info,\n _a[ConsoleApiName.debug] = StatusType.debug,\n _a[ConsoleApiName.info] = StatusType.info,\n _a[ConsoleApiName.warn] = StatusType.warn,\n _a[ConsoleApiName.error] = StatusType.error,\n _a);\nexport function startConsoleCollection(configuration, lifeCycle) {\n var consoleSubscription = initConsoleObservable(configuration.forwardConsoleLogs).subscribe(function (log) {\n var collectedData = {\n rawLogsEvent: {\n date: timeStampNow(),\n message: log.message,\n origin: ErrorSource.CONSOLE,\n error: log.error && createErrorFieldFromRawError(log.error),\n status: LogStatusForApi[log.api],\n },\n domainContext: {\n handlingStack: log.handlingStack,\n },\n };\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, collectedData);\n });\n return {\n stop: function () {\n consoleSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=consoleCollection.js.map","import { timeStampNow, ErrorSource, getFileFromStackTraceString, initReportObservable } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nimport { createErrorFieldFromRawError } from '../createErrorFieldFromRawError';\nexport function startReportCollection(configuration, lifeCycle) {\n var reportSubscription = initReportObservable(configuration, configuration.forwardReports).subscribe(function (rawError) {\n var message = rawError.message;\n var error;\n var status = rawError.originalError.type === 'deprecation' ? StatusType.warn : StatusType.error;\n if (status === StatusType.error) {\n error = createErrorFieldFromRawError(rawError);\n }\n else if (rawError.stack) {\n message += \" Found in \".concat(getFileFromStackTraceString(rawError.stack));\n }\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n rawLogsEvent: {\n date: timeStampNow(),\n message: message,\n origin: ErrorSource.REPORT,\n error: error,\n status: status,\n },\n });\n });\n return {\n stop: function () {\n reportSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=reportCollection.js.map","import { ErrorSource, initXhrObservable, initFetchObservable, computeStackTrace, toStackTraceString, monitor, noop, readBytesFromStream, tryToClone, isServerError, isIntakeUrl, } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nexport function startNetworkErrorCollection(configuration, lifeCycle) {\n if (!configuration.forwardErrorsToLogs) {\n return { stop: noop };\n }\n var xhrSubscription = initXhrObservable(configuration).subscribe(function (context) {\n if (context.state === 'complete') {\n handleResponse(\"xhr\" /* RequestType.XHR */, context);\n }\n });\n var fetchSubscription = initFetchObservable().subscribe(function (context) {\n if (context.state === 'resolve') {\n handleResponse(\"fetch\" /* RequestType.FETCH */, context);\n }\n });\n function handleResponse(type, request) {\n if (!isIntakeUrl(request.url) && (isRejected(request) || isServerError(request.status))) {\n if ('xhr' in request) {\n computeXhrResponseData(request.xhr, configuration, onResponseDataAvailable);\n }\n else if (request.response) {\n computeFetchResponseText(request.response, configuration, onResponseDataAvailable);\n }\n else if (request.error) {\n computeFetchErrorText(request.error, configuration, onResponseDataAvailable);\n }\n }\n function onResponseDataAvailable(responseData) {\n var domainContext = {\n isAborted: request.isAborted,\n handlingStack: request.handlingStack,\n };\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n rawLogsEvent: {\n message: \"\".concat(format(type), \" error \").concat(request.method, \" \").concat(request.url),\n date: request.startClocks.timeStamp,\n error: {\n stack: responseData || 'Failed to load',\n // We don't know if the error was handled or not, so we set it to undefined\n handling: undefined,\n },\n http: {\n method: request.method, // Cast resource method because of case mismatch cf issue RUMF-1152\n status_code: request.status,\n url: request.url,\n },\n status: StatusType.error,\n origin: ErrorSource.NETWORK,\n },\n domainContext: domainContext,\n });\n }\n }\n return {\n stop: function () {\n xhrSubscription.unsubscribe();\n fetchSubscription.unsubscribe();\n },\n };\n}\n// TODO: ideally, computeXhrResponseData should always call the callback with a string instead of\n// `unknown`. But to keep backward compatibility, in the case of XHR with a `responseType` different\n// than \"text\", the response data should be whatever `xhr.response` is. This is a bit confusing as\n// Logs event 'stack' is expected to be a string. This should be changed in a future major version\n// as it could be a breaking change.\nexport function computeXhrResponseData(xhr, configuration, callback) {\n if (typeof xhr.response === 'string') {\n callback(truncateResponseText(xhr.response, configuration));\n }\n else {\n callback(xhr.response);\n }\n}\nexport function computeFetchErrorText(error, configuration, callback) {\n callback(truncateResponseText(toStackTraceString(computeStackTrace(error)), configuration));\n}\nexport function computeFetchResponseText(response, configuration, callback) {\n var clonedResponse = tryToClone(response);\n if (!clonedResponse || !clonedResponse.body) {\n // if the clone failed or if the body is null, let's not try to read it.\n callback();\n }\n else if (!window.TextDecoder) {\n // If the browser doesn't support TextDecoder, let's read the whole response then truncate it.\n //\n // This should only be the case on early versions of Edge (before they migrated to Chromium).\n // Even if it could be possible to implement a workaround for the missing TextDecoder API (using\n // a Blob and FileReader), we found another issue preventing us from reading only the first\n // bytes from the response: contrary to other browsers, when reading from the cloned response,\n // if the original response gets canceled, the cloned response is also canceled and we can't\n // know about it. In the following illustration, the promise returned by `reader.read()` may\n // never be fulfilled:\n //\n // fetch('/').then((response) => {\n // const reader = response.clone().body.getReader()\n // readMore()\n // function readMore() {\n // reader.read().then(\n // (result) => {\n // if (result.done) {\n // console.log('done')\n // } else {\n // readMore()\n // }\n // },\n // () => console.log('error')\n // )\n // }\n // response.body.getReader().cancel()\n // })\n clonedResponse.text().then(monitor(function (text) { return callback(truncateResponseText(text, configuration)); }), monitor(function (error) { return callback(\"Unable to retrieve response: \".concat(error)); }));\n }\n else {\n truncateResponseStream(clonedResponse.body, configuration.requestErrorResponseLengthLimit, function (error, responseText) {\n if (error) {\n callback(\"Unable to retrieve response: \".concat(error));\n }\n else {\n callback(responseText);\n }\n });\n }\n}\nfunction isRejected(request) {\n return request.status === 0 && request.responseType !== 'opaque';\n}\nfunction truncateResponseText(responseText, configuration) {\n if (responseText.length > configuration.requestErrorResponseLengthLimit) {\n return \"\".concat(responseText.substring(0, configuration.requestErrorResponseLengthLimit), \"...\");\n }\n return responseText;\n}\nfunction format(type) {\n if (\"xhr\" /* RequestType.XHR */ === type) {\n return 'XHR';\n }\n return 'Fetch';\n}\nfunction truncateResponseStream(stream, bytesLimit, callback) {\n readBytesFromStream(stream, function (error, bytes, limitExceeded) {\n if (error) {\n callback(error);\n }\n else {\n var responseText = new TextDecoder().decode(bytes);\n if (limitExceeded) {\n responseText += '...';\n }\n callback(undefined, responseText);\n }\n }, {\n bytesLimit: bytesLimit,\n collectStreamBody: true,\n });\n}\n//# sourceMappingURL=networkErrorCollection.js.map","import { noop, ErrorSource, trackRuntimeError, Observable } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nimport { createErrorFieldFromRawError } from '../createErrorFieldFromRawError';\nexport function startRuntimeErrorCollection(configuration, lifeCycle) {\n if (!configuration.forwardErrorsToLogs) {\n return { stop: noop };\n }\n var rawErrorObservable = new Observable();\n var stopRuntimeErrorTracking = trackRuntimeError(rawErrorObservable).stop;\n var rawErrorSubscription = rawErrorObservable.subscribe(function (rawError) {\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n rawLogsEvent: {\n message: rawError.message,\n date: rawError.startClocks.timeStamp,\n error: createErrorFieldFromRawError(rawError),\n origin: ErrorSource.SOURCE,\n status: StatusType.error,\n },\n });\n });\n return {\n stop: function () {\n stopRuntimeErrorTracking();\n rawErrorSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=runtimeErrorCollection.js.map","import { AbstractLifeCycle } from '@datadog/browser-core';\nexport var LifeCycle = (AbstractLifeCycle);\n//# sourceMappingURL=lifeCycle.js.map","var _a;\nimport { combine, ErrorSource, timeStampNow, originalConsoleMethods, globalConsole, ConsoleApiName, } from '@datadog/browser-core';\nimport { HandlerType } from '../logger';\nimport { isAuthorized, StatusType } from './isAuthorized';\nexport function startLoggerCollection(lifeCycle) {\n function handleLog(logsMessage, logger, handlingStack, savedCommonContext, savedDate) {\n var messageContext = combine(logger.getContext(), logsMessage.context);\n if (isAuthorized(logsMessage.status, HandlerType.console, logger)) {\n displayInConsole(logsMessage, messageContext);\n }\n if (isAuthorized(logsMessage.status, HandlerType.http, logger)) {\n var rawLogEventData = {\n rawLogsEvent: {\n date: savedDate || timeStampNow(),\n message: logsMessage.message,\n status: logsMessage.status,\n origin: ErrorSource.LOGGER,\n },\n messageContext: messageContext,\n savedCommonContext: savedCommonContext,\n };\n if (handlingStack) {\n rawLogEventData.domainContext = { handlingStack: handlingStack };\n }\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, rawLogEventData);\n }\n }\n return {\n handleLog: handleLog,\n };\n}\nvar loggerToConsoleApiName = (_a = {},\n _a[StatusType.ok] = ConsoleApiName.debug,\n _a[StatusType.debug] = ConsoleApiName.debug,\n _a[StatusType.info] = ConsoleApiName.info,\n _a[StatusType.notice] = ConsoleApiName.info,\n _a[StatusType.warn] = ConsoleApiName.warn,\n _a[StatusType.error] = ConsoleApiName.error,\n _a[StatusType.critical] = ConsoleApiName.error,\n _a[StatusType.alert] = ConsoleApiName.error,\n _a[StatusType.emerg] = ConsoleApiName.error,\n _a);\nfunction displayInConsole(_a, messageContext) {\n var status = _a.status, message = _a.message;\n originalConsoleMethods[loggerToConsoleApiName[status]].call(globalConsole, message, messageContext);\n}\n//# sourceMappingURL=loggerCollection.js.map","import { createIdentityEncoder, startBatchWithReplica } from '@datadog/browser-core';\nexport function startLogsBatch(configuration, lifeCycle, reportError, pageExitObservable, session) {\n var batch = startBatchWithReplica(configuration, {\n endpoint: configuration.logsEndpointBuilder,\n encoder: createIdentityEncoder(),\n }, configuration.replica && {\n endpoint: configuration.replica.logsEndpointBuilder,\n encoder: createIdentityEncoder(),\n }, reportError, pageExitObservable, session.expireObservable);\n lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, function (serverLogsEvent) {\n batch.add(serverLogsEvent);\n });\n return batch;\n}\n//# sourceMappingURL=startLogsBatch.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startLogsBridge(lifeCycle) {\n var bridge = getEventBridge();\n lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, function (serverLogsEvent) {\n bridge.send('log', serverLogsEvent);\n });\n}\n//# sourceMappingURL=startLogsBridge.js.map","export function startInternalContext(sessionManager) {\n return {\n get: function (startTime) {\n var trackedSession = sessionManager.findTrackedSession(startTime);\n if (trackedSession) {\n return {\n session_id: trackedSession.id,\n };\n }\n },\n };\n}\n//# sourceMappingURL=internalContext.js.map","import { ErrorSource, addTelemetryDebug } from '@datadog/browser-core';\nimport { StatusType } from './logger/isAuthorized';\nexport function startReportError(lifeCycle) {\n return function (error) {\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n rawLogsEvent: {\n message: error.message,\n date: error.startClocks.timeStamp,\n origin: ErrorSource.AGENT,\n status: StatusType.error,\n },\n });\n addTelemetryDebug('Error reported to customer', { 'error.message': error.message });\n };\n}\n//# sourceMappingURL=reportError.js.map","import { startTelemetry, canUseEventBridge, getEventBridge, startBatchWithReplica, createIdentityEncoder, isTelemetryReplicationAllowed, addTelemetryConfiguration, drainPreStartTelemetry, } from '@datadog/browser-core';\nimport { getRUMInternalContext } from './contexts/rumInternalContext';\nimport { serializeLogsConfiguration } from './configuration';\nexport function startLogsTelemetry(initConfiguration, configuration, reportError, pageExitObservable, session) {\n var telemetry = startTelemetry(\"browser-logs-sdk\" /* TelemetryService.LOGS */, configuration);\n telemetry.setContextProvider(function () {\n var _a, _b, _c, _d, _e, _f;\n return ({\n application: {\n id: (_a = getRUMInternalContext()) === null || _a === void 0 ? void 0 : _a.application_id,\n },\n session: {\n id: (_b = session.findTrackedSession()) === null || _b === void 0 ? void 0 : _b.id,\n },\n view: {\n id: (_d = (_c = getRUMInternalContext()) === null || _c === void 0 ? void 0 : _c.view) === null || _d === void 0 ? void 0 : _d.id,\n },\n action: {\n id: (_f = (_e = getRUMInternalContext()) === null || _e === void 0 ? void 0 : _e.user_action) === null || _f === void 0 ? void 0 : _f.id,\n },\n });\n });\n var cleanupTasks = [];\n if (canUseEventBridge()) {\n var bridge_1 = getEventBridge();\n var telemetrySubscription_1 = telemetry.observable.subscribe(function (event) { return bridge_1.send('internal_telemetry', event); });\n cleanupTasks.push(function () { return telemetrySubscription_1.unsubscribe(); });\n }\n else {\n var telemetryBatch_1 = startBatchWithReplica(configuration, {\n endpoint: configuration.rumEndpointBuilder,\n encoder: createIdentityEncoder(),\n }, configuration.replica && {\n endpoint: configuration.replica.rumEndpointBuilder,\n encoder: createIdentityEncoder(),\n }, reportError, pageExitObservable, session.expireObservable);\n cleanupTasks.push(function () { return telemetryBatch_1.stop(); });\n var telemetrySubscription_2 = telemetry.observable.subscribe(function (event) {\n return telemetryBatch_1.add(event, isTelemetryReplicationAllowed(configuration));\n });\n cleanupTasks.push(function () { return telemetrySubscription_2.unsubscribe(); });\n }\n drainPreStartTelemetry();\n addTelemetryConfiguration(serializeLogsConfiguration(initConfiguration));\n return {\n telemetry: telemetry,\n stop: function () {\n cleanupTasks.forEach(function (task) { return task(); });\n },\n };\n}\n//# sourceMappingURL=logsTelemetry.js.map","import { sendToExtension, createPageExitObservable, willSyntheticsInjectRum, canUseEventBridge, } from '@datadog/browser-core';\nimport { startLogsSessionManager, startLogsSessionManagerStub } from '../domain/logsSessionManager';\nimport { startLogsAssembly } from '../domain/assembly';\nimport { startConsoleCollection } from '../domain/console/consoleCollection';\nimport { startReportCollection } from '../domain/report/reportCollection';\nimport { startNetworkErrorCollection } from '../domain/networkError/networkErrorCollection';\nimport { startRuntimeErrorCollection } from '../domain/runtimeError/runtimeErrorCollection';\nimport { LifeCycle } from '../domain/lifeCycle';\nimport { startLoggerCollection } from '../domain/logger/loggerCollection';\nimport { startLogsBatch } from '../transport/startLogsBatch';\nimport { startLogsBridge } from '../transport/startLogsBridge';\nimport { startInternalContext } from '../domain/contexts/internalContext';\nimport { startReportError } from '../domain/reportError';\nimport { startLogsTelemetry } from '../domain/logsTelemetry';\nexport function startLogs(initConfiguration, configuration, getCommonContext, \n// `startLogs` and its subcomponents assume tracking consent is granted initially and starts\n// collecting logs unconditionally. As such, `startLogs` should be called with a\n// `trackingConsentState` set to \"granted\".\ntrackingConsentState) {\n var lifeCycle = new LifeCycle();\n var cleanupTasks = [];\n lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, function (log) { return sendToExtension('logs', log); });\n var reportError = startReportError(lifeCycle);\n var pageExitObservable = createPageExitObservable(configuration);\n var session = configuration.sessionStoreStrategyType && !canUseEventBridge() && !willSyntheticsInjectRum()\n ? startLogsSessionManager(configuration, trackingConsentState)\n : startLogsSessionManagerStub(configuration);\n var stopLogsTelemetry = startLogsTelemetry(initConfiguration, configuration, reportError, pageExitObservable, session).stop;\n cleanupTasks.push(function () { return stopLogsTelemetry(); });\n startNetworkErrorCollection(configuration, lifeCycle);\n startRuntimeErrorCollection(configuration, lifeCycle);\n startConsoleCollection(configuration, lifeCycle);\n startReportCollection(configuration, lifeCycle);\n var handleLog = startLoggerCollection(lifeCycle).handleLog;\n startLogsAssembly(session, configuration, lifeCycle, getCommonContext, reportError);\n if (!canUseEventBridge()) {\n var stopLogsBatch_1 = startLogsBatch(configuration, lifeCycle, reportError, pageExitObservable, session).stop;\n cleanupTasks.push(function () { return stopLogsBatch_1(); });\n }\n else {\n startLogsBridge(lifeCycle);\n }\n var internalContext = startInternalContext(session);\n return {\n handleLog: handleLog,\n getInternalContext: internalContext.get,\n stop: function () {\n cleanupTasks.forEach(function (task) { return task(); });\n },\n };\n}\n//# sourceMappingURL=startLogs.js.map","import { defineGlobal, getGlobalObject } from '@datadog/browser-core';\nimport { makeLogsPublicApi } from '../boot/logsPublicApi';\nimport { startLogs } from '../boot/startLogs';\nexport { Logger, HandlerType } from '../domain/logger';\nexport { StatusType } from '../domain/logger/isAuthorized';\nexport var datadogLogs = makeLogsPublicApi(startLogs);\ndefineGlobal(getGlobalObject(), 'DD_LOGS', datadogLogs);\n//# sourceMappingURL=main.js.map"],"names":["ConsoleApiName","globalConsole","originalConsoleMethods","name","PREFIX","display","DOCS_ORIGIN","DOCS_TROUBLESHOOTING","MORE_DETAILS","catchUserErrors","fn","errorMsg","args","_i","err","performDraw","threshold","round","num","decimals","isPercentage","value","isNumber","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","ONE_YEAR","relativeToClocks","relative","getCorrectedTimeStamp","timeStampToClocks","timeStamp","getRelativeTime","relativeTime","correctedOrigin","dateNow","getNavigationStart","addDuration","getTimeStamp","currentDrift","toServerDuration","duration","timeStampNow","relativeNow","clocksNow","clocksOrigin","elapsed","start","end","a","b","timestamp","looksLikeRelativeTime","time","navigationStart","ONE_KIBI_BYTE","ONE_MEBI_BYTE","HAS_MULTI_BYTES_CHARACTERS","computeBytesCount","candidate","concatBuffers","buffers","length","total","buffer","result","offset","buffers_1","includes","search","arrayFrom","arrayLike","array","item","i","find","predicate","findLast","forEach","list","callback","objectValues","object","key","objectEntries","startsWith","endsWith","assign","target","toAssign","source","shallowClone","objectHasValue","isEmptyObject","mapValues","newObject","_a","getGlobalObject","globalObject","getZoneJsOriginalValue","browserWindow","original","__spreadArray","this","to","from","pack","l","ar","onMonitorErrorCollected","debugMode","startMonitorErrorCollection","newOnMonitorErrorCollected","setDebugMode","newDebugMode","monitored","_","__","descriptor","originalMethod","decorated","monitor","callMonitored","context","e","displayIfDebugEnabled","setTimeout","delay","clearTimeout","timeoutId","setInterval","clearInterval","Observable","onFirstSubscribe","f","_this","other","data","observer","mergeObservables","observables","globalObservable","subscriptions","observable","subscription","throttle","wait","options","needLeadingExecution","needTrailingExecution","inWaitPeriod","pendingExecutionWithParameters","pendingTimeoutId","parameters","noop","generateUUID","placeholder","COMMA_SEPARATED_KEY_VALUE","findCommaSeparatedValue","rawString","match","findCommaSeparatedValues","safeTruncate","suffix","lastChar","isLastCharSurrogatePair","correctedLength","isIE","detectBrowserCached","isChromium","isSafari","browserCache","detectBrowser","userAgent","ExperimentalFeature","enabledExperimentalFeatures","initFeatureFlags","enableExperimentalFeatures","addExperimentalFeatures","flag","enabledFeatures","isExperimentalFeatureEnabled","featureName","getExperimentalFeatures","setCookie","expireDelay","date","expires","sameSite","domain","secure","partitioned","getCookie","initCookieParsed","getInitCookie","deleteCookie","areCookiesAuthorized","testCookieName","testCookieValue","isCookieCorrectlySet","error","getCurrentSiteCache","getCurrentSite","domainLevels","candidateDomain","SESSION_STORE_KEY","getType","sanitizeUser","newUser","user","keys","checkUser","isValid","generateAnonymousId","SESSION_TIME_OUT_DELAY","SESSION_EXPIRATION_DELAY","SESSION_COOKIE_EXPIRATION_DELAY","SessionPersistence","SESSION_ENTRY_REGEXP","SESSION_ENTRY_SEPARATOR","isValidSessionString","sessionString","EXPIRED","getExpiredSessionState","previousSessionState","expiredSessionState","isSessionInNotStartedState","session","isSessionStarted","isSessionInExpiredState","isActiveSession","sessionState","expandSessionState","toSessionString","toSessionState","entry","matches","OLD_SESSION_COOKIE_NAME","OLD_RUM_COOKIE_NAME","OLD_LOGS_COOKIE_NAME","RUM_SESSION_KEY","LOGS_SESSION_KEY","tryOldCookiesMigration","cookieStoreStrategy","oldSessionId","oldRumType","oldLogsType","selectCookieStrategy","initConfiguration","cookieOptions","buildCookieOptions","initCookieStrategy","cookieStore","persistSessionCookie","retrieveSessionCookie","expireSessionCookie","LOCAL_STORAGE_TEST_KEY","selectLocalStorageStrategy","id","testKey","retrievedId","initLocalStorageStrategy","persistInLocalStorage","retrieveSessionFromLocalStorage","expireSessionFromLocalStorage","LOCK_RETRY_DELAY","LOCK_MAX_TRIES","bufferedOperations","ongoingOperations","processSessionStoreOperations","operations","sessionStoreStrategy","numberOfRetries","isLockEnabled","persistSession","expireSession","persistWithLock","currentLock","retrieveStore","lock","next","currentStore","retryLater","processedSession","sessionStore","currentNumberOfRetries","nextOperations","STORAGE_POLL_DELAY","selectSessionStoreStrategyType","sessionStoreStrategyType","startSessionStore","productKey","computeSessionState","renewObservable","expireObservable","sessionStateUpdateObservable","watchSessionTimeoutId","watchSession","sessionCache","startSession","synchronizedSession","synchronizeSession","expandOrRenewSessionState","hasSessionInCache","renewSessionInCache","throttledExpandOrRenewSession","cancelExpandOrRenewSession","expandSession","isSessionInCacheOutdated","expireSessionInCache","trackingType","isTracked","updateSessionState","partialSessionState","TrackingConsent","createTrackingConsentState","currentConsent","trackingConsent","jsonStringify","replacer","space","restoreObjectPrototypeToJson","detachToJsonMethod","restoreArrayPrototypeToJson","restoreValuePrototypeToJson","restoreValueToJson","objectToJson","normalizeUrl","url","buildUrl","isValidUrl","getPathName","pathname","base","supportedURL","getSupportedUrl","doc","anchorElement","baseElement","originalURL","isURLSupported","INTAKE_SITE_STAGING","INTAKE_SITE_FED_STAGING","INTAKE_SITE_US1","INTAKE_SITE_EU1","INTAKE_SITE_US1_FED","PCI_INTAKE_HOST_US1","INTAKE_URL_PARAMETERS","createEndpointBuilder","trackType","configurationTags","buildUrlWithParameters","createEndpointUrlWithParametersBuilder","api","payload","buildEndpointParameters","path","proxy","normalizedProxyUrl_1","host","buildEndpointHost","site","internalAnalyticsSubdomain","domainParts","extension","_b","clientToken","retry","encoding","tags","TAG_SIZE_LIMIT","buildTags","configuration","env","service","version","datacenter","buildTag","rawValue","valueSizeLimit","hasForbiddenCharacters","sanitizedValue","supportUnicodePropertyEscapes","computeTransportConfiguration","endpointBuilders","computeEndpointBuilders","replicaConfiguration","computeReplicaConfiguration","replicaEndpointBuilders","isIntakeUrl","param","DefaultPrivacyLevel","TraceContextInjection","isString","tag","tagName","isDatadogSite","isSampleRate","sampleRate","validateAndBuildConfiguration","_c","_d","_e","serializeConfiguration","UNKNOWN_FUNCTION","computeStackTrace","ex","stack","stackProperty","tryToGetString","exString","line","stackFrame","parseChromeLine","parseChromeAnonymousLine","parseWinLine","parseGeckoLine","fileUrl","filePosition","CHROME_LINE_RE","CHROME_EVAL_RE","parts","isNative","isEval","submatch","CHROME_ANONYMOUS_FUNCTION_RE","WINJS_LINE_RE","GECKO_LINE_RE","GECKO_EVAL_RE","property","computeStackTraceFromOnErrorMessage","messageObj","column","tryToParseMessage","message","ERROR_TYPES_RE","createHandlingStack","internalFramesToSkip","formattedStack","stackTrace","toStackTraceString","formatErrorMessage","frame","func","instrumentMethod","targetPrototype","method","onPreCall","computeHandlingStack","stopped","instrumentation","postCallCallback","instrumentSetter","after","originalDescriptor","stoppedInstrumentation","instrumentationWrapper","SANITIZE_DEFAULT_MAX_CHARACTER_COUNT","JSON_PATH_ROOT_ELEMENT","KEY_DECORATION_LENGTH","sanitize","maxCharacterCount","containerQueue","visitedObjectsWithPath","sanitizedData","sanitizeProcessor","serializedSanitizedData","accumulatedCharacterCount","warnOverCharacterLimit","containerToProcess","separatorLength","targetData","parentPath","queue","sourceToSanitize","tryToApplyToJSON","sanitizePrimitivesAndFunctions","sanitizedSource","sanitizeObjects","sourceAsObject","currentPath","changeType","NO_ERROR_STACK_PRESENT_MESSAGE","computeRawError","originalError","handlingStack","startClocks","nonErrorPrefix","handling","isErrorInstance","isError","computeMessage","hasUsableStack","causes","flattenErrorCauses","type","fingerprint","tryToGetFingerprint","getFileFromStackTraceString","parentSource","currentError","ErrorSource","trackRuntimeError","errorObservable","handleRuntimeError","rawError","stopInstrumentingOnError","instrumentOnError","stopInstrumentingOnUnhandledRejection","instrumentUnhandledRejection","errorObj","reason","makePublicApi","stub","publicApi","defineGlobal","global","existingGlobalVariable","displayAlreadyInitializedError","sdkName","addEventListener","eventTarget","eventName","listener","addEventListeners","eventNames","once","capture","passive","listenerWithMonitor","event","stop","listenerTarget","add","remove","RawReportType","initReportObservable","apis","createCspViolationReportObservable","reportTypes","createReportObservable","handleReports","reports","report","buildRawReportErrorFromReport","buildRawReportErrorFromCspViolation","body","buildRawReportError","buildStack","partial","sourceFile","lineNumber","columnNumber","sendToExtension","mergeInto","destination","circularReferenceChecker","createCircularReferenceChecker","flags","merged_1","merged","deepClone","combine","sources","sources_1","set_1","has","getConnectivity","navigator","removeDuplicates","set","removeItem","index","BUFFER_LIMIT","createBoundedBuffer","drain","arg","TelemetryType","ALLOWED_FRAME_URLS","TELEMETRY_EXCLUDED_SITES","preStartTelemetryBuffer","onRawTelemetryEventCollected","startTelemetry","telemetryService","contextProvider","alreadySentEvents","telemetryEnabled","telemetryEnabledPerType","runtimeEnvInfo","getRuntimeEnvInfo","rawEvent","stringifiedEvent","event_1","toTelemetryEvent","addTelemetryError","provider","drainPreStartTelemetry","isTelemetryReplicationAllowed","addTelemetryDebug","formatError","addTelemetryConfiguration","addTelemetryUsage","usage","scrubCustomerFrames","allowedFrameUrl","END_OF_TIMES","CLEAR_OLD_VALUES_INTERVAL","createValueHistory","maxEntries","entries","clearOldValuesInterval","clearOldValues","oldTimeThreshold","startTime","endTime","entries_1","closeActive","latestEntry","findAll","reset","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","startSessionManager","trackingConsentState","sessionContextHistory","buildSessionContext","trackActivity","trackVisibility","trackResume","expandOrRenewSession","expandSessionWhenVisible","cb","isServerError","status","tryToClone","response","MAX_ONGOING_BYTES_COUNT","MAX_ONGOING_REQUESTS","MAX_QUEUE_BYTES_COUNT","MAX_BACKOFF_TIME","INITIAL_BACKOFF_TIME","sendWithRetryStrategy","state","sendStrategy","reportError","send","retryQueuedPayloads","scheduleRetry","onSuccess","onFailure","shouldRetryRequest","previousQueue","newPayloadQueue","newRetryState","newBandwidthMonitor","createHttpRequest","endpointBuilder","bytesLimit","retryState","sendStrategyForRetry","onResponse","fetchKeepAliveStrategy","sendBeaconStrategy","canUseBeacon","beaconUrl","isQueued","reportBeaconError","xhrUrl","sendXHR","hasReportedBeaconError","canUseKeepAlive","isKeepAliveSupported","fetchUrl","request","getEventBridge","eventBridgeGlobal","getEventBridgeGlobal","eventType","viewId","view","bridgeSupports","capability","bridge","canUseEventBridge","currentHost","allowedHost","PageExitReason","createPageExitObservable","stopListeners","stopBeforeUnloadListener","isPageExitReason","createBatch","encoder","flushController","messageBytesLimit","upsertBuffer","flushSubscription","flush","push","serializedMessage","estimatedMessageBytesCount","realMessageBytesCount","hasMessageFor","removedMessage","messageBytesCount","addOrUpdate","upsertMessages","isPageExit","encoderResult","formatPayloadFromEncoder","pendingMessages","createFlushController","messagesLimit","durationLimit","pageExitObservable","sessionExpireObservable","pageExitSubscription","sessionExpireSubscription","flushObservable","currentBytesCount","currentMessagesCount","flushReason","messagesCount","bytesCount","cancelDurationLimitTimeout","durationLimitTimeoutId","scheduleDurationLimitTimeout","messageBytesCountDiff","startBatchWithReplica","primary","replica","batchFactoryImp","primaryBatch","createBatchFromConfig","replicaBatch","endpoint","replicated","createIdentityEncoder","output","outputBytesCount","additionalEncodedBytesCount","AbstractLifeCycle","eventCallbacks","createEventRateLimiter","limit","onLimitReached","eventCount","allowNextEvent","xhrObservable","xhrContexts","initXhrObservable","createXhrObservable","stopInstrumentingStart","openXhr","stopInstrumentingSend","call","sendXhr","stopInstrumentingAbort","abortXhr","xhr","startContext","hasBeenReported","stopInstrumentingOnReadyStateChange","onEnd","unsubscribeLoadEndListener","completeContext","fetchObservable","initFetchObservable","createFetchObservable","beforeSend","onPostCall","input","init","methodFromParams","responsePromise","afterSend","reportFetch","partialContext","consoleObservablesByApi","initConsoleObservable","consoleObservables","createConsoleObservable","originalConsoleApi","params","buildConsoleLog","formatConsoleParameters","firstErrorParam","createContextManager","customerDataTracker","changeObservable","contextManager","newContext","CONTEXT_STORE_KEY_PREFIX","storageListeners","storeContextManager","customerDataType","storageKey","buildStorageKey","synchronizeWithStorage","dumpToStorage","getFromStorage","rawContext","CUSTOMER_DATA_BYTES_LIMIT","CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT","BYTES_COMPUTATION_THROTTLING_DELAY","createCustomerDataTrackerManager","compressionStatus","customerDataTrackers","alreadyWarned","checkCustomerDataLimit","initialBytesCount","bytesCountLimit","tracker","displayCustomerDataLimitReachedWarning","createCustomerDataTracker","newCompressionStatus","bytesCountCache","computeBytesCountThrottled","cancelComputeBytesCount","resetBytesCount","readBytesFromStream","stream","reader","chunks","readBytesCount","readMore","onDone","bytes","limitExceeded","completeBuffer_1","offset_1","chunk","SYNTHETICS_TEST_ID_COOKIE_NAME","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","getSyntheticsTestId","getSyntheticsResultId","isAuthorized","handlerType","logger","loggerHandler","sanitizedHandlerType","STATUS_PRIORITIES","StatusType","createErrorFieldFromRawError","includeMessage","__decorate","decorators","desc","c","r","d","HandlerType","STATUSES","Logger","handleLogStrategy","level","loggerContext","messageContext","sanitizedMessageContext","handler","createLoggerMethod","buildCommonContext","globalContextManager","userContextManager","DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT","validateAndBuildLogsConfiguration","baseConfiguration","forwardConsoleLogs","validateAndBuildForwardOption","forwardReports","option","allowedValues","label","serializeLogsConfiguration","baseSerializedInitConfiguration","createPreStartStrategy","getCommonContext","doStartLogs","bufferApiCalls","cachedInitConfiguration","cachedConfiguration","trackingConsentStateSubscription","tryStartLogs","startLogsResult","overrideInitConfigurationForBridge","statusType","LOGS_STORAGE_KEY","makeLogsPublicApi","startLogsImpl","customerDataTrackerManager","strategy","createPostStartStrategy","customLoggers","mainLogger","conf","sanitizedProperty","startLogsSessionManager","sessionManager","rawTrackingType","startLogsSessionManagerStub","computeTrackingType","rawSessionType","hasValidLoggerSession","logsSentBeforeRumInjectionTelemetryAdded","getRUMInternalContext","getInternalContextFromRumGlobal","rumGlobal","startLogsAssembly","lifeCycle","statusWithCustom","logRateLimiters","rawLogsEvent","savedCommonContext","domainContext","commonContext","log","LogStatusForApi","startConsoleCollection","consoleSubscription","collectedData","startReportCollection","reportSubscription","startNetworkErrorCollection","xhrSubscription","handleResponse","fetchSubscription","isRejected","computeXhrResponseData","onResponseDataAvailable","computeFetchResponseText","computeFetchErrorText","responseData","format","truncateResponseText","clonedResponse","truncateResponseStream","responseText","text","startRuntimeErrorCollection","rawErrorObservable","stopRuntimeErrorTracking","rawErrorSubscription","LifeCycle","startLoggerCollection","handleLog","logsMessage","savedDate","displayInConsole","rawLogEventData","loggerToConsoleApiName","startLogsBatch","batch","serverLogsEvent","startLogsBridge","startInternalContext","trackedSession","startReportError","startLogsTelemetry","telemetry","_f","cleanupTasks","bridge_1","telemetrySubscription_1","telemetryBatch_1","telemetrySubscription_2","task","startLogs","stopLogsTelemetry","stopLogsBatch_1","internalContext","datadogLogs"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97]}