@montonio/montonio-js 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -6
- package/dist/montonio.es.js +636 -617
- package/dist/montonio.es.js.map +1 -1
- package/dist/montonio.umd.js +7 -7
- package/dist/montonio.umd.js.map +1 -1
- package/dist/types/components/MontonioCheckout/MontonioCheckout.d.ts +8 -0
- package/dist/types/components/MontonioCheckout/types.d.ts +11 -0
- package/dist/types/index.d.ts +3 -3
- package/dist/types/services/Messaging/types.d.ts +8 -2
- package/package.json +1 -1
package/dist/montonio.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"montonio.es.js","sources":["../src/common/exceptions/exceptions.ts","../src/services/Messaging/types.ts","../src/services/Config/Config.ts","../src/services/HTTP/HTTP.ts","../src/services/Messaging/Messaging.ts","../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/objectUtils.js","../node_modules/@datadog/browser-core/esm/tools/globalObject.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/queueMicrotask.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/utils/urlPolyfill.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/polyfills.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/utils/typeUtils.js","../node_modules/@datadog/browser-core/esm/tools/matchOption.js","../node_modules/@datadog/browser-core/esm/domain/extension/extensionUtils.js","../node_modules/@datadog/browser-core/esm/domain/allowedTrackingOrigins.js","../node_modules/@datadog/browser-core/esm/domain/intakeSites.js","../node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.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/experimentalFeatures.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/jsonStringify.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/domain/tags.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/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/pageMayExitObservable.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/tools/abstractHooks.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/utils/arrayUtils.js","../node_modules/@datadog/browser-core/esm/tools/valueHistory.js","../node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","../node_modules/@datadog/browser-core/esm/domain/session/sessionManager.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/tools/boundedBuffer.js","../node_modules/@datadog/browser-core/esm/domain/context/contextUtils.js","../node_modules/@datadog/browser-core/esm/domain/context/contextManager.js","../node_modules/@datadog/browser-core/esm/domain/context/defineContextMethod.js","../node_modules/@datadog/browser-core/esm/domain/context/storeContextManager.js","../node_modules/@datadog/browser-core/esm/domain/contexts/accountContext.js","../node_modules/@datadog/browser-core/esm/domain/contexts/globalContext.js","../node_modules/@datadog/browser-core/esm/domain/contexts/userContext.js","../node_modules/@datadog/browser-core/esm/domain/context/contextConstants.js","../node_modules/@datadog/browser-core/esm/tools/readBytesFromStream.js","../node_modules/@datadog/browser-core/esm/domain/resourceUtils.js","../node_modules/@datadog/browser-core/esm/domain/bufferedData.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/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/hooks.js","../node_modules/@datadog/browser-logs/esm/domain/contexts/rumInternalContext.js","../node_modules/@datadog/browser-logs/esm/domain/contexts/sessionContext.js","../node_modules/@datadog/browser-logs/esm/domain/contexts/trackingConsentContext.js","../node_modules/@datadog/browser-logs/esm/boot/startLogs.js","../node_modules/@datadog/browser-logs/esm/entries/main.js","../src/services/Config/types.ts","../src/services/Logging/Logging.ts","../src/components/Iframe/Iframe.ts","../src/components/BaseComponent.ts","../src/utils/DOM/DOM.ts","../src/components/MontonioCheckout/types.ts","../src/utils/Validation/Validation.ts","../src/components/PaymentAuth/PaymentAuth.ts","../src/components/MontonioCheckout/MontonioCheckout.ts"],"sourcesContent":[null,null,null,null,null,"/* eslint-disable local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport const ConsoleApiName = {\n log: 'log',\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error',\n};\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport const globalConsole = console;\nexport const originalConsoleMethods = {};\nObject.keys(ConsoleApiName).forEach((name) => {\n originalConsoleMethods[name] = globalConsole[name];\n});\nconst PREFIX = 'Datadog Browser SDK:';\nexport const display = {\n debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),\n log: originalConsoleMethods.log.bind(globalConsole, PREFIX),\n info: originalConsoleMethods.info.bind(globalConsole, PREFIX),\n warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),\n error: originalConsoleMethods.error.bind(globalConsole, PREFIX),\n};\nexport const DOCS_ORIGIN = 'https://docs.datadoghq.com';\nexport const DOCS_TROUBLESHOOTING = `${DOCS_ORIGIN}/real_user_monitoring/browser/troubleshooting`;\nexport const MORE_DETAILS = 'More details:';\n//# sourceMappingURL=display.js.map","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n return (...args) => {\n try {\n return fn(...args);\n }\n catch (err) {\n display.error(errorMsg, err);\n }\n };\n}\n//# sourceMappingURL=catchUserErrors.js.map","/**\n * Return true if the draw is successful\n *\n * @param threshold - 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 const ONE_SECOND = 1000;\nexport const ONE_MINUTE = 60 * ONE_SECOND;\nexport const ONE_HOUR = 60 * ONE_MINUTE;\nexport const ONE_DAY = 24 * ONE_HOUR;\nexport const ONE_YEAR = 365 * ONE_DAY;\nexport function relativeToClocks(relative) {\n return { relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nexport function timeStampToClocks(timeStamp) {\n return { relative: getRelativeTime(timeStamp), timeStamp };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n const correctedOrigin = (dateNow() - performance.now());\n // apply correction only for positive drift\n if (correctedOrigin > getNavigationStart()) {\n return Math.round(addDuration(correctedOrigin, relativeTime));\n }\n return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n if (!isNumber(duration)) {\n return duration;\n }\n return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n // case ourselves.\n // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n return new Date().getTime();\n}\nexport function timeStampNow() {\n return dateNow();\n}\nexport function relativeNow() {\n return performance.now();\n}\nexport function clocksNow() {\n return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n return (end - start);\n}\nexport function addDuration(a, b) {\n return a + b;\n}\n// Get the time since the navigation was started.\nexport function getRelativeTime(timestamp) {\n return (timestamp - getNavigationStart());\n}\nexport function getTimeStamp(relativeTime) {\n return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nlet navigationStart;\n/**\n * Notes: this does not use `performance.timeOrigin` because:\n * - It doesn't seem to reflect the actual time on which the navigation has started: it may be much farther in the past,\n * at least in Firefox 71. (see: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926)\n * - It is not supported in Safari <15\n */\nfunction getNavigationStart() {\n var _a, _b;\n if (navigationStart === undefined) {\n // ServiceWorkers do not support navigationStart (it's deprecated), so we fallback to timeOrigin\n navigationStart = ((_b = (_a = performance.timing) === null || _a === void 0 ? void 0 : _a.navigationStart) !== null && _b !== void 0 ? _b : performance.timeOrigin);\n }\n return navigationStart;\n}\n//# sourceMappingURL=timeUtils.js.map","export const ONE_KIBI_BYTE = 1024;\nexport const ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// eslint-disable-next-line no-control-regex\nconst HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nexport function computeBytesCount(candidate) {\n // Accurate bytes count computations can degrade performances when there is a lot of events to process\n if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n return candidate.length;\n }\n if (window.TextEncoder !== undefined) {\n return new TextEncoder().encode(candidate).length;\n }\n return new Blob([candidate]).size;\n}\nexport function concatBuffers(buffers) {\n const length = buffers.reduce((total, buffer) => total + buffer.length, 0);\n const result = new Uint8Array(length);\n let offset = 0;\n for (const buffer of buffers) {\n result.set(buffer, offset);\n offset += buffer.length;\n }\n return result;\n}\n//# sourceMappingURL=byteUtils.js.map","export function shallowClone(object) {\n return { ...object };\n}\nexport function objectHasValue(object, value) {\n return Object.keys(object).some((key) => object[key] === value);\n}\nexport function isEmptyObject(object) {\n return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n const newObject = {};\n for (const key of Object.keys(object)) {\n newObject[key] = fn(object[key]);\n }\n return newObject;\n}\n//# sourceMappingURL=objectUtils.js.map","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n Object.defineProperty(Object.prototype, '_dd_temp_', {\n get() {\n return this;\n },\n configurable: true,\n });\n // @ts-ignore _dd_temp is defined using defineProperty\n let globalObject = _dd_temp_;\n // @ts-ignore _dd_temp is defined using defineProperty\n delete Object.prototype._dd_temp_;\n if (typeof globalObject !== 'object') {\n // on safari _dd_temp_ is available on window but not globally\n // fallback on other browser globals check\n if (typeof self === 'object') {\n globalObject = self;\n }\n else if (typeof window === 'object') {\n globalObject = window;\n }\n else {\n globalObject = {};\n }\n }\n return globalObject;\n}\n/**\n * Cached reference to the global object so it can be imported and re-used without\n * re-evaluating the heavyweight fallback logic in `getGlobalObject()`.\n */\n// eslint-disable-next-line local-rules/disallow-side-effects\nexport const globalObject = getGlobalObject();\nexport const isWorkerEnvironment = 'WorkerGlobalScope' in globalObject;\n//# sourceMappingURL=globalObject.js.map","import { getGlobalObject } from './globalObject';\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue(target, name) {\n const browserWindow = getGlobalObject();\n let original;\n if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n original = target[browserWindow.Zone.__symbol__(name)];\n }\n if (!original) {\n original = target[name];\n }\n return original;\n}\n//# sourceMappingURL=getZoneJsOriginalValue.js.map","import { display } from './display';\nlet onMonitorErrorCollected;\nlet debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n onMonitorErrorCollected = undefined;\n debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args) {\n const decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n return decorated.apply(this, args);\n };\n}\nexport function monitor(fn) {\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return callMonitored(fn, this, arguments);\n }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return fn.apply(context, args);\n }\n catch (e) {\n monitorError(e);\n }\n}\nexport function monitorError(e) {\n displayIfDebugEnabled(e);\n if (onMonitorErrorCollected) {\n try {\n onMonitorErrorCollected(e);\n }\n catch (e) {\n displayIfDebugEnabled(e);\n }\n }\n}\nexport function displayIfDebugEnabled(...args) {\n if (debugMode) {\n display.error('[MONITOR]', ...args);\n }\n}\n//# sourceMappingURL=monitor.js.map","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue';\nimport { monitor } from './monitor';\nimport { getGlobalObject } from './globalObject';\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","import { monitor } from './monitor';\nimport { globalObject } from './globalObject';\nexport function queueMicrotask(callback) {\n var _a;\n const nativeImplementation = (_a = globalObject.queueMicrotask) === null || _a === void 0 ? void 0 : _a.bind(globalObject);\n if (typeof nativeImplementation === 'function') {\n nativeImplementation(monitor(callback));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- the callback is monitored, so it'll never throw\n Promise.resolve().then(monitor(callback));\n }\n}\n//# sourceMappingURL=queueMicrotask.js.map","import { queueMicrotask } from './queueMicrotask';\n// eslint-disable-next-line no-restricted-syntax\nexport class Observable {\n constructor(onFirstSubscribe) {\n this.onFirstSubscribe = onFirstSubscribe;\n this.observers = [];\n }\n subscribe(observer) {\n this.addObserver(observer);\n return {\n unsubscribe: () => this.removeObserver(observer),\n };\n }\n notify(data) {\n this.observers.forEach((observer) => observer(data));\n }\n addObserver(observer) {\n this.observers.push(observer);\n if (this.observers.length === 1 && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined;\n }\n }\n removeObserver(observer) {\n this.observers = this.observers.filter((other) => observer !== other);\n if (!this.observers.length && this.onLastUnsubscribe) {\n this.onLastUnsubscribe();\n }\n }\n}\nexport function mergeObservables(...observables) {\n return new Observable((globalObservable) => {\n const subscriptions = observables.map((observable) => observable.subscribe((data) => globalObservable.notify(data)));\n return () => subscriptions.forEach((subscription) => subscription.unsubscribe());\n });\n}\n// eslint-disable-next-line no-restricted-syntax\nexport class BufferedObservable extends Observable {\n constructor(maxBufferSize) {\n super();\n this.maxBufferSize = maxBufferSize;\n this.buffer = [];\n }\n notify(data) {\n this.buffer.push(data);\n if (this.buffer.length > this.maxBufferSize) {\n this.buffer.shift();\n }\n super.notify(data);\n }\n subscribe(observer) {\n let closed = false;\n const subscription = {\n unsubscribe: () => {\n closed = true;\n this.removeObserver(observer);\n },\n };\n queueMicrotask(() => {\n for (const data of this.buffer) {\n if (closed) {\n return;\n }\n observer(data);\n }\n if (!closed) {\n this.addObserver(observer);\n }\n });\n return subscription;\n }\n /**\n * Drop buffered data and don't buffer future data. This is to avoid leaking memory when it's not\n * needed anymore. This can be seen as a performance optimization, and things will work probably\n * even if this method isn't called, but still useful to clarify our intent and lowering our\n * memory impact.\n */\n unbuffer() {\n queueMicrotask(() => {\n this.maxBufferSize = this.buffer.length = 0;\n });\n }\n}\n//# sourceMappingURL=observable.js.map","import { setTimeout, clearTimeout } from '../timer';\n// use lodash API\nexport function throttle(fn, wait, options) {\n const needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n const needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n let inWaitPeriod = false;\n let pendingExecutionWithParameters;\n let pendingTimeoutId;\n return {\n throttled: (...parameters) => {\n if (inWaitPeriod) {\n pendingExecutionWithParameters = parameters;\n return;\n }\n if (needLeadingExecution) {\n fn(...parameters);\n }\n else {\n pendingExecutionWithParameters = parameters;\n }\n inWaitPeriod = true;\n pendingTimeoutId = setTimeout(() => {\n if (needTrailingExecution && pendingExecutionWithParameters) {\n fn(...pendingExecutionWithParameters);\n }\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n }, wait);\n },\n cancel: () => {\n clearTimeout(pendingTimeoutId);\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n },\n };\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n//# sourceMappingURL=functionUtils.js.map","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n return placeholder\n ? // eslint-disable-next-line no-bitwise\n (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n : `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, generateUUID);\n}\nconst COMMA_SEPARATED_KEY_VALUE = /([\\w-]+)\\s*=\\s*([^;]+)/g;\nexport function findCommaSeparatedValue(rawString, name) {\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n if (match[1] === name) {\n return match[2];\n }\n }\n else {\n break;\n }\n }\n}\nexport function findCommaSeparatedValues(rawString) {\n const result = new Map();\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n result.set(match[1], match[2]);\n }\n else {\n break;\n }\n }\n return result;\n}\nexport function safeTruncate(candidate, length, suffix = '') {\n const lastChar = candidate.charCodeAt(length - 1);\n const isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n const correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n if (candidate.length <= correctedLength) {\n return candidate;\n }\n return `${candidate.slice(0, correctedLength)}${suffix}`;\n}\n//# sourceMappingURL=stringUtils.js.map","export function isChromium() {\n return detectBrowserCached() === 0 /* Browser.CHROMIUM */;\n}\nexport function isSafari() {\n return detectBrowserCached() === 1 /* Browser.SAFARI */;\n}\nlet browserCache;\nfunction detectBrowserCached() {\n return browserCache !== null && browserCache !== void 0 ? browserCache : (browserCache = detectBrowser());\n}\n// Exported only for tests\nexport function detectBrowser(browserWindow = window) {\n var _a;\n const userAgent = browserWindow.navigator.userAgent;\n if (browserWindow.chrome || /HeadlessChrome/.test(userAgent)) {\n return 0 /* Browser.CHROMIUM */;\n }\n if (\n // navigator.vendor is deprecated, but it is the most resilient way we found to detect\n // \"Apple maintained browsers\" (AKA Safari). If one day it gets removed, we still have the\n // useragent test as a semi-working fallback.\n ((_a = browserWindow.navigator.vendor) === null || _a === void 0 ? void 0 : _a.indexOf('Apple')) === 0 ||\n (/safari/i.test(userAgent) && !/chrome|android/i.test(userAgent))) {\n return 1 /* Browser.SAFARI */;\n }\n return 2 /* Browser.OTHER */;\n}\n//# sourceMappingURL=browserDetection.js.map","import { globalObject } from '../globalObject';\nexport function normalizeUrl(url) {\n return buildUrl(url, location.href).href;\n}\nexport function isValidUrl(url) {\n try {\n return !!buildUrl(url);\n }\n catch (_a) {\n return false;\n }\n}\nexport function getPathName(url) {\n const pathname = buildUrl(url).pathname;\n return pathname[0] === '/' ? pathname : `/${pathname}`;\n}\nexport function buildUrl(url, base) {\n const { URL } = getPristineWindow();\n try {\n return base !== undefined ? new URL(url, base) : new URL(url);\n }\n catch (error) {\n throw new Error(`Failed to construct URL: ${String(error)}`);\n }\n}\n/**\n * Get native URL constructor from a clean iframe\n * This avoids polyfill issues by getting the native implementation from a fresh iframe context\n * Falls back to the original URL constructor if iframe approach fails\n */\nlet getPristineGlobalObjectCache;\nexport function getPristineWindow() {\n if (!getPristineGlobalObjectCache) {\n let iframe;\n let pristineWindow;\n try {\n iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n pristineWindow = iframe.contentWindow;\n }\n catch (_a) {\n pristineWindow = globalObject;\n }\n getPristineGlobalObjectCache = {\n URL: pristineWindow.URL,\n };\n iframe === null || iframe === void 0 ? void 0 : iframe.remove();\n }\n return getPristineGlobalObjectCache;\n}\n//# sourceMappingURL=urlPolyfill.js.map","import { display } from '../tools/display';\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { findCommaSeparatedValue, findCommaSeparatedValues, generateUUID } from '../tools/utils/stringUtils';\nimport { buildUrl } from '../tools/utils/urlPolyfill';\nexport function setCookie(name, value, expireDelay = 0, options) {\n const date = new Date();\n date.setTime(date.getTime() + expireDelay);\n const expires = `expires=${date.toUTCString()}`;\n const sameSite = options && options.crossSite ? 'none' : 'strict';\n const domain = options && options.domain ? `;domain=${options.domain}` : '';\n const secure = options && options.secure ? ';secure' : '';\n const partitioned = options && options.partitioned ? ';partitioned' : '';\n document.cookie = `${name}=${value};${expires};path=/;samesite=${sameSite}${domain}${secure}${partitioned}`;\n}\nexport function getCookie(name) {\n return findCommaSeparatedValue(document.cookie, name);\n}\nlet initCookieParsed;\n/**\n * Returns a cached value of the cookie. Use this during SDK initialization (and whenever possible)\n * to avoid accessing document.cookie multiple times.\n */\nexport function getInitCookie(name) {\n if (!initCookieParsed) {\n initCookieParsed = findCommaSeparatedValues(document.cookie);\n }\n return initCookieParsed.get(name);\n}\nexport function resetInitCookies() {\n initCookieParsed = undefined;\n}\nexport function deleteCookie(name, options) {\n setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n if (document.cookie === undefined || document.cookie === null) {\n return false;\n }\n try {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n const testCookieName = `dd_cookie_test_${generateUUID()}`;\n const testCookieValue = 'test';\n setCookie(testCookieName, testCookieValue, ONE_MINUTE, options);\n const isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n deleteCookie(testCookieName, options);\n return isCookieCorrectlySet;\n }\n catch (error) {\n display.error(error);\n return false;\n }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nlet getCurrentSiteCache;\nexport function getCurrentSite(hostname = location.hostname, referrer = document.referrer) {\n if (getCurrentSiteCache === undefined) {\n const defaultHostName = getCookieDefaultHostName(hostname, referrer);\n if (defaultHostName) {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n const testCookieName = `dd_site_test_${generateUUID()}`;\n const testCookieValue = 'test';\n const domainLevels = defaultHostName.split('.');\n let candidateDomain = domainLevels.pop();\n while (domainLevels.length && !getCookie(testCookieName)) {\n candidateDomain = `${domainLevels.pop()}.${candidateDomain}`;\n setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain });\n }\n deleteCookie(testCookieName, { domain: candidateDomain });\n getCurrentSiteCache = candidateDomain;\n }\n }\n return getCurrentSiteCache;\n}\nfunction getCookieDefaultHostName(hostname, referrer) {\n try {\n return hostname || buildUrl(referrer).hostname;\n }\n catch (_a) {\n // Ignore\n }\n}\nexport function resetGetCurrentSite() {\n getCurrentSiteCache = undefined;\n}\n//# sourceMappingURL=cookie.js.map","export const SESSION_STORE_KEY = '_dd_s';\n//# sourceMappingURL=sessionStoreStrategy.js.map","export function findLast(array, predicate) {\n for (let i = array.length - 1; i >= 0; i -= 1) {\n const item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n return undefined;\n}\n// Keep the following wrapper functions as it can be mangled and will result in smaller bundle size that using\n// the native Object.values and Object.entries directly\nexport function objectValues(object) {\n return Object.values(object);\n}\nexport function objectEntries(object) {\n return Object.entries(object);\n}\n//# sourceMappingURL=polyfills.js.map","import { ONE_HOUR, ONE_MINUTE, ONE_YEAR } from '../../tools/utils/timeUtils';\nexport const SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport const SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;\nexport const SESSION_COOKIE_EXPIRATION_DELAY = ONE_YEAR;\nexport const SESSION_NOT_TRACKED = '0';\n/**\n * @internal\n */\nexport const SessionPersistence = {\n COOKIE: 'cookie',\n LOCAL_STORAGE: 'local-storage',\n};\n//# sourceMappingURL=sessionConstants.js.map","export const SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/;\nexport const SESSION_ENTRY_SEPARATOR = '&';\nexport function isValidSessionString(sessionString) {\n return (!!sessionString &&\n (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));\n}\n//# sourceMappingURL=sessionStateValidation.js.map","import { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { objectEntries } from '../../tools/utils/polyfills';\nimport { dateNow } from '../../tools/utils/timeUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { isValidSessionString, SESSION_ENTRY_REGEXP, SESSION_ENTRY_SEPARATOR } from './sessionStateValidation';\nexport const EXPIRED = '1';\nexport function getExpiredSessionState(previousSessionState, configuration) {\n const expiredSessionState = {\n isExpired: EXPIRED,\n };\n if (configuration.trackAnonymousUser) {\n if (previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId) {\n expiredSessionState.anonymousId = previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId;\n }\n else {\n expiredSessionState.anonymousId = generateUUID();\n }\n }\n return expiredSessionState;\n}\nexport function isSessionInNotStartedState(session) {\n return isEmptyObject(session);\n}\nexport function isSessionStarted(session) {\n return !isSessionInNotStartedState(session);\n}\nexport function isSessionInExpiredState(session) {\n return session.isExpired !== undefined || !isActiveSession(session);\n}\n// An active session is a session in either `Tracked` or `NotTracked` state\nfunction isActiveSession(sessionState) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return ((sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&\n (sessionState.expire === undefined || dateNow() < Number(sessionState.expire)));\n}\nexport function expandSessionState(session) {\n session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);\n}\nexport function toSessionString(session) {\n return (objectEntries(session)\n // we use `aid` as a key for anonymousId\n .map(([key, value]) => (key === 'anonymousId' ? `aid=${value}` : `${key}=${value}`))\n .join(SESSION_ENTRY_SEPARATOR));\n}\nexport function toSessionState(sessionString) {\n const session = {};\n if (isValidSessionString(sessionString)) {\n sessionString.split(SESSION_ENTRY_SEPARATOR).forEach((entry) => {\n const matches = SESSION_ENTRY_REGEXP.exec(entry);\n if (matches !== null) {\n const [, key, value] = matches;\n if (key === 'aid') {\n // we use `aid` as a key for anonymousId\n session.anonymousId = value;\n }\n else {\n session[key] = value;\n }\n }\n });\n }\n return session;\n}\n//# sourceMappingURL=sessionState.js.map","import { getInitCookie } from '../../browser/cookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nimport { expandSessionState, isSessionStarted } from './sessionState';\nexport const OLD_SESSION_COOKIE_NAME = '_dd';\nexport const OLD_RUM_COOKIE_NAME = '_dd_r';\nexport const OLD_LOGS_COOKIE_NAME = '_dd_l';\n// duplicate values to avoid dependency issues\nexport const RUM_SESSION_KEY = 'rum';\nexport const LOGS_SESSION_KEY = 'logs';\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(cookieStoreStrategy) {\n const sessionString = getInitCookie(SESSION_STORE_KEY);\n if (!sessionString) {\n const oldSessionId = getInitCookie(OLD_SESSION_COOKIE_NAME);\n const oldRumType = getInitCookie(OLD_RUM_COOKIE_NAME);\n const oldLogsType = getInitCookie(OLD_LOGS_COOKIE_NAME);\n const session = {};\n if (oldSessionId) {\n session.id = oldSessionId;\n }\n if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n session[LOGS_SESSION_KEY] = oldLogsType;\n }\n if (oldRumType && /^[012]$/.test(oldRumType)) {\n session[RUM_SESSION_KEY] = oldRumType;\n }\n if (isSessionStarted(session)) {\n expandSessionState(session);\n cookieStoreStrategy.persistSession(session);\n }\n }\n}\n//# sourceMappingURL=oldCookiesMigration.js.map","import { isChromium } from '../../../tools/utils/browserDetection';\nimport { getCurrentSite, areCookiesAuthorized, getCookie, setCookie } from '../../../browser/cookie';\nimport { tryOldCookiesMigration } from '../oldCookiesMigration';\nimport { SESSION_COOKIE_EXPIRATION_DELAY, SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY, SessionPersistence, } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nexport function selectCookieStrategy(initConfiguration) {\n const cookieOptions = buildCookieOptions(initConfiguration);\n return cookieOptions && areCookiesAuthorized(cookieOptions)\n ? { type: SessionPersistence.COOKIE, cookieOptions }\n : undefined;\n}\nexport function initCookieStrategy(configuration, cookieOptions) {\n const cookieStore = {\n /**\n * Lock strategy allows mitigating issues due to concurrent access to cookie.\n * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.\n */\n isLockEnabled: isChromium(),\n persistSession: (sessionState) => storeSessionCookie(cookieOptions, configuration, sessionState, SESSION_EXPIRATION_DELAY),\n retrieveSession: retrieveSessionCookie,\n expireSession: (sessionState) => storeSessionCookie(cookieOptions, configuration, getExpiredSessionState(sessionState, configuration), SESSION_TIME_OUT_DELAY),\n };\n tryOldCookiesMigration(cookieStore);\n return cookieStore;\n}\nfunction storeSessionCookie(options, configuration, sessionState, defaultTimeout) {\n setCookie(SESSION_STORE_KEY, toSessionString(sessionState), configuration.trackAnonymousUser ? SESSION_COOKIE_EXPIRATION_DELAY : defaultTimeout, options);\n}\nexport function retrieveSessionCookie() {\n const sessionString = getCookie(SESSION_STORE_KEY);\n const sessionState = toSessionState(sessionString);\n return sessionState;\n}\nexport function buildCookieOptions(initConfiguration) {\n const cookieOptions = {};\n cookieOptions.secure =\n !!initConfiguration.useSecureSessionCookie || !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n cookieOptions.crossSite = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n if (initConfiguration.trackSessionAcrossSubdomains) {\n const currentSite = getCurrentSite();\n if (!currentSite) {\n return;\n }\n cookieOptions.domain = currentSite;\n }\n return cookieOptions;\n}\n//# sourceMappingURL=sessionInCookie.js.map","import { generateUUID } from '../../../tools/utils/stringUtils';\nimport { SessionPersistence } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nconst LOCAL_STORAGE_TEST_KEY = '_dd_test_';\nexport function selectLocalStorageStrategy() {\n try {\n const id = generateUUID();\n const testKey = `${LOCAL_STORAGE_TEST_KEY}${id}`;\n localStorage.setItem(testKey, id);\n const retrievedId = localStorage.getItem(testKey);\n localStorage.removeItem(testKey);\n return id === retrievedId ? { type: SessionPersistence.LOCAL_STORAGE } : undefined;\n }\n catch (_a) {\n return undefined;\n }\n}\nexport function initLocalStorageStrategy(configuration) {\n return {\n isLockEnabled: false,\n persistSession: persistInLocalStorage,\n retrieveSession: retrieveSessionFromLocalStorage,\n expireSession: (sessionState) => expireSessionFromLocalStorage(sessionState, configuration),\n };\n}\nfunction persistInLocalStorage(sessionState) {\n localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState));\n}\nfunction retrieveSessionFromLocalStorage() {\n const sessionString = localStorage.getItem(SESSION_STORE_KEY);\n return toSessionState(sessionString);\n}\nfunction expireSessionFromLocalStorage(previousSessionState, configuration) {\n persistInLocalStorage(getExpiredSessionState(previousSessionState, configuration));\n}\n//# sourceMappingURL=sessionInLocalStorage.js.map","import { setTimeout } from '../../tools/timer';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { elapsed, ONE_SECOND, timeStampNow } from '../../tools/utils/timeUtils';\nimport { expandSessionState, isSessionInExpiredState } from './sessionState';\nexport const LOCK_RETRY_DELAY = 10;\nexport const LOCK_MAX_TRIES = 100;\n// Locks should be hold for a few milliseconds top, just the time it takes to read and write a\n// cookie. Using one second should be enough in most situations.\nexport const LOCK_EXPIRATION_DELAY = ONE_SECOND;\nconst LOCK_SEPARATOR = '--';\nconst bufferedOperations = [];\nlet ongoingOperations;\nexport function processSessionStoreOperations(operations, sessionStoreStrategy, numberOfRetries = 0) {\n var _a;\n const { isLockEnabled, persistSession, expireSession } = sessionStoreStrategy;\n const persistWithLock = (session) => persistSession({ ...session, lock: currentLock });\n const retrieveStore = () => {\n const { lock, ...session } = sessionStoreStrategy.retrieveSession();\n return {\n session,\n lock: lock && !isLockExpired(lock) ? lock : undefined,\n };\n };\n if (!ongoingOperations) {\n ongoingOperations = operations;\n }\n if (operations !== ongoingOperations) {\n bufferedOperations.push(operations);\n return;\n }\n if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {\n next(sessionStoreStrategy);\n return;\n }\n let currentLock;\n let currentStore = retrieveStore();\n if (isLockEnabled) {\n // if someone has lock, retry later\n if (currentStore.lock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n // acquire lock\n currentLock = createLock();\n persistWithLock(currentStore.session);\n // if lock is not acquired, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n let processedSession = operations.process(currentStore.session);\n if (isLockEnabled) {\n // if lock corrupted after process, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n if (processedSession) {\n if (isSessionInExpiredState(processedSession)) {\n expireSession(processedSession);\n }\n else {\n expandSessionState(processedSession);\n if (isLockEnabled) {\n persistWithLock(processedSession);\n }\n else {\n persistSession(processedSession);\n }\n }\n }\n if (isLockEnabled) {\n // correctly handle lock around expiration would require to handle this case properly at several levels\n // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n if (!(processedSession && isSessionInExpiredState(processedSession))) {\n // if lock corrupted after persist, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n persistSession(currentStore.session);\n processedSession = currentStore.session;\n }\n }\n // call after even if session is not persisted in order to perform operations on\n // up-to-date session state value => the value could have been modified by another tab\n (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentStore.session);\n next(sessionStoreStrategy);\n}\nfunction retryLater(operations, sessionStore, currentNumberOfRetries) {\n setTimeout(() => {\n processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1);\n }, LOCK_RETRY_DELAY);\n}\nfunction next(sessionStore) {\n ongoingOperations = undefined;\n const nextOperations = bufferedOperations.shift();\n if (nextOperations) {\n processSessionStoreOperations(nextOperations, sessionStore);\n }\n}\nexport function createLock() {\n return generateUUID() + LOCK_SEPARATOR + timeStampNow();\n}\nfunction isLockExpired(lock) {\n const [, timeStamp] = lock.split(LOCK_SEPARATOR);\n return !timeStamp || elapsed(Number(timeStamp), timeStampNow()) > LOCK_EXPIRATION_DELAY;\n}\n//# sourceMappingURL=sessionStoreOperations.js.map","import { clearInterval, setInterval } from '../../tools/timer';\nimport { Observable } from '../../tools/observable';\nimport { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { display } from '../../tools/display';\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie';\nimport { getExpiredSessionState, isSessionInExpiredState, isSessionInNotStartedState, isSessionStarted, } from './sessionState';\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage';\nimport { processSessionStoreOperations } from './sessionStoreOperations';\nimport { SESSION_NOT_TRACKED, SessionPersistence } from './sessionConstants';\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport const STORAGE_POLL_DELAY = ONE_SECOND;\n/**\n * Selects the correct session store strategy type based on the configuration and storage\n * availability.\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n switch (initConfiguration.sessionPersistence) {\n case SessionPersistence.COOKIE:\n return selectCookieStrategy(initConfiguration);\n case SessionPersistence.LOCAL_STORAGE:\n return selectLocalStorageStrategy();\n case undefined: {\n let sessionStoreStrategyType = selectCookieStrategy(initConfiguration);\n if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n sessionStoreStrategyType = selectLocalStorageStrategy();\n }\n return sessionStoreStrategyType;\n }\n default:\n display.error(`Invalid session persistence '${String(initConfiguration.sessionPersistence)}'`);\n }\n}\nexport function getSessionStoreStrategy(sessionStoreStrategyType, configuration) {\n return sessionStoreStrategyType.type === SessionPersistence.COOKIE\n ? initCookieStrategy(configuration, sessionStoreStrategyType.cookieOptions)\n : initLocalStorageStrategy(configuration);\n}\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(sessionStoreStrategyType, configuration, productKey, computeTrackingType, sessionStoreStrategy = getSessionStoreStrategy(sessionStoreStrategyType, configuration)) {\n const renewObservable = new Observable();\n const expireObservable = new Observable();\n const sessionStateUpdateObservable = new Observable();\n const watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);\n let sessionCache;\n startSession();\n const { throttled: throttledExpandOrRenewSession, cancel: cancelExpandOrRenewSession } = throttle(() => {\n processSessionStoreOperations({\n process: (sessionState) => {\n if (isSessionInNotStartedState(sessionState)) {\n return;\n }\n const synchronizedSession = synchronizeSession(sessionState);\n expandOrRenewSessionState(synchronizedSession);\n return synchronizedSession;\n },\n after: (sessionState) => {\n if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n renewSessionInCache(sessionState);\n }\n sessionCache = sessionState;\n },\n }, sessionStoreStrategy);\n }, STORAGE_POLL_DELAY);\n function expandSession() {\n processSessionStoreOperations({\n process: (sessionState) => (hasSessionInCache() ? synchronizeSession(sessionState) : undefined),\n }, sessionStoreStrategy);\n }\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session store\n * - if the session is not active, clear the session store and expire the session cache\n */\n function watchSession() {\n const sessionState = sessionStoreStrategy.retrieveSession();\n if (isSessionInExpiredState(sessionState)) {\n processSessionStoreOperations({\n process: (sessionState) => isSessionInExpiredState(sessionState) ? getExpiredSessionState(sessionState, configuration) : undefined,\n after: synchronizeSession,\n }, sessionStoreStrategy);\n }\n else {\n synchronizeSession(sessionState);\n }\n }\n function synchronizeSession(sessionState) {\n if (isSessionInExpiredState(sessionState)) {\n sessionState = getExpiredSessionState(sessionState, configuration);\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache();\n }\n else {\n sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState });\n sessionCache = sessionState;\n }\n }\n return sessionState;\n }\n function startSession() {\n processSessionStoreOperations({\n process: (sessionState) => {\n if (isSessionInNotStartedState(sessionState)) {\n return getExpiredSessionState(sessionState, configuration);\n }\n },\n after: (sessionState) => {\n sessionCache = sessionState;\n },\n }, sessionStoreStrategy);\n }\n function expandOrRenewSessionState(sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return false;\n }\n const trackingType = computeTrackingType(sessionState[productKey]);\n sessionState[productKey] = trackingType;\n delete sessionState.isExpired;\n if (trackingType !== SESSION_NOT_TRACKED && !sessionState.id) {\n sessionState.id = generateUUID();\n sessionState.created = String(dateNow());\n }\n }\n function hasSessionInCache() {\n return (sessionCache === null || sessionCache === void 0 ? void 0 : sessionCache[productKey]) !== undefined;\n }\n function isSessionInCacheOutdated(sessionState) {\n return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey];\n }\n function expireSessionInCache() {\n sessionCache = getExpiredSessionState(sessionCache, configuration);\n expireObservable.notify();\n }\n function renewSessionInCache(sessionState) {\n sessionCache = sessionState;\n renewObservable.notify();\n }\n function updateSessionState(partialSessionState) {\n processSessionStoreOperations({\n process: (sessionState) => ({ ...sessionState, ...partialSessionState }),\n after: synchronizeSession,\n }, sessionStoreStrategy);\n }\n return {\n expandOrRenewSession: throttledExpandOrRenewSession,\n expandSession,\n getSession: () => sessionCache,\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable,\n restartSession: startSession,\n expire: () => {\n cancelExpandOrRenewSession();\n sessionStoreStrategy.expireSession(sessionCache);\n synchronizeSession(getExpiredSessionState(sessionCache, configuration));\n },\n stop: () => {\n clearInterval(watchSessionTimeoutId);\n },\n updateSessionState,\n };\n}\n//# sourceMappingURL=sessionStore.js.map","import { Observable } from '../tools/observable';\nexport const TrackingConsent = {\n GRANTED: 'granted',\n NOT_GRANTED: 'not-granted',\n};\nexport function createTrackingConsentState(currentConsent) {\n const observable = new Observable();\n return {\n tryToInit(trackingConsent) {\n if (!currentConsent) {\n currentConsent = trackingConsent;\n }\n },\n update(trackingConsent) {\n currentConsent = trackingConsent;\n observable.notify();\n },\n isGranted() {\n return currentConsent === TrackingConsent.GRANTED;\n },\n observable,\n };\n}\n//# sourceMappingURL=trackingConsent.js.map","/**\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 './display';\nimport { getType } from './utils/typeUtils';\nexport function isMatchOption(item) {\n const itemType = getType(item);\n return itemType === 'string' || itemType === 'function' || item instanceof RegExp;\n}\n/**\n * Returns true if value can be matched by at least one of the provided MatchOptions.\n * When comparing strings, setting useStartsWith to true will compare the value with the start of\n * the option, instead of requiring an exact match.\n */\nexport function matchList(list, value, useStartsWith = false) {\n return list.some((item) => {\n try {\n if (typeof item === 'function') {\n return item(value);\n }\n else if (item instanceof RegExp) {\n return item.test(value);\n }\n else if (typeof item === 'string') {\n return useStartsWith ? value.startsWith(item) : item === value;\n }\n }\n catch (e) {\n display.error(e);\n }\n return false;\n });\n}\n//# sourceMappingURL=matchOption.js.map","export const EXTENSION_PREFIXES = ['chrome-extension://', 'moz-extension://'];\nexport function containsExtensionUrl(str) {\n return EXTENSION_PREFIXES.some((prefix) => str.includes(prefix));\n}\n/**\n * Utility function to detect if the SDK is being initialized in an unsupported browser extension environment.\n *\n * @param windowLocation - The current window location to check\n * @param stack - The error stack to check for extension URLs\n * @returns true if running in an unsupported browser extension environment\n */\nexport function isUnsupportedExtensionEnvironment(windowLocation, stack = '') {\n // If the page itself is an extension page.\n if (containsExtensionUrl(windowLocation)) {\n return false;\n }\n // Since we generate the error on the init, we check the 2nd frame line.\n const frameLines = stack.split('\\n').filter((line) => {\n const trimmedLine = line.trim();\n return trimmedLine.length && /^at\\s+|@/.test(trimmedLine);\n });\n const target = frameLines[1] || '';\n return containsExtensionUrl(target);\n}\n//# sourceMappingURL=extensionUtils.js.map","import { display } from '../tools/display';\nimport { matchList } from '../tools/matchOption';\nimport { isUnsupportedExtensionEnvironment } from './extension/extensionUtils';\nexport const ERROR_DOES_NOT_HAVE_ALLOWED_TRACKING_ORIGIN = 'Running the Browser SDK in a Web extension content script is forbidden unless the `allowedTrackingOrigins` option is provided.';\nexport const ERROR_NOT_ALLOWED_TRACKING_ORIGIN = 'SDK initialized on a non-allowed domain.';\nexport function isAllowedTrackingOrigins(configuration, errorStack, windowOrigin = typeof location !== 'undefined' ? location.origin : '') {\n const allowedTrackingOrigins = configuration.allowedTrackingOrigins;\n if (!allowedTrackingOrigins) {\n if (isUnsupportedExtensionEnvironment(windowOrigin, errorStack)) {\n display.error(ERROR_DOES_NOT_HAVE_ALLOWED_TRACKING_ORIGIN);\n return false;\n }\n return true;\n }\n const isAllowed = matchList(allowedTrackingOrigins, windowOrigin);\n if (!isAllowed) {\n display.error(ERROR_NOT_ALLOWED_TRACKING_ORIGIN);\n }\n return isAllowed;\n}\n//# sourceMappingURL=allowedTrackingOrigins.js.map","export const INTAKE_SITE_STAGING = 'datad0g.com';\nexport const INTAKE_SITE_FED_STAGING = 'dd0g-gov.com';\nexport const INTAKE_SITE_US1 = 'datadoghq.com';\nexport const INTAKE_SITE_EU1 = 'datadoghq.eu';\nexport const INTAKE_SITE_US1_FED = 'ddog-gov.com';\nexport const PCI_INTAKE_HOST_US1 = 'pci.browser-intake-datadoghq.com';\nexport const INTAKE_URL_PARAMETERS = ['ddsource', 'dd-api-key', 'dd-request-id'];\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_FED_STAGING, INTAKE_SITE_US1, PCI_INTAKE_HOST_US1 } from '../intakeSites';\nexport function createEndpointBuilder(initConfiguration, trackType, extraParameters) {\n const buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType);\n return {\n build(api, payload) {\n const parameters = buildEndpointParameters(initConfiguration, trackType, api, payload, extraParameters);\n return buildUrlWithParameters(parameters);\n },\n trackType,\n };\n}\n/**\n * Create a function used to build a full endpoint url from provided parameters. The goal of this\n * function is to pre-compute some parts of the URL to avoid re-computing everything on every\n * request, as only parameters are changing.\n */\nfunction createEndpointUrlWithParametersBuilder(initConfiguration, trackType) {\n const path = `/api/v2/${trackType}`;\n const proxy = initConfiguration.proxy;\n if (typeof proxy === 'string') {\n const normalizedProxyUrl = normalizeUrl(proxy);\n return (parameters) => `${normalizedProxyUrl}?ddforward=${encodeURIComponent(`${path}?${parameters}`)}`;\n }\n if (typeof proxy === 'function') {\n return (parameters) => proxy({ path, parameters });\n }\n const host = buildEndpointHost(trackType, initConfiguration);\n return (parameters) => `https://${host}${path}?${parameters}`;\n}\nexport function buildEndpointHost(trackType, initConfiguration) {\n const { site = INTAKE_SITE_US1, internalAnalyticsSubdomain } = initConfiguration;\n if (trackType === 'logs' && initConfiguration.usePciIntake && site === INTAKE_SITE_US1) {\n return PCI_INTAKE_HOST_US1;\n }\n if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n return `${internalAnalyticsSubdomain}.${INTAKE_SITE_US1}`;\n }\n if (site === INTAKE_SITE_FED_STAGING) {\n return `http-intake.logs.${site}`;\n }\n const domainParts = site.split('.');\n const extension = domainParts.pop();\n return `browser-intake-${domainParts.join('-')}.${extension}`;\n}\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters({ clientToken, internalAnalyticsSubdomain, source = 'browser' }, trackType, api, { retry, encoding }, extraParameters = []) {\n const parameters = [\n `ddsource=${source}`,\n `dd-api-key=${clientToken}`,\n `dd-evp-origin-version=${encodeURIComponent(\"6.22.0\")}`,\n 'dd-evp-origin=browser',\n `dd-request-id=${generateUUID()}`,\n ].concat(extraParameters);\n if (encoding) {\n parameters.push(`dd-evp-encoding=${encoding}`);\n }\n if (trackType === 'rum') {\n parameters.push(`batch_time=${timeStampNow()}`, `_dd.api=${api}`);\n if (retry) {\n parameters.push(`_dd.retry_count=${retry.count}`, `_dd.retry_after=${retry.lastFailureStatus}`);\n }\n }\n if (internalAnalyticsSubdomain) {\n parameters.reverse();\n }\n return parameters.join('&');\n}\n//# sourceMappingURL=endpointBuilder.js.map","import { INTAKE_SITE_US1, INTAKE_URL_PARAMETERS } from '../intakeSites';\nimport { createEndpointBuilder } from './endpointBuilder';\nexport function computeTransportConfiguration(initConfiguration) {\n const site = initConfiguration.site || INTAKE_SITE_US1;\n const source = validateSource(initConfiguration.source);\n const endpointBuilders = computeEndpointBuilders({ ...initConfiguration, site, source });\n const replicaConfiguration = computeReplicaConfiguration({ ...initConfiguration, site, source });\n return {\n replica: replicaConfiguration,\n site,\n source,\n ...endpointBuilders,\n };\n}\nfunction validateSource(source) {\n if (source === 'flutter' || source === 'unity') {\n return source;\n }\n return 'browser';\n}\nfunction computeEndpointBuilders(initConfiguration) {\n return {\n logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs'),\n rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum'),\n profilingEndpointBuilder: createEndpointBuilder(initConfiguration, 'profile'),\n sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay'),\n exposuresEndpointBuilder: createEndpointBuilder(initConfiguration, 'exposures'),\n };\n}\nfunction computeReplicaConfiguration(initConfiguration) {\n if (!initConfiguration.replica) {\n return;\n }\n const replicaConfiguration = {\n ...initConfiguration,\n site: INTAKE_SITE_US1,\n clientToken: initConfiguration.replica.clientToken,\n };\n return {\n logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs'),\n rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', [\n `application.id=${initConfiguration.replica.applicationId}`,\n ]),\n };\n}\nexport function isIntakeUrl(url) {\n // check if tags is present in the query string\n return INTAKE_URL_PARAMETERS.every((param) => url.includes(param));\n}\n//# sourceMappingURL=transportConfiguration.js.map","import { catchUserErrors } from '../../tools/catchUserErrors';\nimport { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nimport { ONE_SECOND } from '../../tools/utils/timeUtils';\nimport { isPercentage } from '../../tools/utils/numberUtils';\nimport { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils';\nimport { objectHasValue } from '../../tools/utils/objectUtils';\nimport { selectSessionStoreStrategyType } from '../session/sessionStore';\nimport { TrackingConsent } from '../trackingConsent';\nimport { isAllowedTrackingOrigins } from '../allowedTrackingOrigins';\nimport { isWorkerEnvironment } from '../../tools/globalObject';\nimport { computeTransportConfiguration } from './transportConfiguration';\n/**\n * Default privacy level for the browser SDK.\n *\n * [Replay Privacy Options](https://docs.datadoghq.com/real_user_monitoring/session_replay/browser/privacy_options) for further information.\n */\nexport const DefaultPrivacyLevel = {\n ALLOW: 'allow',\n MASK: 'mask',\n MASK_USER_INPUT: 'mask-user-input',\n MASK_UNLESS_ALLOWLISTED: 'mask-unless-allowlisted',\n};\n/**\n * Trace context injection option.\n *\n * See [Connect RUM and Traces](https://docs.datadoghq.com/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.\n */\nexport const TraceContextInjection = {\n ALL: 'all',\n SAMPLED: 'sampled',\n};\nfunction isString(tag, tagName) {\n if (tag !== undefined && tag !== null && typeof tag !== 'string') {\n display.error(`${tagName} must be defined as a string`);\n return false;\n }\n return true;\n}\nfunction isDatadogSite(site) {\n if (site && typeof site === 'string' && !/(datadog|ddog|datad0g|dd0g)/.test(site)) {\n display.error(`Site should be a valid Datadog site. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/site/.`);\n return false;\n }\n return true;\n}\nexport function isSampleRate(sampleRate, name) {\n if (sampleRate !== undefined && !isPercentage(sampleRate)) {\n display.error(`${name} Sample Rate should be a number between 0 and 100`);\n return false;\n }\n return true;\n}\nexport function validateAndBuildConfiguration(initConfiguration, errorStack) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n if (!initConfiguration || !initConfiguration.clientToken) {\n display.error('Client Token is not configured, we will not send any data.');\n return;\n }\n if (initConfiguration.allowedTrackingOrigins !== undefined &&\n !Array.isArray(initConfiguration.allowedTrackingOrigins)) {\n display.error('Allowed Tracking Origins must be an array');\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 !isAllowedTrackingOrigins(initConfiguration, errorStack !== null && errorStack !== void 0 ? errorStack : '')) {\n return;\n }\n if (initConfiguration.trackingConsent !== undefined &&\n !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)) {\n display.error('Tracking Consent should be either \"granted\" or \"not-granted\"');\n return;\n }\n return {\n beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n sessionStoreStrategyType: isWorkerEnvironment ? undefined : 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: (_e = initConfiguration.service) !== null && _e !== void 0 ? _e : undefined,\n env: (_f = initConfiguration.env) !== null && _f !== void 0 ? _f : undefined,\n version: (_g = initConfiguration.version) !== null && _g !== void 0 ? _g : undefined,\n datacenter: (_h = initConfiguration.datacenter) !== null && _h !== void 0 ? _h : undefined,\n silentMultipleInit: !!initConfiguration.silentMultipleInit,\n allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,\n trackingConsent: (_j = initConfiguration.trackingConsent) !== null && _j !== void 0 ? _j : TrackingConsent.GRANTED,\n trackAnonymousUser: (_k = initConfiguration.trackAnonymousUser) !== null && _k !== void 0 ? _k : true,\n storeContextsAcrossPages: !!initConfiguration.storeContextsAcrossPages,\n /**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\n batchBytesLimit: 16 * ONE_KIBI_BYTE,\n eventRateLimiterThreshold: 3000,\n maxTelemetryEventsPerPage: 15,\n /**\n * flush automatically, aim to be lower than ALB connection timeout\n * to maximize connection reuse.\n */\n flushTimeout: (30 * ONE_SECOND),\n /**\n * Logs intake limit. When using the SDK in a Worker Environment, we\n * limit the batch size to 1 to ensure it can be sent in a single event.\n */\n batchMessagesLimit: isWorkerEnvironment ? 1 : 50,\n messageBytesLimit: 256 * ONE_KIBI_BYTE,\n /**\n * The source of the SDK, used for support plugins purposes.\n */\n variant: initConfiguration.variant,\n sdkVersion: initConfiguration.sdkVersion,\n ...computeTransportConfiguration(initConfiguration),\n };\n}\nexport function serializeConfiguration(initConfiguration) {\n return {\n session_sample_rate: initConfiguration.sessionSampleRate,\n telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,\n use_before_send: !!initConfiguration.beforeSend,\n use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,\n use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n use_proxy: !!initConfiguration.proxy,\n silent_multiple_init: initConfiguration.silentMultipleInit,\n track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n track_anonymous_user: initConfiguration.trackAnonymousUser,\n session_persistence: initConfiguration.sessionPersistence,\n allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,\n store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,\n tracking_consent: initConfiguration.trackingConsent,\n use_allowed_tracking_origins: Array.isArray(initConfiguration.allowedTrackingOrigins),\n source: initConfiguration.source,\n sdk_version: initConfiguration.sdkVersion,\n variant: initConfiguration.variant,\n };\n}\n//# sourceMappingURL=configuration.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[\"TRACK_INTAKE_REQUESTS\"] = \"track_intake_requests\";\n ExperimentalFeature[\"USE_TREE_WALKER_FOR_ACTION_NAME\"] = \"use_tree_walker_for_action_name\";\n ExperimentalFeature[\"FEATURE_OPERATION_VITAL\"] = \"feature_operation_vital\";\n ExperimentalFeature[\"SHORT_SESSION_INVESTIGATION\"] = \"short_session_investigation\";\n})(ExperimentalFeature || (ExperimentalFeature = {}));\nconst enabledExperimentalFeatures = new Set();\nexport function initFeatureFlags(enableExperimentalFeatures) {\n if (Array.isArray(enableExperimentalFeatures)) {\n addExperimentalFeatures(enableExperimentalFeatures.filter((flag) => objectHasValue(ExperimentalFeature, flag)));\n }\n}\nexport function addExperimentalFeatures(enabledFeatures) {\n enabledFeatures.forEach((flag) => {\n enabledExperimentalFeatures.add(flag);\n });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n return enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n enabledExperimentalFeatures.clear();\n}\nexport function getExperimentalFeatures() {\n return enabledExperimentalFeatures;\n}\n//# sourceMappingURL=experimentalFeatures.js.map","/**\n * Cross-browser stack trace computation.\n *\n * Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js\n */\nconst UNKNOWN_FUNCTION = '?';\nexport function computeStackTrace(ex) {\n var _a, _b;\n const stack = [];\n let stackProperty = tryToGetString(ex, 'stack');\n const exString = String(ex);\n if (stackProperty && stackProperty.startsWith(exString)) {\n stackProperty = stackProperty.slice(exString.length);\n }\n if (stackProperty) {\n stackProperty.split('\\n').forEach((line) => {\n const stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION;\n }\n stack.push(stackFrame);\n }\n });\n }\n if (stack.length > 0 && isWronglyReportingCustomErrors() && ex instanceof Error) {\n // if we are wrongly reporting custom errors\n const constructors = [];\n // go through each inherited constructor\n let currentPrototype = ex;\n while ((currentPrototype = Object.getPrototypeOf(currentPrototype)) &&\n isNonNativeClassPrototype(currentPrototype)) {\n const constructorName = ((_a = currentPrototype.constructor) === null || _a === void 0 ? void 0 : _a.name) || UNKNOWN_FUNCTION;\n constructors.push(constructorName);\n }\n // traverse the stacktrace in reverse order because the stacktrace starts with the last inherited constructor\n // we check constructor names to ensure we remove the correct frame (and there isn't a weird unsupported environment behavior)\n for (let i = constructors.length - 1; i >= 0 && ((_b = stack[0]) === null || _b === void 0 ? void 0 : _b.func) === constructors[i]; i--) {\n // if the first stack frame is the custom error constructor\n // null stack frames may represent frames that failed to be parsed because the error class did not have a constructor\n stack.shift(); // remove it\n }\n }\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack,\n };\n}\nconst fileUrl = '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|snippet|<anonymous>|\\\\w+\\\\.|\\\\/).*?)';\nconst filePosition = '(?::(\\\\d+))';\nconst CHROME_LINE_RE = new RegExp(`^\\\\s*at (.*?) ?\\\\(${fileUrl}${filePosition}?${filePosition}?\\\\)?\\\\s*$`, 'i');\nconst CHROME_EVAL_RE = new RegExp(`\\\\((\\\\S*)${filePosition}${filePosition}\\\\)`);\nfunction parseChromeLine(line) {\n const parts = CHROME_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n const isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n const submatch = CHROME_EVAL_RE.exec(parts[2]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined,\n };\n}\nconst CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(`^\\\\s*at ?${fileUrl}${filePosition}?${filePosition}??\\\\s*$`, 'i');\nfunction parseChromeAnonymousLine(line) {\n const parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1],\n };\n}\nconst WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n const parts = WINJS_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2],\n };\n}\nconst GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:(?:(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle|\\[wasm code\\])(?::(\\d+))?(?::(\\d+))?)|@)\\s*$/i;\nconst GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n const parts = GECKO_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n const submatch = GECKO_EVAL_RE.exec(parts[3]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = undefined; // no column when eval\n }\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3],\n };\n}\nfunction tryToGetString(candidate, property) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined;\n }\n const value = candidate[property];\n return typeof value === 'string' ? value : undefined;\n}\nexport function computeStackTraceFromOnErrorMessage(messageObj, url, line, column) {\n if (url === undefined) {\n return;\n }\n const { name, message } = tryToParseMessage(messageObj);\n return {\n name,\n message,\n stack: [{ url, column, line }],\n };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nconst ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/;\nfunction tryToParseMessage(messageObj) {\n let name;\n let message;\n if ({}.toString.call(messageObj) === '[object String]') {\n ;\n [, name, message] = ERROR_TYPES_RE.exec(messageObj);\n }\n return { name, message };\n}\n// Custom error stacktrace fix\n// Some browsers (safari/firefox) add the error constructor as a frame in the stacktrace\n// In order to normalize the stacktrace, we need to remove it\nfunction isNonNativeClassPrototype(prototype) {\n return String(prototype.constructor).startsWith('class ');\n}\nlet isWronglyReportingCustomErrorsCache;\nfunction isWronglyReportingCustomErrors() {\n if (isWronglyReportingCustomErrorsCache !== undefined) {\n return isWronglyReportingCustomErrorsCache;\n }\n /* eslint-disable no-restricted-syntax */\n class DatadogTestCustomError extends Error {\n constructor() {\n super();\n this.name = 'Error'; // set name to Error so that no browser would default to the constructor name\n }\n }\n const [customError, nativeError] = [DatadogTestCustomError, Error].map((errConstructor) => new errConstructor()); // so that both errors should exactly have the same stacktrace\n isWronglyReportingCustomErrorsCache =\n // If customError is not a class, it means that this was built with ES5 as target, converting the class to a normal object.\n // Thus, error constructors will be reported on all browsers, which is the expected behavior.\n isNonNativeClassPrototype(Object.getPrototypeOf(customError)) &&\n // If the browser is correctly reporting the stacktrace, the normal error stacktrace should be the same as the custom error stacktrace\n nativeError.stack !== customError.stack;\n return isWronglyReportingCustomErrorsCache;\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { callMonitored } from '../monitor';\nimport { computeStackTrace } from './computeStackTrace';\n/**\n * Creates a stacktrace without SDK internal frames.\n * Constraints:\n * - Has to be called at the utmost position of the call stack.\n * - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack(type) {\n /**\n * Skip the two internal frames:\n * - SDK API (console.error, ...)\n * - this function\n * in order to keep only the user calls\n */\n const internalFramesToSkip = 2;\n const error = new Error(type);\n error.name = 'HandlingStack';\n let formattedStack;\n callMonitored(() => {\n const stackTrace = computeStackTrace(error);\n stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n formattedStack = toStackTraceString(stackTrace);\n });\n return formattedStack;\n}\nexport function toStackTraceString(stack) {\n let result = formatErrorMessage(stack);\n stack.stack.forEach((frame) => {\n const func = frame.func === '?' ? '<anonymous>' : frame.func;\n const args = frame.args && frame.args.length > 0 ? `(${frame.args.join(', ')})` : '';\n const line = frame.line ? `:${frame.line}` : '';\n const column = frame.line && frame.column ? `:${frame.column}` : '';\n result += `\\n at ${func}${args} @ ${frame.url}${line}${column}`;\n });\n return result;\n}\nexport function formatErrorMessage(stack) {\n return `${stack.name || 'Error'}: ${stack.message}`;\n}\n//# sourceMappingURL=handlingStack.js.map","import { setTimeout } from './timer';\nimport { callMonitored } from './monitor';\nimport { noop } from './utils/functionUtils';\nimport { createHandlingStack } from './stackTrace/handlingStack';\n/**\n * Instruments a method on a object, calling the given callback before the original method is\n * invoked. The callback receives an object with information about the method call.\n *\n * This function makes sure that we are \"good citizens\" regarding third party instrumentations: when\n * removing the instrumentation, the original method is usually restored, but if a third party\n * instrumentation was set after ours, we keep it in place and just replace our instrumentation with\n * a noop.\n *\n * Note: it is generally better to instrument methods that are \"owned\" by the object instead of ones\n * that are inherited from the prototype chain. Example:\n * * do: `instrumentMethod(Array.prototype, 'push', ...)`\n * * don't: `instrumentMethod([], 'push', ...)`\n *\n * This method is also used to set event handler properties (ex: window.onerror = ...), as it has\n * the same requirements as instrumenting a method:\n * * if the event handler is already set by a third party, we need to call it and not just blindly\n * override it.\n * * if the event handler is set by a third party after us, we need to keep it in place when\n * removing ours.\n *\n * @example\n *\n * instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {\n * console.log('Before calling fetch on', target, 'with parameters', parameters)\n *\n * onPostCall((result) => {\n * console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)\n * })\n * })\n */\nexport function instrumentMethod(targetPrototype, method, onPreCall, { computeHandlingStack } = {}) {\n let original = targetPrototype[method];\n if (typeof original !== 'function') {\n if (method in targetPrototype && method.startsWith('on')) {\n original = noop;\n }\n else {\n return { stop: noop };\n }\n }\n let stopped = false;\n const instrumentation = function () {\n if (stopped) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return original.apply(this, arguments);\n }\n const parameters = Array.from(arguments);\n let postCallCallback;\n callMonitored(onPreCall, null, [\n {\n target: this,\n parameters,\n onPostCall: (callback) => {\n postCallCallback = callback;\n },\n handlingStack: computeHandlingStack ? createHandlingStack('instrumented method') : undefined,\n },\n ]);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const result = original.apply(this, parameters);\n if (postCallCallback) {\n callMonitored(postCallCallback, null, [result]);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result;\n };\n targetPrototype[method] = instrumentation;\n return {\n stop: () => {\n stopped = true;\n // If the instrumentation has been removed by a third party, keep the last one\n if (targetPrototype[method] === instrumentation) {\n targetPrototype[method] = original;\n }\n },\n };\n}\nexport function instrumentSetter(targetPrototype, property, after) {\n const originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property);\n if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n return { stop: noop };\n }\n const stoppedInstrumentation = noop;\n let instrumentation = (target, value) => {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(() => {\n if (instrumentation !== stoppedInstrumentation) {\n after(target, value);\n }\n }, 0);\n };\n const instrumentationWrapper = function (value) {\n originalDescriptor.set.call(this, value);\n instrumentation(this, value);\n };\n Object.defineProperty(targetPrototype, property, {\n set: instrumentationWrapper,\n });\n return {\n stop: () => {\n var _a;\n if (((_a = Object.getOwnPropertyDescriptor(targetPrototype, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n Object.defineProperty(targetPrototype, property, originalDescriptor);\n }\n instrumentation = stoppedInstrumentation;\n },\n };\n}\n//# sourceMappingURL=instrumentMethod.js.map","import { noop } from '../utils/functionUtils';\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n if (typeof value !== 'object' || value === null) {\n return JSON.stringify(value);\n }\n // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n // subclasses.\n const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n const restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n const restoreValueToJson = detachToJsonMethod(value);\n try {\n return JSON.stringify(value, replacer, space);\n }\n catch (_a) {\n return '<error: unable to serialize object>';\n }\n finally {\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n restoreValuePrototypeToJson();\n restoreValueToJson();\n }\n}\nexport function detachToJsonMethod(value) {\n const object = value;\n const objectToJson = object.toJSON;\n if (objectToJson) {\n delete object.toJSON;\n return () => {\n object.toJSON = objectToJson;\n };\n }\n return noop;\n}\n//# sourceMappingURL=jsonStringify.js.map","import { display } from '../display';\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils';\nimport { detachToJsonMethod } from './jsonStringify';\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nconst SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE;\n// Symbol for the root element of the JSONPath used for visited objects\nconst JSON_PATH_ROOT_ELEMENT = '$';\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nconst KEY_DECORATION_LENGTH = 3;\nexport function sanitize(source, maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT) {\n // Unbind any toJSON function we may have on [] or {} prototypes\n const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n const containerQueue = [];\n const visitedObjectsWithPath = new WeakMap();\n const sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);\n const serializedSanitizedData = JSON.stringify(sanitizedData);\n let accumulatedCharacterCount = serializedSanitizedData ? serializedSanitizedData.length : 0;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source);\n return undefined;\n }\n while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n const containerToProcess = containerQueue.shift();\n let separatorLength = 0; // 0 for the first element, 1 for subsequent elements\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (let key = 0; key < containerToProcess.source.length; key++) {\n const targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length;\n }\n else {\n // When an element of an Array (targetData) is undefined, it is serialized as null:\n // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n accumulatedCharacterCount += 4;\n }\n accumulatedCharacterCount += separatorLength;\n separatorLength = 1;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n else {\n for (const key in containerToProcess.source) {\n if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n const targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount +=\n JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;\n separatorLength = 1;\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n }\n }\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n return sanitizedData;\n}\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {\n // Start by handling toJSON, as we want to sanitize its output\n const sourceToSanitize = tryToApplyToJSON(source);\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize);\n }\n const sanitizedSource = sanitizeObjects(sourceToSanitize);\n if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n return sanitizedSource;\n }\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n const sourceAsObject = source;\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return `[Reference seen at ${visitedObjectsWithPath.get(sourceAsObject)}]`;\n }\n // Add processed source to queue\n const currentPath = key !== undefined ? `${parentPath}.${key}` : parentPath;\n const target = Array.isArray(sourceToSanitize) ? [] : {};\n visitedObjectsWithPath.set(sourceAsObject, currentPath);\n queue.push({ source: sourceToSanitize, target, path: currentPath });\n return target;\n}\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return `[BigInt] ${value.toString()}`;\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return `[Function] ${value.name || 'unknown'}`;\n }\n // JSON.stringify() does not serialize symbols.\n if (typeof value === 'symbol') {\n return `[Symbol] ${value.description || value.toString()}`;\n }\n return value;\n}\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n */\nfunction sanitizeObjects(value) {\n try {\n if (value instanceof Event) {\n return sanitizeEvent(value);\n }\n if (value instanceof RegExp) {\n return `[RegExp] ${value.toString()}`;\n }\n // Handle all remaining object types in a generic way\n const result = Object.prototype.toString.call(value);\n const match = result.match(/\\[object (.*)\\]/);\n if (match && match[1]) {\n return `[${match[1]}]`;\n }\n }\n catch (_a) {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]';\n}\nfunction sanitizeEvent(event) {\n return {\n type: event.type,\n isTrusted: event.isTrusted,\n currentTarget: event.currentTarget ? sanitizeObjects(event.currentTarget) : null,\n target: event.target ? sanitizeObjects(event.target) : null,\n };\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n const object = value;\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON();\n }\n catch (_a) {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n return value;\n}\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n display.warn(`The data provided has been ${changeType} as it is over the limit of ${maxCharacterCount} characters:`, source);\n}\n//# sourceMappingURL=sanitize.js.map","import { sanitize } from '../../tools/serialisation/sanitize';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nexport const NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error';\nexport function computeRawError({ stackTrace, originalError, handlingStack, componentStack, startClocks, nonErrorPrefix, useFallbackStack = true, source, handling, }) {\n const isErrorInstance = isError(originalError);\n if (!stackTrace && isErrorInstance) {\n stackTrace = computeStackTrace(originalError);\n }\n return {\n startClocks,\n source,\n handling,\n handlingStack,\n componentStack,\n originalError,\n type: stackTrace ? stackTrace.name : undefined,\n message: computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError),\n stack: stackTrace ? toStackTraceString(stackTrace) : useFallbackStack ? NO_ERROR_STACK_PRESENT_MESSAGE : undefined,\n causes: isErrorInstance ? flattenErrorCauses(originalError, source) : undefined,\n fingerprint: tryToGetFingerprint(originalError),\n context: tryToGetErrorContext(originalError),\n };\n}\nfunction computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError) {\n // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n // TODO rework tracekit integration to avoid scattering error building logic\n return (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.message) && (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name)\n ? stackTrace.message\n : !isErrorInstance\n ? `${nonErrorPrefix} ${jsonStringify(sanitize(originalError))}`\n : 'Empty message';\n}\nexport function tryToGetFingerprint(originalError) {\n return isError(originalError) && 'dd_fingerprint' in originalError ? String(originalError.dd_fingerprint) : undefined;\n}\nexport function tryToGetErrorContext(originalError) {\n if (originalError !== null && typeof originalError === 'object' && 'dd_context' in originalError) {\n return originalError.dd_context;\n }\n}\nexport function getFileFromStackTraceString(stack) {\n var _a;\n return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function isError(error) {\n return error instanceof Error || Object.prototype.toString.call(error) === '[object Error]';\n}\nexport function flattenErrorCauses(error, parentSource) {\n let currentError = error;\n const causes = [];\n while (isError(currentError === null || currentError === void 0 ? void 0 : currentError.cause) && causes.length < 10) {\n const stackTrace = computeStackTrace(currentError.cause);\n causes.push({\n message: currentError.cause.message,\n source: parentSource,\n type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n stack: stackTrace && toStackTraceString(stackTrace),\n });\n currentError = currentError.cause;\n }\n return causes.length ? causes : undefined;\n}\n//# sourceMappingURL=error.js.map","export const ErrorSource = {\n AGENT: 'agent',\n CONSOLE: 'console',\n CUSTOM: 'custom',\n LOGGER: 'logger',\n NETWORK: 'network',\n SOURCE: 'source',\n REPORT: 'report',\n};\n//# sourceMappingURL=error.types.js.map","import { instrumentMethod } from '../../tools/instrumentMethod';\nimport { Observable } from '../../tools/observable';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nimport { computeStackTraceFromOnErrorMessage } from '../../tools/stackTrace/computeStackTrace';\nimport { getGlobalObject } from '../../tools/globalObject';\nimport { computeRawError, isError } from './error';\nimport { ErrorSource } from './error.types';\nexport function trackRuntimeError() {\n return new Observable((observer) => {\n const handleRuntimeError = (originalError, stackTrace) => {\n const rawError = computeRawError({\n stackTrace,\n originalError,\n startClocks: clocksNow(),\n nonErrorPrefix: \"Uncaught\" /* NonErrorPrefix.UNCAUGHT */,\n source: ErrorSource.SOURCE,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n });\n observer.notify(rawError);\n };\n const { stop: stopInstrumentingOnError } = instrumentOnError(handleRuntimeError);\n const { stop: stopInstrumentingOnUnhandledRejection } = instrumentUnhandledRejection(handleRuntimeError);\n return () => {\n stopInstrumentingOnError();\n stopInstrumentingOnUnhandledRejection();\n };\n });\n}\nexport function instrumentOnError(callback) {\n return instrumentMethod(getGlobalObject(), 'onerror', ({ parameters: [messageObj, url, line, column, errorObj] }) => {\n let stackTrace;\n if (!isError(errorObj)) {\n stackTrace = computeStackTraceFromOnErrorMessage(messageObj, url, line, column);\n }\n callback(errorObj !== null && errorObj !== void 0 ? errorObj : messageObj, stackTrace);\n });\n}\nexport function instrumentUnhandledRejection(callback) {\n return instrumentMethod(getGlobalObject(), 'onunhandledrejection', ({ parameters: [e] }) => {\n callback(e.reason || 'Empty reason');\n });\n}\n//# sourceMappingURL=trackRuntimeError.js.map","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { display } from '../tools/display';\nexport function makePublicApi(stub) {\n const publicApi = {\n version: \"6.22.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(callback) {\n callback();\n },\n ...stub,\n };\n // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n // as much as possible but of course it's not a real protection.\n Object.defineProperty(publicApi, '_setDebug', {\n get() {\n return setDebugMode;\n },\n enumerable: false,\n });\n return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n const existingGlobalVariable = global[name];\n if (existingGlobalVariable && !existingGlobalVariable.q && existingGlobalVariable.version) {\n display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.');\n }\n global[name] = api;\n if (existingGlobalVariable && existingGlobalVariable.q) {\n existingGlobalVariable.q.forEach((fn) => catchUserErrors(fn, 'onReady callback threw an error:')());\n }\n}\n//# sourceMappingURL=init.js.map","import { display } from '../tools/display';\nexport function displayAlreadyInitializedError(sdkName, initConfiguration) {\n if (!initConfiguration.silentMultipleInit) {\n display.error(`${sdkName} is already initialized.`);\n }\n}\n//# sourceMappingURL=displayAlreadyInitializedError.js.map","import { monitor } from '../tools/monitor';\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue';\n/**\n * Add an event listener to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(configuration, eventTarget, eventName, listener, options) {\n return addEventListeners(configuration, eventTarget, [eventName], listener, options);\n}\n/**\n * Add event listeners to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(configuration, eventTarget, eventNames, listener, { once, capture, passive } = {}) {\n const listenerWithMonitor = monitor((event) => {\n if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {\n return;\n }\n if (once) {\n stop();\n }\n listener(event);\n });\n const options = passive ? { capture, passive } : capture;\n // Use the window.EventTarget.prototype when possible to avoid wrong overrides (e.g: https://github.com/salesforce/lwc/issues/1824)\n const listenerTarget = window.EventTarget && eventTarget instanceof EventTarget ? window.EventTarget.prototype : eventTarget;\n const add = getZoneJsOriginalValue(listenerTarget, 'addEventListener');\n eventNames.forEach((eventName) => add.call(eventTarget, eventName, listenerWithMonitor, options));\n function stop() {\n const remove = getZoneJsOriginalValue(listenerTarget, 'removeEventListener');\n eventNames.forEach((eventName) => remove.call(eventTarget, eventName, listenerWithMonitor, options));\n }\n return {\n stop,\n };\n}\n//# sourceMappingURL=addEventListener.js.map","import { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { monitor } from '../../tools/monitor';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { addEventListener } from '../../browser/addEventListener';\nimport { safeTruncate } from '../../tools/utils/stringUtils';\nimport { ErrorSource } from '../error/error.types';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nexport const RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation',\n};\nexport function initReportObservable(configuration, apis) {\n const observables = [];\n if (apis.includes(RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration));\n }\n const reportTypes = apis.filter((api) => api !== RawReportType.cspViolation);\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes));\n }\n return mergeObservables(...observables);\n}\nfunction createReportObservable(reportTypes) {\n return new Observable((observable) => {\n if (!window.ReportingObserver) {\n return;\n }\n const handleReports = monitor((reports, _) => reports.forEach((report) => observable.notify(buildRawReportErrorFromReport(report))));\n const observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true,\n });\n observer.observe();\n return () => {\n observer.disconnect();\n };\n });\n}\nfunction createCspViolationReportObservable(configuration) {\n return new Observable((observable) => {\n const { stop } = addEventListener(configuration, document, \"securitypolicyviolation\" /* DOM_EVENT.SECURITY_POLICY_VIOLATION */, (event) => {\n observable.notify(buildRawReportErrorFromCspViolation(event));\n });\n return stop;\n });\n}\nfunction buildRawReportErrorFromReport(report) {\n const { type, body } = report;\n return buildRawReportError({\n type: body.id,\n message: `${type}: ${body.message}`,\n originalError: report,\n stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n });\n}\nfunction buildRawReportErrorFromCspViolation(event) {\n const message = `'${event.blockedURI}' blocked by '${event.effectiveDirective}' directive`;\n return buildRawReportError({\n type: event.effectiveDirective,\n message: `${RawReportType.cspViolation}: ${message}`,\n originalError: event,\n csp: {\n disposition: event.disposition,\n },\n stack: buildStack(event.effectiveDirective, event.originalPolicy\n ? `${message} of the policy \"${safeTruncate(event.originalPolicy, 100, '...')}\"`\n : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber),\n });\n}\nfunction buildRawReportError(partial) {\n return {\n startClocks: clocksNow(),\n source: ErrorSource.REPORT,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n ...partial,\n };\n}\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n return sourceFile\n ? toStackTraceString({\n name,\n 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","import { DOCS_ORIGIN, MORE_DETAILS, display } from '../tools/display';\nexport const TAG_SIZE_LIMIT = 200;\nexport function buildTags(configuration) {\n const { env, service, version, datacenter, sdkVersion, variant } = configuration;\n const tags = [buildTag('sdk_version', sdkVersion !== null && sdkVersion !== void 0 ? sdkVersion : \"6.22.0\")];\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 if (variant) {\n tags.push(buildTag('variant', variant));\n }\n return tags;\n}\nexport function buildTag(key, rawValue) {\n // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n // that the backend may not follow the exact same rules, so we only want to display an informal\n // warning.\n const tag = rawValue ? `${key}:${rawValue}` : key;\n if (tag.length > TAG_SIZE_LIMIT || hasForbiddenCharacters(tag)) {\n display.warn(`Tag ${tag} doesn't meet tag requirements and will be sanitized. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/tagging/#defining-tags`);\n }\n // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n // by forging a value containing commas.\n return sanitizeTag(tag);\n}\nexport function sanitizeTag(tag) {\n return tag.replace(/,/g, '_');\n}\nfunction hasForbiddenCharacters(rawValue) {\n // Unicode property escapes is not supported in all browsers, so we use a try/catch.\n // Todo: Remove the try/catch when dropping support for Chrome 63 and Firefox 67\n // see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#browser_compatibility\n if (!supportUnicodePropertyEscapes()) {\n return false;\n }\n // We use the Unicode property escapes to match any character that is a letter including other languages like Chinese, Japanese, etc.\n // p{Ll} matches a lowercase letter.\n // p{Lo} matches a letter that is neither uppercase nor lowercase (ex: Japanese characters).\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#unicode_property_escapes_vs._character_classes\n return new RegExp('[^\\\\p{Ll}\\\\p{Lo}0-9_:./-]', 'u').test(rawValue);\n}\nexport function supportUnicodePropertyEscapes() {\n try {\n new RegExp('[\\\\p{Ll}]', 'u');\n return true;\n }\n catch (_a) {\n return false;\n }\n}\n//# sourceMappingURL=tags.js.map","import { globalObject } from './globalObject';\nexport function sendToExtension(type, payload) {\n const callback = globalObject.__ddBrowserSdkExtensionCallback;\n if (callback) {\n callback({ type, 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 = createCircularReferenceChecker()) {\n // ignore the source if it is undefined\n if (source === undefined) {\n return destination;\n }\n if (typeof source !== 'object' || source === null) {\n // primitive values - just return source\n return source;\n }\n else if (source instanceof Date) {\n return new Date(source.getTime());\n }\n else if (source instanceof RegExp) {\n const flags = source.flags ||\n // old browsers compatibility\n [\n source.global ? 'g' : '',\n source.ignoreCase ? 'i' : '',\n source.multiline ? 'm' : '',\n source.sticky ? 'y' : '',\n source.unicode ? 'u' : '',\n ].join('');\n return new RegExp(source.source, flags);\n }\n if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n // remove circular references\n return undefined;\n }\n else if (Array.isArray(source)) {\n const merged = Array.isArray(destination) ? destination : [];\n for (let i = 0; i < source.length; ++i) {\n merged[i] = mergeInto(merged[i], source[i], circularReferenceChecker);\n }\n return merged;\n }\n const merged = getType(destination) === 'object' ? destination : {};\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n }\n }\n return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n return mergeInto(undefined, value);\n}\nexport function combine(...sources) {\n let destination;\n for (const source of sources) {\n // Ignore any undefined or null sources.\n if (source === undefined || source === null) {\n continue;\n }\n destination = mergeInto(destination, source);\n }\n return destination;\n}\nfunction createCircularReferenceChecker() {\n if (typeof WeakSet !== 'undefined') {\n const set = new WeakSet();\n return {\n hasAlreadyBeenSeen(value) {\n const has = set.has(value);\n if (!has) {\n set.add(value);\n }\n return has;\n },\n };\n }\n const array = [];\n return {\n hasAlreadyBeenSeen(value) {\n const has = array.indexOf(value) >= 0;\n if (!has) {\n array.push(value);\n }\n return has;\n },\n };\n}\n//# sourceMappingURL=mergeInto.js.map","import { globalObject } from '../../tools/globalObject';\nexport function getConnectivity() {\n var _a;\n const navigator = globalObject.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","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 const MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport const MAX_ONGOING_REQUESTS = 32;\nexport const MAX_QUEUE_BYTES_COUNT = 20 * ONE_MEBI_BYTE;\nexport const MAX_BACKOFF_TIME = ONE_MINUTE;\nexport const INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, trackType, reportError, requestObservable) {\n if (state.transportStatus === 0 /* TransportStatus.UP */ &&\n state.queuedPayloads.size() === 0 &&\n state.bandwidthMonitor.canHandle(payload)) {\n send(payload, state, sendStrategy, requestObservable, {\n onSuccess: () => retryQueuedPayloads(0 /* RetryReason.AFTER_SUCCESS */, state, sendStrategy, trackType, reportError, requestObservable),\n onFailure: () => {\n if (!state.queuedPayloads.enqueue(payload)) {\n requestObservable.notify({ type: 'queue-full', bandwidth: state.bandwidthMonitor.stats(), payload });\n }\n scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable);\n },\n });\n }\n else {\n if (!state.queuedPayloads.enqueue(payload)) {\n requestObservable.notify({ type: 'queue-full', bandwidth: state.bandwidthMonitor.stats(), payload });\n }\n }\n}\nfunction scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable) {\n if (state.transportStatus !== 2 /* TransportStatus.DOWN */) {\n return;\n }\n setTimeout(() => {\n const payload = state.queuedPayloads.first();\n send(payload, state, sendStrategy, requestObservable, {\n onSuccess: () => {\n state.queuedPayloads.dequeue();\n state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n retryQueuedPayloads(1 /* RetryReason.AFTER_RESUME */, state, sendStrategy, trackType, reportError, requestObservable);\n },\n onFailure: () => {\n state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable);\n },\n });\n }, state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, requestObservable, { onSuccess, onFailure }) {\n state.bandwidthMonitor.add(payload);\n sendStrategy(payload, (response) => {\n state.bandwidthMonitor.remove(payload);\n if (!shouldRetryRequest(response)) {\n state.transportStatus = 0 /* TransportStatus.UP */;\n requestObservable.notify({ type: 'success', bandwidth: state.bandwidthMonitor.stats(), payload });\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 requestObservable.notify({ type: 'failure', bandwidth: state.bandwidthMonitor.stats(), payload });\n onFailure();\n }\n });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, trackType, reportError, requestObservable) {\n if (reason === 0 /* RetryReason.AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n reportError({\n message: `Reached max ${trackType} events size queued for upload: ${MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE}MiB`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n });\n state.queueFullReported = true;\n }\n const previousQueue = state.queuedPayloads;\n state.queuedPayloads = newPayloadQueue();\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, trackType, reportError, requestObservable);\n }\n}\nfunction shouldRetryRequest(response) {\n return (response.type !== 'opaque' &&\n ((response.status === 0 && !navigator.onLine) ||\n response.status === 408 ||\n response.status === 429 ||\n isServerError(response.status)));\n}\nexport function newRetryState() {\n return {\n transportStatus: 0 /* TransportStatus.UP */,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false,\n };\n}\nfunction newPayloadQueue() {\n const queue = [];\n return {\n bytesCount: 0,\n enqueue(payload) {\n if (this.isFull()) {\n return false;\n }\n queue.push(payload);\n this.bytesCount += payload.bytesCount;\n return true;\n },\n first() {\n return queue[0];\n },\n dequeue() {\n const payload = queue.shift();\n if (payload) {\n this.bytesCount -= payload.bytesCount;\n }\n return payload;\n },\n size() {\n return queue.length;\n },\n isFull() {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n },\n };\n}\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle(payload) {\n return (this.ongoingRequestCount === 0 ||\n (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n this.ongoingRequestCount < MAX_ONGOING_REQUESTS));\n },\n add(payload) {\n this.ongoingRequestCount += 1;\n this.ongoingByteCount += payload.bytesCount;\n },\n remove(payload) {\n this.ongoingRequestCount -= 1;\n this.ongoingByteCount -= payload.bytesCount;\n },\n stats() {\n return {\n ongoingByteCount: this.ongoingByteCount,\n ongoingRequestCount: this.ongoingRequestCount,\n };\n },\n };\n}\n//# sourceMappingURL=sendWithRetryStrategy.js.map","import { monitor, monitorError } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(endpointBuilders, bytesLimit, reportError) {\n const observable = new Observable();\n const retryState = newRetryState();\n return {\n observable,\n send: (payload) => {\n for (const endpointBuilder of endpointBuilders) {\n sendWithRetryStrategy(payload, retryState, (payload, onResponse) => fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse), endpointBuilder.trackType, reportError, observable);\n }\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: (payload) => {\n for (const endpointBuilder of endpointBuilders) {\n sendBeaconStrategy(endpointBuilder, bytesLimit, payload);\n }\n },\n };\n}\nfunction sendBeaconStrategy(endpointBuilder, bytesLimit, payload) {\n const canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit;\n if (canUseBeacon) {\n try {\n const beaconUrl = endpointBuilder.build('beacon', payload);\n const isQueued = navigator.sendBeacon(beaconUrl, payload.data);\n if (isQueued) {\n return;\n }\n }\n catch (e) {\n reportBeaconError(e);\n }\n }\n fetchStrategy(endpointBuilder, payload);\n}\nlet hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true;\n monitorError(e);\n }\n}\nexport function fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse) {\n const canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit;\n if (canUseKeepAlive) {\n const fetchUrl = endpointBuilder.build('fetch-keepalive', payload);\n fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' })\n .then(monitor((response) => onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type })))\n .catch(monitor(() => fetchStrategy(endpointBuilder, payload, onResponse)));\n }\n else {\n fetchStrategy(endpointBuilder, payload, onResponse);\n }\n}\nexport function fetchStrategy(endpointBuilder, payload, onResponse) {\n const fetchUrl = endpointBuilder.build('fetch', payload);\n fetch(fetchUrl, { method: 'POST', body: payload.data, mode: 'cors' })\n .then(monitor((response) => onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type })))\n .catch(monitor(() => onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: 0 })));\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}\n//# sourceMappingURL=httpRequest.js.map","import { getGlobalObject } from '../tools/globalObject';\nexport function getEventBridge() {\n const eventBridgeGlobal = getEventBridgeGlobal();\n if (!eventBridgeGlobal) {\n return;\n }\n return {\n getCapabilities() {\n var _a;\n return JSON.parse(((_a = eventBridgeGlobal.getCapabilities) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal)) || '[]');\n },\n getPrivacyLevel() {\n var _a;\n return (_a = eventBridgeGlobal.getPrivacyLevel) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal);\n },\n getAllowedWebViewHosts() {\n return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n },\n send(eventType, event, viewId) {\n const view = viewId ? { id: viewId } : undefined;\n eventBridgeGlobal.send(JSON.stringify({ eventType, event, view }));\n },\n };\n}\nexport function bridgeSupports(capability) {\n const bridge = getEventBridge();\n return !!bridge && bridge.getCapabilities().includes(capability);\n}\nexport function canUseEventBridge(currentHost) {\n var _a;\n if (currentHost === void 0) { currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n const bridge = getEventBridge();\n return (!!bridge &&\n bridge\n .getAllowedWebViewHosts()\n .some((allowedHost) => currentHost === allowedHost || currentHost.endsWith(`.${allowedHost}`)));\n}\nfunction getEventBridgeGlobal() {\n return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","import { Observable } from '../tools/observable';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { addEventListeners, addEventListener } from './addEventListener';\nexport const PageExitReason = {\n HIDDEN: 'visibility_hidden',\n UNLOADING: 'before_unload',\n PAGEHIDE: 'page_hide',\n FROZEN: 'page_frozen',\n};\nexport function createPageMayExitObservable(configuration) {\n return new Observable((observable) => {\n const { stop: stopListeners } = addEventListeners(configuration, window, [\"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, \"freeze\" /* DOM_EVENT.FREEZE */], (event) => {\n if (event.type === \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */ && document.visibilityState === 'hidden') {\n /**\n * Only event that guarantee to fire on mobile devices when the page transitions to background state\n * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n */\n observable.notify({ reason: PageExitReason.HIDDEN });\n }\n else if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n /**\n * After transitioning in background a tab can be freezed to preserve resources. (cf: https://developer.chrome.com/blog/page-lifecycle-api)\n * Allow to collect events happening between hidden and frozen state.\n */\n observable.notify({ reason: PageExitReason.FROZEN });\n }\n }, { capture: true });\n const stopBeforeUnloadListener = addEventListener(configuration, window, \"beforeunload\" /* DOM_EVENT.BEFORE_UNLOAD */, () => {\n observable.notify({ reason: PageExitReason.UNLOADING });\n }).stop;\n return () => {\n stopListeners();\n stopBeforeUnloadListener();\n };\n });\n}\nexport function isPageExitReason(reason) {\n return objectValues(PageExitReason).includes(reason);\n}\n//# sourceMappingURL=pageMayExitObservable.js.map","import { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../tools/display';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { isPageExitReason } from '../browser/pageMayExitObservable';\nimport { jsonStringify } from '../tools/serialisation/jsonStringify';\nimport { computeBytesCount } from '../tools/utils/byteUtils';\nexport function createBatch({ encoder, request, flushController, messageBytesLimit, }) {\n let upsertBuffer = {};\n const flushSubscription = flushController.flushObservable.subscribe((event) => 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${serializedMessage}`, (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 const removedMessage = upsertBuffer[key];\n delete upsertBuffer[key];\n const messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage);\n flushController.notifyAfterRemoveMessage(messageBytesCount);\n }\n function addOrUpdate(message, key) {\n const serializedMessage = jsonStringify(message);\n const estimatedMessageBytesCount = encoder.estimateEncodedBytesCount(serializedMessage);\n if (estimatedMessageBytesCount >= messageBytesLimit) {\n display.warn(`Discarded a message whose size was bigger than the maximum allowed size ${messageBytesLimit}KB. ${MORE_DETAILS} ${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 const upsertMessages = objectValues(upsertBuffer).join('\\n');\n upsertBuffer = {};\n const pageMightExit = isPageExitReason(event.reason);\n const send = pageMightExit ? request.sendOnExit : request.send;\n if (pageMightExit &&\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 const 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 const 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${upsertMessages}`);\n }\n encoder.finish((encoderResult) => {\n send(formatPayloadFromEncoder(encoderResult));\n });\n }\n }\n return {\n flushController,\n add: addOrUpdate,\n upsert: addOrUpdate,\n stop: flushSubscription.unsubscribe,\n };\n}\nfunction formatPayloadFromEncoder(encoderResult) {\n let 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,\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({ messagesLimit, bytesLimit, durationLimit, pageMayExitObservable, sessionExpireObservable, }) {\n const pageMayExitSubscription = pageMayExitObservable.subscribe((event) => flush(event.reason));\n const sessionExpireSubscription = sessionExpireObservable.subscribe(() => flush('session_expire'));\n const flushObservable = new Observable(() => () => {\n pageMayExitSubscription.unsubscribe();\n sessionExpireSubscription.unsubscribe();\n });\n let currentBytesCount = 0;\n let currentMessagesCount = 0;\n function flush(flushReason) {\n if (currentMessagesCount === 0) {\n return;\n }\n const messagesCount = currentMessagesCount;\n const bytesCount = currentBytesCount;\n currentMessagesCount = 0;\n currentBytesCount = 0;\n cancelDurationLimitTimeout();\n flushObservable.notify({\n reason: flushReason,\n messagesCount,\n bytesCount,\n });\n }\n let durationLimitTimeoutId;\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(() => {\n flush('duration_limit');\n }, durationLimit);\n }\n }\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId);\n durationLimitTimeoutId = undefined;\n }\n return {\n 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(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(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(messageBytesCount) {\n currentBytesCount -= messageBytesCount;\n currentMessagesCount -= 1;\n if (currentMessagesCount === 0) {\n cancelDurationLimitTimeout();\n }\n },\n };\n}\n//# sourceMappingURL=flushController.js.map","import { combine } from './mergeInto';\n// Discards the event from being sent\nexport const DISCARDED = 'DISCARDED';\n// Skips from the assembly of the event\nexport const SKIPPED = 'SKIPPED';\nexport function abstractHooks() {\n const callbacks = {};\n return {\n register(hookName, callback) {\n if (!callbacks[hookName]) {\n callbacks[hookName] = [];\n }\n callbacks[hookName].push(callback);\n return {\n unregister: () => {\n callbacks[hookName] = callbacks[hookName].filter((cb) => cb !== callback);\n },\n };\n },\n triggerHook(hookName, param) {\n const hookCallbacks = callbacks[hookName] || [];\n const results = [];\n for (const callback of hookCallbacks) {\n const result = callback(param);\n if (result === DISCARDED) {\n return DISCARDED;\n }\n if (result === SKIPPED) {\n continue;\n }\n results.push(result);\n }\n return combine(...results);\n },\n };\n}\n//# sourceMappingURL=abstractHooks.js.map","export const TelemetryType = {\n LOG: 'log',\n CONFIGURATION: 'configuration',\n USAGE: 'usage',\n};\n//# sourceMappingURL=rawTelemetryEvent.types.js.map","import { ConsoleApiName } from '../../tools/display';\nimport { NO_ERROR_STACK_PRESENT_MESSAGE, isError } from '../error/error';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures';\nimport { buildTags } from '../tags';\nimport { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../intakeSites';\nimport { BufferedObservable, Observable } from '../../tools/observable';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { sendToExtension } from '../../tools/sendToExtension';\nimport { performDraw } from '../../tools/utils/numberUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { combine } from '../../tools/mergeInto';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { getConnectivity } from '../connectivity';\nimport { canUseEventBridge, createFlushController, createHttpRequest, getEventBridge, createBatch, } from '../../transport';\nimport { DISCARDED } from '../../tools/abstractHooks';\nimport { globalObject, isWorkerEnvironment } from '../../tools/globalObject';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nconst ALLOWED_FRAME_URLS = [\n 'https://www.datadoghq-browser-agent.com',\n 'https://www.datad0g-browser-agent.com',\n 'https://d3uc069fcn7uxw.cloudfront.net',\n 'https://d20xtzwzcl0ceb.cloudfront.net',\n 'http://localhost',\n '<anonymous>',\n];\nconst METRIC_SAMPLE_RATE = 1;\nconst TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\nlet telemetryObservable;\nexport function getTelemetryObservable() {\n if (!telemetryObservable) {\n telemetryObservable = new BufferedObservable(100);\n }\n return telemetryObservable;\n}\nexport function startTelemetry(telemetryService, configuration, hooks, reportError, pageMayExitObservable, createEncoder) {\n const observable = new Observable();\n const { stop } = startTelemetryTransport(configuration, reportError, pageMayExitObservable, createEncoder, observable);\n const { enabled, metricsEnabled } = startTelemetryCollection(telemetryService, configuration, hooks, observable);\n return {\n stop,\n enabled,\n metricsEnabled,\n };\n}\nexport function startTelemetryCollection(telemetryService, configuration, hooks, observable, metricSampleRate = METRIC_SAMPLE_RATE) {\n const alreadySentEventsByKind = {};\n const telemetryEnabled = !TELEMETRY_EXCLUDED_SITES.includes(configuration.site) && performDraw(configuration.telemetrySampleRate);\n const telemetryEnabledPerType = {\n [TelemetryType.LOG]: telemetryEnabled,\n [TelemetryType.CONFIGURATION]: telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate),\n [TelemetryType.USAGE]: telemetryEnabled && performDraw(configuration.telemetryUsageSampleRate),\n // not an actual \"type\" but using a single draw for all metrics\n metric: telemetryEnabled && performDraw(metricSampleRate),\n };\n const runtimeEnvInfo = getRuntimeEnvInfo();\n const telemetryObservable = getTelemetryObservable();\n telemetryObservable.subscribe(({ rawEvent, metricName }) => {\n if ((metricName && !telemetryEnabledPerType['metric']) || !telemetryEnabledPerType[rawEvent.type]) {\n return;\n }\n const kind = metricName || rawEvent.status || rawEvent.type;\n let alreadySentEvents = alreadySentEventsByKind[kind];\n if (!alreadySentEvents) {\n alreadySentEvents = alreadySentEventsByKind[kind] = new Set();\n }\n if (alreadySentEvents.size >= configuration.maxTelemetryEventsPerPage) {\n return;\n }\n const stringifiedEvent = jsonStringify(rawEvent);\n if (alreadySentEvents.has(stringifiedEvent)) {\n return;\n }\n const defaultTelemetryEventAttributes = hooks.triggerHook(1 /* HookNames.AssembleTelemetry */, {\n startTime: clocksNow().relative,\n });\n if (defaultTelemetryEventAttributes === DISCARDED) {\n return;\n }\n const event = toTelemetryEvent(defaultTelemetryEventAttributes, telemetryService, rawEvent, runtimeEnvInfo);\n observable.notify(event);\n sendToExtension('telemetry', event);\n alreadySentEvents.add(stringifiedEvent);\n });\n telemetryObservable.unbuffer();\n startMonitorErrorCollection(addTelemetryError);\n return {\n enabled: telemetryEnabled,\n metricsEnabled: telemetryEnabledPerType['metric'],\n };\n function toTelemetryEvent(defaultTelemetryEventAttributes, telemetryService, rawEvent, runtimeEnvInfo) {\n const clockNow = clocksNow();\n const event = {\n type: 'telemetry',\n date: clockNow.timeStamp,\n service: telemetryService,\n version: \"6.22.0\",\n source: 'browser',\n _dd: {\n format_version: 2,\n },\n telemetry: combine(rawEvent, {\n runtime_env: runtimeEnvInfo,\n connectivity: getConnectivity(),\n sdk_setup: \"npm\",\n }),\n ddtags: buildTags(configuration).join(','),\n experimental_features: Array.from(getExperimentalFeatures()),\n };\n return combine(event, defaultTelemetryEventAttributes);\n }\n}\nfunction startTelemetryTransport(configuration, reportError, pageMayExitObservable, createEncoder, telemetryObservable) {\n const cleanupTasks = [];\n if (canUseEventBridge()) {\n const bridge = getEventBridge();\n const telemetrySubscription = telemetryObservable.subscribe((event) => bridge.send('internal_telemetry', event));\n cleanupTasks.push(telemetrySubscription.unsubscribe);\n }\n else {\n const endpoints = [configuration.rumEndpointBuilder];\n if (configuration.replica && isTelemetryReplicationAllowed(configuration)) {\n endpoints.push(configuration.replica.rumEndpointBuilder);\n }\n const telemetryBatch = createBatch({\n encoder: createEncoder(4 /* DeflateEncoderStreamId.TELEMETRY */),\n request: createHttpRequest(endpoints, configuration.batchBytesLimit, reportError),\n flushController: createFlushController({\n messagesLimit: configuration.batchMessagesLimit,\n bytesLimit: configuration.batchBytesLimit,\n durationLimit: configuration.flushTimeout,\n pageMayExitObservable,\n // We don't use an actual session expire observable here, to make telemetry collection\n // independent of the session. This allows to start and send telemetry events earlier.\n sessionExpireObservable: new Observable(),\n }),\n messageBytesLimit: configuration.messageBytesLimit,\n });\n cleanupTasks.push(telemetryBatch.stop);\n const telemetrySubscription = telemetryObservable.subscribe(telemetryBatch.add);\n cleanupTasks.push(telemetrySubscription.unsubscribe);\n }\n return {\n stop: () => cleanupTasks.forEach((task) => task()),\n };\n}\nfunction getRuntimeEnvInfo() {\n var _a;\n return {\n is_local_file: ((_a = globalObject.location) === null || _a === void 0 ? void 0 : _a.protocol) === 'file:',\n is_worker: isWorkerEnvironment,\n };\n}\nexport function resetTelemetry() {\n telemetryObservable = undefined;\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nfunction isTelemetryReplicationAllowed(configuration) {\n return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.LOG,\n message,\n status: \"debug\" /* StatusType.debug */,\n ...context,\n },\n });\n}\nexport function addTelemetryError(e, context) {\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.LOG,\n status: \"error\" /* StatusType.error */,\n ...formatError(e),\n ...context,\n },\n });\n}\nexport function addTelemetryConfiguration(configuration) {\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.CONFIGURATION,\n configuration,\n },\n });\n}\nexport function addTelemetryMetrics(metricName, context) {\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.LOG,\n message: metricName,\n status: \"debug\" /* StatusType.debug */,\n ...context,\n },\n metricName,\n });\n}\nexport function addTelemetryUsage(usage) {\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.USAGE,\n usage,\n },\n });\n}\nexport function formatError(e) {\n if (isError(e)) {\n const stackTrace = computeStackTrace(e);\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n },\n message: stackTrace.message,\n };\n }\n return {\n error: {\n stack: NO_ERROR_STACK_PRESENT_MESSAGE,\n },\n message: `${\"Uncaught\" /* NonErrorPrefix.UNCAUGHT */} ${jsonStringify(e)}`,\n };\n}\nexport function scrubCustomerFrames(stackTrace) {\n stackTrace.stack = stackTrace.stack.filter((frame) => !frame.url || ALLOWED_FRAME_URLS.some((allowedFrameUrl) => frame.url.startsWith(allowedFrameUrl)));\n return stackTrace;\n}\n//# sourceMappingURL=telemetry.js.map","export function removeDuplicates(array) {\n const set = new Set();\n array.forEach((item) => set.add(item));\n return Array.from(set);\n}\nexport function removeItem(array, item) {\n const index = array.indexOf(item);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\nexport function isNonEmptyArray(value) {\n return Array.isArray(value) && value.length > 0;\n}\n//# sourceMappingURL=arrayUtils.js.map","import { setInterval, clearInterval } from './timer';\nimport { removeItem } from './utils/arrayUtils';\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils';\nconst END_OF_TIMES = Infinity;\nexport const CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE;\nlet cleanupHistoriesInterval = null;\nconst cleanupTasks = new Set();\nfunction cleanupHistories() {\n cleanupTasks.forEach((task) => task());\n}\nexport function createValueHistory({ expireDelay, maxEntries, }) {\n let entries = [];\n if (!cleanupHistoriesInterval) {\n cleanupHistoriesInterval = setInterval(() => cleanupHistories(), CLEAR_OLD_VALUES_INTERVAL);\n }\n const clearExpiredValues = () => {\n const oldTimeThreshold = relativeNow() - expireDelay;\n while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {\n entries.pop();\n }\n };\n cleanupTasks.add(clearExpiredValues);\n /**\n * Add a value to the history associated with a start time. Returns a reference to this newly\n * added entry that can be removed or closed.\n */\n function add(value, startTime) {\n const entry = {\n value,\n startTime,\n endTime: END_OF_TIMES,\n remove: () => {\n removeItem(entries, entry);\n },\n close: (endTime) => {\n entry.endTime = endTime;\n },\n };\n if (maxEntries && entries.length >= maxEntries) {\n entries.pop();\n }\n entries.unshift(entry);\n return entry;\n }\n /**\n * Return the latest value that was active during `startTime`, or the currently active value\n * if no `startTime` is provided. This method assumes that entries are not overlapping.\n *\n * If `option.returnInactive` is true, returns the value at `startTime` (active or not).\n */\n function find(startTime = END_OF_TIMES, options = { returnInactive: false }) {\n for (const entry of entries) {\n if (entry.startTime <= startTime) {\n if (options.returnInactive || startTime <= entry.endTime) {\n return entry.value;\n }\n break;\n }\n }\n }\n /**\n * Helper function to close the currently active value, if any. This method assumes that entries\n * are not overlapping.\n */\n function closeActive(endTime) {\n const latestEntry = entries[0];\n if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n latestEntry.close(endTime);\n }\n }\n /**\n * Return all values with an active period overlapping with the duration,\n * or all values that were active during `startTime` if no duration is provided,\n * or all currently active values if no `startTime` is provided.\n */\n function findAll(startTime = END_OF_TIMES, duration = 0) {\n const endTime = addDuration(startTime, duration);\n return entries\n .filter((entry) => entry.startTime <= endTime && startTime <= entry.endTime)\n .map((entry) => entry.value);\n }\n /**\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 cleanupTasks.delete(clearExpiredValues);\n if (cleanupTasks.size === 0 && cleanupHistoriesInterval) {\n clearInterval(cleanupHistoriesInterval);\n cleanupHistoriesInterval = null;\n }\n }\n return { add, find, closeActive, findAll, reset, stop };\n}\n//# sourceMappingURL=valueHistory.js.map","import { getInitCookie } from '../../browser/cookie';\nimport { globalObject, isWorkerEnvironment } from '../../tools/globalObject';\nexport const SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport const SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport const SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function willSyntheticsInjectRum() {\n if (isWorkerEnvironment) {\n // We don't expect to run synthetics tests in a worker environment\n return false;\n }\n return Boolean(globalObject._DATADOG_SYNTHETICS_INJECTS_RUM || getInitCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n const value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getInitCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n const value = window._DATADOG_SYNTHETICS_RESULT_ID || getInitCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\nexport function isSyntheticsTest() {\n return Boolean(getSyntheticsTestId() && getSyntheticsResultId());\n}\n//# sourceMappingURL=syntheticsWorkerValues.js.map","import { Observable } from '../../tools/observable';\nimport { createValueHistory } from '../../tools/valueHistory';\nimport { clocksOrigin, dateNow, ONE_MINUTE, relativeNow } from '../../tools/utils/timeUtils';\nimport { addEventListener, addEventListeners } from '../../browser/addEventListener';\nimport { clearInterval, setInterval } from '../../tools/timer';\nimport { addTelemetryDebug } from '../telemetry';\nimport { isSyntheticsTest } from '../synthetics/syntheticsWorkerValues';\nimport { getCurrentSite } from '../../browser/cookie';\nimport { ExperimentalFeature, isExperimentalFeatureEnabled } from '../../tools/experimentalFeatures';\nimport { findLast } from '../../tools/utils/polyfills';\nimport { monitorError } from '../../tools/monitor';\nimport { SESSION_NOT_TRACKED, SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { startSessionStore } from './sessionStore';\nimport { toSessionState } from './sessionState';\nimport { retrieveSessionCookie } from './storeStrategies/sessionInCookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nexport const VISIBILITY_CHECK_DELAY = ONE_MINUTE;\nconst SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nlet stopCallbacks = [];\nexport function startSessionManager(configuration, productKey, computeTrackingType, trackingConsentState) {\n const renewObservable = new Observable();\n const expireObservable = new Observable();\n // TODO - Improve configuration type and remove assertion\n const sessionStore = startSessionStore(configuration.sessionStoreStrategyType, configuration, productKey, computeTrackingType);\n stopCallbacks.push(() => sessionStore.stop());\n const sessionContextHistory = createValueHistory({\n expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY,\n });\n stopCallbacks.push(() => sessionContextHistory.stop());\n sessionStore.renewObservable.subscribe(() => {\n sessionContextHistory.add(buildSessionContext(), relativeNow());\n renewObservable.notify();\n });\n sessionStore.expireObservable.subscribe(() => {\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 if (isExperimentalFeatureEnabled(ExperimentalFeature.SHORT_SESSION_INVESTIGATION)) {\n const session = sessionStore.getSession();\n if (session) {\n detectSessionIdChange(configuration, session);\n }\n }\n trackingConsentState.observable.subscribe(() => {\n if (trackingConsentState.isGranted()) {\n sessionStore.expandOrRenewSession();\n }\n else {\n sessionStore.expire();\n }\n });\n trackActivity(configuration, () => {\n if (trackingConsentState.isGranted()) {\n sessionStore.expandOrRenewSession();\n }\n });\n trackVisibility(configuration, () => sessionStore.expandSession());\n trackResume(configuration, () => sessionStore.restartSession());\n function buildSessionContext() {\n const session = sessionStore.getSession();\n if (!session) {\n reportUnexpectedSessionState().catch(() => void 0); // Ignore errors\n return {\n id: 'invalid',\n trackingType: SESSION_NOT_TRACKED,\n isReplayForced: false,\n anonymousId: undefined,\n };\n }\n return {\n id: session.id,\n trackingType: session[productKey],\n isReplayForced: !!session.forcedReplay,\n anonymousId: session.anonymousId,\n };\n }\n return {\n findSession: (startTime, options) => sessionContextHistory.find(startTime, options),\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,\n expire: sessionStore.expire,\n updateSessionState: sessionStore.updateSessionState,\n };\n}\nexport function stopSessionManager() {\n stopCallbacks.forEach((e) => e());\n stopCallbacks = [];\n}\nfunction trackActivity(configuration, expandOrRenewSession) {\n const { 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 });\n stopCallbacks.push(stop);\n}\nfunction trackVisibility(configuration, expandSession) {\n const expandSessionWhenVisible = () => {\n if (document.visibilityState === 'visible') {\n expandSession();\n }\n };\n const { stop } = addEventListener(configuration, document, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, expandSessionWhenVisible);\n stopCallbacks.push(stop);\n const visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);\n stopCallbacks.push(() => {\n clearInterval(visibilityCheckInterval);\n });\n}\nfunction trackResume(configuration, cb) {\n const { stop } = addEventListener(configuration, window, \"resume\" /* DOM_EVENT.RESUME */, cb, { capture: true });\n stopCallbacks.push(stop);\n}\nasync function reportUnexpectedSessionState() {\n const rawSession = retrieveSessionCookie();\n // monitor-until: forever, could be handy to troubleshoot issues until session manager rework\n addTelemetryDebug('Unexpected session state', {\n session: rawSession,\n isSyntheticsTest: isSyntheticsTest(),\n createdTimestamp: rawSession === null || rawSession === void 0 ? void 0 : rawSession.created,\n expireTimestamp: rawSession === null || rawSession === void 0 ? void 0 : rawSession.expire,\n cookie: await getSessionCookies(),\n currentDomain: `${window.location.protocol}//${window.location.hostname}`,\n });\n}\nfunction detectSessionIdChange(configuration, initialSessionState) {\n if (!window.cookieStore || !initialSessionState.created) {\n return;\n }\n const sessionCreatedTime = Number(initialSessionState.created);\n const sdkInitTime = dateNow();\n const { stop } = addEventListener(configuration, cookieStore, \"change\" /* DOM_EVENT.CHANGE */, listener);\n stopCallbacks.push(stop);\n function listener(event) {\n const changed = findLast(event.changed, (change) => change.name === SESSION_STORE_KEY);\n if (!changed) {\n return;\n }\n const sessionAge = dateNow() - sessionCreatedTime;\n if (sessionAge > 14 * ONE_MINUTE) {\n // The session might have expired just because it's too old or lack activity\n stop();\n }\n else {\n const newSessionState = toSessionState(changed.value);\n if (newSessionState.id && newSessionState.id !== initialSessionState.id) {\n stop();\n const time = dateNow() - sdkInitTime;\n getSessionCookies()\n .then((cookie) => {\n // monitor-until: 2025-12-01, after RUM-10845 investigation done\n addTelemetryDebug('Session cookie changed', {\n time,\n session_age: sessionAge,\n old: initialSessionState,\n new: newSessionState,\n cookie,\n });\n })\n .catch(monitorError);\n }\n }\n }\n}\nasync function getSessionCookies() {\n let sessionCookies;\n if ('cookieStore' in window) {\n sessionCookies = await window.cookieStore.getAll(SESSION_STORE_KEY);\n }\n else {\n sessionCookies = document.cookie.split(/\\s*;\\s*/).filter((cookie) => cookie.startsWith(SESSION_STORE_KEY));\n }\n return {\n count: sessionCookies.length,\n domain: getCurrentSite() || 'undefined',\n ...sessionCookies,\n };\n}\n//# sourceMappingURL=sessionManager.js.map","import { computeBytesCount } from './utils/byteUtils';\nexport function createIdentityEncoder() {\n let output = '';\n let outputBytesCount = 0;\n return {\n isAsync: false,\n get isEmpty() {\n return !output;\n },\n write(data, callback) {\n const additionalEncodedBytesCount = computeBytesCount(data);\n outputBytesCount += additionalEncodedBytesCount;\n output += data;\n if (callback) {\n callback(additionalEncodedBytesCount);\n }\n },\n finish(callback) {\n callback(this.finishSync());\n },\n finishSync() {\n const result = {\n output,\n outputBytesCount,\n rawBytesCount: outputBytesCount,\n pendingData: '',\n };\n output = '';\n outputBytesCount = 0;\n return result;\n },\n estimateEncodedBytesCount(data) {\n return data.length;\n },\n };\n}\n//# sourceMappingURL=encoder.js.map","// eslint-disable-next-line no-restricted-syntax\nexport class AbstractLifeCycle {\n constructor() {\n this.callbacks = {};\n }\n notify(eventType, data) {\n const eventCallbacks = this.callbacks[eventType];\n if (eventCallbacks) {\n eventCallbacks.forEach((callback) => callback(data));\n }\n }\n subscribe(eventType, callback) {\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = [];\n }\n this.callbacks[eventType].push(callback);\n return {\n unsubscribe: () => {\n this.callbacks[eventType] = this.callbacks[eventType].filter((other) => callback !== other);\n },\n };\n }\n}\n//# sourceMappingURL=abstractLifeCycle.js.map","import { setTimeout } from '../../tools/timer';\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { ErrorSource } from '../error/error.types';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n let eventCount = 0;\n let allowNextEvent = false;\n return {\n isLimitReached() {\n if (eventCount === 0) {\n setTimeout(() => {\n eventCount = 0;\n }, ONE_MINUTE);\n }\n eventCount += 1;\n if (eventCount <= limit || allowNextEvent) {\n allowNextEvent = false;\n return false;\n }\n if (eventCount === limit + 1) {\n allowNextEvent = true;\n try {\n onLimitReached({\n message: `Reached max number of ${eventType}s by minute: ${limit}`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n });\n }\n finally {\n allowNextEvent = false;\n }\n }\n return true;\n },\n };\n}\n//# sourceMappingURL=createEventRateLimiter.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, clocksNow, timeStampNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { shallowClone } from '../tools/utils/objectUtils';\nimport { addEventListener } from './addEventListener';\nlet xhrObservable;\nconst xhrContexts = new WeakMap();\nexport function initXhrObservable(configuration) {\n if (!xhrObservable) {\n xhrObservable = createXhrObservable(configuration);\n }\n return xhrObservable;\n}\nfunction createXhrObservable(configuration) {\n return new Observable((observable) => {\n const { stop: stopInstrumentingStart } = instrumentMethod(XMLHttpRequest.prototype, 'open', openXhr);\n const { stop: stopInstrumentingSend } = instrumentMethod(XMLHttpRequest.prototype, 'send', (call) => {\n sendXhr(call, configuration, observable);\n }, { computeHandlingStack: true });\n const { stop: stopInstrumentingAbort } = instrumentMethod(XMLHttpRequest.prototype, 'abort', abortXhr);\n return () => {\n stopInstrumentingStart();\n stopInstrumentingSend();\n stopInstrumentingAbort();\n };\n });\n}\nfunction openXhr({ target: xhr, parameters: [method, url] }) {\n xhrContexts.set(xhr, {\n state: 'open',\n method: String(method).toUpperCase(),\n url: normalizeUrl(String(url)),\n });\n}\nfunction sendXhr({ target: xhr, parameters: [body], handlingStack }, configuration, observable) {\n const context = xhrContexts.get(xhr);\n if (!context) {\n return;\n }\n const startContext = context;\n startContext.state = 'start';\n startContext.startClocks = clocksNow();\n startContext.isAborted = false;\n startContext.xhr = xhr;\n startContext.handlingStack = handlingStack;\n startContext.body = body;\n let hasBeenReported = false;\n const { stop: stopInstrumentingOnReadyStateChange } = instrumentMethod(xhr, 'onreadystatechange', () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n // application during a future event. For example, Angular is calling .abort() on\n // completed requests during an onreadystatechange event, so the status becomes '0'\n // before the request is collected.\n onEnd();\n }\n });\n const onEnd = () => {\n unsubscribeLoadEndListener();\n stopInstrumentingOnReadyStateChange();\n if (hasBeenReported) {\n return;\n }\n hasBeenReported = true;\n const completeContext = context;\n completeContext.state = 'complete';\n completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n completeContext.status = xhr.status;\n observable.notify(shallowClone(completeContext));\n };\n const { stop: unsubscribeLoadEndListener } = addEventListener(configuration, xhr, 'loadend', onEnd);\n observable.notify(startContext);\n}\nfunction abortXhr({ target: xhr }) {\n const context = xhrContexts.get(xhr);\n if (context) {\n context.isAborted = true;\n }\n}\n//# sourceMappingURL=xhrObservable.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { clocksNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { globalObject } from '../tools/globalObject';\nlet fetchObservable;\nexport function initFetchObservable() {\n if (!fetchObservable) {\n fetchObservable = createFetchObservable();\n }\n return fetchObservable;\n}\nexport function resetFetchObservable() {\n fetchObservable = undefined;\n}\nfunction createFetchObservable() {\n return new Observable((observable) => {\n if (!globalObject.fetch) {\n return;\n }\n const { stop } = instrumentMethod(globalObject, 'fetch', (call) => beforeSend(call, observable), {\n computeHandlingStack: true,\n });\n return stop;\n });\n}\nfunction beforeSend({ parameters, onPostCall, handlingStack }, observable) {\n const [input, init] = parameters;\n let methodFromParams = init && init.method;\n if (methodFromParams === undefined && input instanceof Request) {\n methodFromParams = input.method;\n }\n const method = methodFromParams !== undefined ? String(methodFromParams).toUpperCase() : 'GET';\n const url = input instanceof Request ? input.url : normalizeUrl(String(input));\n const startClocks = clocksNow();\n const context = {\n state: 'start',\n init,\n input,\n method,\n startClocks,\n url,\n handlingStack,\n };\n observable.notify(context);\n // Those properties can be changed by observable subscribers\n parameters[0] = context.input;\n parameters[1] = context.init;\n onPostCall((responsePromise) => afterSend(observable, responsePromise, context));\n}\nfunction afterSend(observable, responsePromise, startContext) {\n const context = startContext;\n function reportFetch(partialContext) {\n context.state = 'resolve';\n Object.assign(context, partialContext);\n observable.notify(context);\n }\n responsePromise.then(monitor((response) => {\n reportFetch({\n response,\n responseType: response.type,\n status: response.status,\n isAborted: false,\n });\n }), monitor((error) => {\n var _a, _b;\n reportFetch({\n status: 0,\n isAborted: ((_b = (_a = context.init) === null || _a === void 0 ? void 0 : _a.signal) === null || _b === void 0 ? void 0 : _b.aborted) || (error instanceof DOMException && error.code === DOMException.ABORT_ERR),\n error,\n });\n }));\n}\n//# sourceMappingURL=fetchObservable.js.map","import { isError, computeRawError } 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 { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { ErrorSource } from '../error/error.types';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { createHandlingStack, formatErrorMessage } from '../../tools/stackTrace/handlingStack';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nlet consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n const consoleObservables = apis.map((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(...consoleObservables);\n}\nexport function resetConsoleObservable() {\n consoleObservablesByApi = {};\n}\nfunction createConsoleObservable(api) {\n return new Observable((observable) => {\n const originalConsoleApi = globalConsole[api];\n globalConsole[api] = (...params) => {\n originalConsoleApi.apply(console, params);\n const handlingStack = createHandlingStack('console error');\n callMonitored(() => {\n observable.notify(buildConsoleLog(params, api, handlingStack));\n });\n };\n return () => {\n globalConsole[api] = originalConsoleApi;\n };\n });\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n const message = params.map((param) => formatConsoleParameters(param)).join(' ');\n if (api === ConsoleApiName.error) {\n const firstErrorParam = params.find(isError);\n const rawError = computeRawError({\n originalError: firstErrorParam,\n handlingStack,\n startClocks: clocksNow(),\n source: ErrorSource.CONSOLE,\n handling: \"handled\" /* ErrorHandling.HANDLED */,\n nonErrorPrefix: \"Provided\" /* NonErrorPrefix.PROVIDED */,\n // if no good stack is computed from the error, let's not use the fallback stack message\n // advising the user to use an instance of Error, as console.error is commonly used without an\n // Error instance.\n useFallbackStack: false,\n });\n // Use the full log message as the error message instead of just the error instance message.\n rawError.message = message;\n return {\n api,\n message,\n handlingStack,\n error: rawError,\n };\n }\n return {\n api,\n message,\n error: undefined,\n 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 { removeItem } from './utils/arrayUtils';\nconst BUFFER_LIMIT = 500;\n/**\n * createBoundedBuffer creates a BoundedBuffer.\n *\n * @deprecated Use `BufferedObservable` instead.\n */\nexport function createBoundedBuffer() {\n const buffer = [];\n const add = (callback) => {\n const length = buffer.push(callback);\n if (length > BUFFER_LIMIT) {\n buffer.splice(0, 1);\n }\n };\n const remove = (callback) => {\n removeItem(buffer, callback);\n };\n const drain = (arg) => {\n buffer.forEach((callback) => callback(arg));\n buffer.length = 0;\n };\n return {\n add,\n remove,\n drain,\n };\n}\n//# sourceMappingURL=boundedBuffer.js.map","import { display } from '../../tools/display';\nimport { getType } from '../../tools/utils/typeUtils';\n/**\n * Simple check to ensure an object is a valid context\n */\nexport function checkContext(maybeContext) {\n const isValid = getType(maybeContext) === 'object';\n if (!isValid) {\n display.error('Unsupported context:', maybeContext);\n }\n return isValid;\n}\n//# sourceMappingURL=contextUtils.js.map","import { deepClone } from '../../tools/mergeInto';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { Observable } from '../../tools/observable';\nimport { display } from '../../tools/display';\nimport { checkContext } from './contextUtils';\nfunction ensureProperties(context, propertiesConfig, name) {\n const newContext = { ...context };\n for (const [key, { required, type }] of Object.entries(propertiesConfig)) {\n /**\n * Ensure specified properties are strings as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\n if (type === 'string' && !isDefined(newContext[key])) {\n /* eslint-disable @typescript-eslint/no-base-to-string */\n newContext[key] = String(newContext[key]);\n }\n if (required && isDefined(newContext[key])) {\n display.warn(`The property ${key} of ${name} is required; context will not be sent to the intake.`);\n }\n }\n return newContext;\n}\nfunction isDefined(value) {\n return value === undefined || value === null || value === '';\n}\nexport function createContextManager(name = '', { propertiesConfig = {}, } = {}) {\n let context = {};\n const changeObservable = new Observable();\n const contextManager = {\n getContext: () => deepClone(context),\n setContext: (newContext) => {\n if (checkContext(newContext)) {\n context = sanitize(ensureProperties(newContext, propertiesConfig, name));\n }\n else {\n contextManager.clearContext();\n }\n changeObservable.notify();\n },\n setContextProperty: (key, property) => {\n context = sanitize(ensureProperties({ ...context, [key]: property }, propertiesConfig, name));\n changeObservable.notify();\n },\n removeContextProperty: (key) => {\n delete context[key];\n ensureProperties(context, propertiesConfig, name);\n changeObservable.notify();\n },\n clearContext: () => {\n context = {};\n changeObservable.notify();\n },\n changeObservable,\n };\n return contextManager;\n}\n//# sourceMappingURL=contextManager.js.map","import { addTelemetryUsage } from '../telemetry';\nimport { monitor } from '../../tools/monitor';\nexport function defineContextMethod(getStrategy, contextName, methodName, usage) {\n return monitor((...args) => {\n if (usage) {\n addTelemetryUsage({ feature: usage });\n }\n return getStrategy()[contextName][methodName](...args);\n });\n}\nexport function bufferContextCalls(preStartContextManager, name, bufferApiCalls) {\n preStartContextManager.changeObservable.subscribe(() => {\n const context = preStartContextManager.getContext();\n bufferApiCalls.add((startResult) => startResult[name].setContext(context));\n });\n}\n//# sourceMappingURL=defineContextMethod.js.map","import { addEventListener } from '../../browser/addEventListener';\nimport { combine } from '../../tools/mergeInto';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\nconst CONTEXT_STORE_KEY_PREFIX = '_dd_c';\nconst storageListeners = [];\nexport function storeContextManager(configuration, contextManager, productKey, customerDataType) {\n const storageKey = buildStorageKey(productKey, customerDataType);\n storageListeners.push(addEventListener(configuration, window, \"storage\" /* DOM_EVENT.STORAGE */, ({ key }) => {\n if (storageKey === key) {\n synchronizeWithStorage();\n }\n }));\n contextManager.changeObservable.subscribe(dumpToStorage);\n const contextFromStorage = combine(getFromStorage(), contextManager.getContext());\n if (!isEmptyObject(contextFromStorage)) {\n contextManager.setContext(contextFromStorage);\n }\n function synchronizeWithStorage() {\n contextManager.setContext(getFromStorage());\n }\n function dumpToStorage() {\n localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()));\n }\n function getFromStorage() {\n const rawContext = localStorage.getItem(storageKey);\n return rawContext ? JSON.parse(rawContext) : {};\n }\n}\nexport function buildStorageKey(productKey, customerDataType) {\n return `${CONTEXT_STORE_KEY_PREFIX}_${productKey}_${customerDataType}`;\n}\nexport function removeStorageListeners() {\n storageListeners.map((listener) => listener.stop());\n}\n//# sourceMappingURL=storeContextManager.js.map","import { storeContextManager } from '../context/storeContextManager';\nimport { SKIPPED } from '../../tools/abstractHooks';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { createContextManager } from '../context/contextManager';\nexport function startAccountContext(hooks, configuration, productKey) {\n const accountContextManager = buildAccountContextManager();\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(configuration, accountContextManager, productKey, 4 /* CustomerDataType.Account */);\n }\n hooks.register(0 /* HookNames.Assemble */, () => {\n const account = accountContextManager.getContext();\n if (isEmptyObject(account) || !account.id) {\n return SKIPPED;\n }\n return {\n account,\n };\n });\n return accountContextManager;\n}\nexport function buildAccountContextManager() {\n return createContextManager('account', {\n propertiesConfig: {\n id: { type: 'string', required: true },\n name: { type: 'string' },\n },\n });\n}\n//# sourceMappingURL=accountContext.js.map","import { storeContextManager } from '../context/storeContextManager';\nimport { createContextManager } from '../context/contextManager';\nexport function startGlobalContext(hooks, configuration, productKey, useContextNamespace) {\n const globalContextManager = buildGlobalContextManager();\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(configuration, globalContextManager, productKey, 2 /* CustomerDataType.GlobalContext */);\n }\n hooks.register(0 /* HookNames.Assemble */, () => {\n const context = globalContextManager.getContext();\n return useContextNamespace ? { context } : context;\n });\n return globalContextManager;\n}\nexport function buildGlobalContextManager() {\n return createContextManager('global context');\n}\n//# sourceMappingURL=globalContext.js.map","import { storeContextManager } from '../context/storeContextManager';\nimport { SKIPPED } from '../../tools/abstractHooks';\nimport { createContextManager } from '../context/contextManager';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\nexport function startUserContext(hooks, configuration, sessionManager, productKey) {\n const userContextManager = buildUserContextManager();\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(configuration, userContextManager, productKey, 1 /* CustomerDataType.User */);\n }\n hooks.register(0 /* HookNames.Assemble */, ({ eventType, startTime }) => {\n const user = userContextManager.getContext();\n const session = sessionManager.findTrackedSession(startTime);\n if (session && session.anonymousId && !user.anonymous_id && !!configuration.trackAnonymousUser) {\n user.anonymous_id = session.anonymousId;\n }\n if (isEmptyObject(user)) {\n return SKIPPED;\n }\n return {\n type: eventType,\n usr: user,\n };\n });\n hooks.register(1 /* HookNames.AssembleTelemetry */, ({ startTime }) => {\n var _a;\n return ({\n anonymous_id: (_a = sessionManager.findTrackedSession(startTime)) === null || _a === void 0 ? void 0 : _a.anonymousId,\n });\n });\n return userContextManager;\n}\nexport function buildUserContextManager() {\n return createContextManager('user', {\n propertiesConfig: {\n id: { type: 'string' },\n name: { type: 'string' },\n email: { type: 'string' },\n },\n });\n}\n//# sourceMappingURL=userContext.js.map","// Use a const instead of const enum to avoid inlining the enum values in the bundle and save bytes\nexport const CustomerContextKey = {\n userContext: 'userContext',\n globalContext: 'globalContext',\n accountContext: 'accountContext',\n};\n// Use a const instead of const enum to avoid inlining the enum values in the bundle and save bytes\nexport const ContextManagerMethod = {\n getContext: 'getContext',\n setContext: 'setContext',\n setContextProperty: 'setContextProperty',\n removeContextProperty: 'removeContextProperty',\n clearContext: 'clearContext',\n};\n//# sourceMappingURL=contextConstants.js.map","import { monitor } from './monitor';\nimport { noop } from './utils/functionUtils';\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nexport function readBytesFromStream(stream, callback, options) {\n const reader = stream.getReader();\n const chunks = [];\n let readBytesCount = 0;\n readMore();\n function readMore() {\n reader.read().then(monitor((result) => {\n if (result.done) {\n onDone();\n return;\n }\n if (options.collectStreamBody) {\n chunks.push(result.value);\n }\n readBytesCount += result.value.length;\n if (readBytesCount > options.bytesLimit) {\n onDone();\n }\n else {\n readMore();\n }\n }), monitor((error) => callback(error)));\n }\n function onDone() {\n reader.cancel().catch(\n // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n // as an unhandled rejection\n noop);\n let bytes;\n let limitExceeded;\n if (options.collectStreamBody) {\n let completeBuffer;\n if (chunks.length === 1) {\n // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just\n // use it directly.\n completeBuffer = chunks[0];\n }\n else {\n // else, we need to copy buffers into a larger buffer to concatenate them.\n completeBuffer = new Uint8Array(readBytesCount);\n let offset = 0;\n chunks.forEach((chunk) => {\n completeBuffer.set(chunk, offset);\n offset += chunk.length;\n });\n }\n bytes = completeBuffer.slice(0, options.bytesLimit);\n limitExceeded = completeBuffer.length > options.bytesLimit;\n }\n callback(undefined, bytes, limitExceeded);\n }\n}\n//# sourceMappingURL=readBytesFromStream.js.map","export const ResourceType = {\n DOCUMENT: 'document',\n XHR: 'xhr',\n BEACON: 'beacon',\n FETCH: 'fetch',\n CSS: 'css',\n JS: 'js',\n IMAGE: 'image',\n FONT: 'font',\n MEDIA: 'media',\n OTHER: 'other',\n};\nexport const RequestType = {\n FETCH: ResourceType.FETCH,\n XHR: ResourceType.XHR,\n};\n//# sourceMappingURL=resourceUtils.js.map","import { BufferedObservable } from '../tools/observable';\nimport { trackRuntimeError } from './error/trackRuntimeError';\nconst BUFFER_LIMIT = 500;\nexport function startBufferingData(trackRuntimeErrorImpl = trackRuntimeError) {\n const observable = new BufferedObservable(BUFFER_LIMIT);\n const runtimeErrorSubscription = trackRuntimeErrorImpl().subscribe((error) => {\n observable.notify({\n type: 0 /* BufferedDataType.RUNTIME_ERROR */,\n error,\n });\n });\n return {\n observable,\n stop: () => {\n runtimeErrorSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=bufferedData.js.map","export function isAuthorized(status, handlerType, logger) {\n const loggerHandler = logger.getHandler();\n const sanitizedHandlerType = Array.isArray(loggerHandler) ? loggerHandler : [loggerHandler];\n return STATUS_PRIORITIES[status] >= STATUS_PRIORITIES[logger.getLevel()] && sanitizedHandlerType.includes(handlerType);\n}\nexport const 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 const STATUS_PRIORITIES = {\n [StatusType.ok]: 0,\n [StatusType.debug]: 1,\n [StatusType.info]: 2,\n [StatusType.notice]: 4,\n [StatusType.warn]: 5,\n [StatusType.error]: 6,\n [StatusType.critical]: 7,\n [StatusType.alert]: 8,\n [StatusType.emerg]: 9,\n};\n//# sourceMappingURL=isAuthorized.js.map","export function createErrorFieldFromRawError(rawError, { \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 */\nincludeMessage = false, } = {}) {\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, combine, createContextManager, ErrorSource, monitored, sanitize, createHandlingStack, buildTag, sanitizeTag, } from '@datadog/browser-core';\nimport { isAuthorized, StatusType } from './logger/isAuthorized';\nimport { createErrorFieldFromRawError } from './createErrorFieldFromRawError';\nexport const HandlerType = {\n console: 'console',\n http: 'http',\n silent: 'silent',\n};\nexport const 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\nexport class Logger {\n constructor(handleLogStrategy, name, handlerType = HandlerType.http, level = StatusType.debug, loggerContext = {}) {\n this.handleLogStrategy = handleLogStrategy;\n this.handlerType = handlerType;\n this.level = level;\n this.contextManager = createContextManager('logger');\n this.tags = [];\n this.contextManager.setContext(loggerContext);\n if (name) {\n this.contextManager.setContextProperty('logger', { name });\n }\n }\n logImplementation(message, messageContext, status = StatusType.info, error, handlingStack) {\n const sanitizedMessageContext = sanitize(messageContext);\n let context;\n if (error !== undefined && error !== null) {\n const rawError = computeRawError({\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 }, rawError.context, sanitizedMessageContext);\n }\n else {\n context = sanitizedMessageContext;\n }\n this.handleLogStrategy({\n message: sanitize(message),\n context,\n status,\n }, this, handlingStack);\n }\n log(message, messageContext, status = StatusType.info, error) {\n let handlingStack;\n if (isAuthorized(status, HandlerType.http, this)) {\n handlingStack = createHandlingStack('log');\n }\n this.logImplementation(message, messageContext, status, error, handlingStack);\n }\n setContext(context) {\n this.contextManager.setContext(context);\n }\n getContext() {\n return this.contextManager.getContext();\n }\n setContextProperty(key, value) {\n this.contextManager.setContextProperty(key, value);\n }\n removeContextProperty(key) {\n this.contextManager.removeContextProperty(key);\n }\n clearContext() {\n this.contextManager.clearContext();\n }\n addTag(key, value) {\n this.tags.push(buildTag(key, value));\n }\n removeTagsWithKey(key) {\n const sanitizedKey = sanitizeTag(key);\n this.tags = this.tags.filter((tag) => tag !== sanitizedKey && !tag.startsWith(`${sanitizedKey}:`));\n }\n getTags() {\n return this.tags.slice();\n }\n setHandler(handler) {\n this.handlerType = handler;\n }\n getHandler() {\n return this.handlerType;\n }\n setLevel(level) {\n this.level = level;\n }\n getLevel() {\n return this.level;\n }\n}\n__decorate([\n monitored\n], Logger.prototype, \"logImplementation\", null);\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 let handlingStack;\n if (isAuthorized(status, HandlerType.http, this)) {\n handlingStack = createHandlingStack('log');\n }\n this.logImplementation(message, messageContext, status, error, handlingStack);\n };\n}\n//# sourceMappingURL=logger.js.map","import { isWorkerEnvironment } from '@datadog/browser-core';\nexport function buildCommonContext() {\n if (isWorkerEnvironment) {\n return {};\n }\n return {\n view: {\n referrer: document.referrer,\n url: window.location.href,\n },\n };\n}\n//# sourceMappingURL=commonContext.js.map","import { serializeConfiguration, ONE_KIBI_BYTE, validateAndBuildConfiguration, display, removeDuplicates, ConsoleApiName, RawReportType, objectValues, } from '@datadog/browser-core';\n/**\n * arbitrary value, byte precision not needed\n */\nexport const DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT = 32 * ONE_KIBI_BYTE;\nexport function validateAndBuildLogsConfiguration(initConfiguration, errorStack) {\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 const baseConfiguration = validateAndBuildConfiguration(initConfiguration, errorStack);\n const forwardConsoleLogs = validateAndBuildForwardOption(initConfiguration.forwardConsoleLogs, objectValues(ConsoleApiName), 'Forward Console Logs');\n const forwardReports = validateAndBuildForwardOption(initConfiguration.forwardReports, objectValues(RawReportType), 'Forward Reports');\n if (!baseConfiguration || !forwardConsoleLogs || !forwardReports) {\n return;\n }\n if (initConfiguration.forwardErrorsToLogs && !forwardConsoleLogs.includes(ConsoleApiName.error)) {\n forwardConsoleLogs.push(ConsoleApiName.error);\n }\n return {\n forwardErrorsToLogs: initConfiguration.forwardErrorsToLogs !== false,\n forwardConsoleLogs,\n forwardReports,\n requestErrorResponseLengthLimit: DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT,\n ...baseConfiguration,\n };\n}\nexport function validateAndBuildForwardOption(option, allowedValues, label) {\n if (option === undefined) {\n return [];\n }\n if (!(option === 'all' || (Array.isArray(option) && option.every((api) => allowedValues.includes(api))))) {\n display.error(`${label} should be \"all\" or an array with allowed values \"${allowedValues.join('\", \"')}\"`);\n return;\n }\n return option === 'all' ? allowedValues : removeDuplicates(option);\n}\nexport function serializeLogsConfiguration(configuration) {\n const baseSerializedInitConfiguration = serializeConfiguration(configuration);\n return {\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 ...baseSerializedInitConfiguration,\n };\n}\n//# sourceMappingURL=configuration.js.map","import { createBoundedBuffer, canUseEventBridge, display, displayAlreadyInitializedError, initFeatureFlags, initFetchObservable, noop, timeStampNow, buildAccountContextManager, CustomerContextKey, bufferContextCalls, addTelemetryConfiguration, buildGlobalContextManager, buildUserContextManager, } from '@datadog/browser-core';\nimport { serializeLogsConfiguration, validateAndBuildLogsConfiguration } from '../domain/configuration';\nexport function createPreStartStrategy(getCommonContext, trackingConsentState, doStartLogs) {\n const bufferApiCalls = createBoundedBuffer();\n // TODO next major: remove the globalContext, accountContextManager, userContext from preStartStrategy and use an empty context instead\n const globalContext = buildGlobalContextManager();\n bufferContextCalls(globalContext, CustomerContextKey.globalContext, bufferApiCalls);\n const accountContext = buildAccountContextManager();\n bufferContextCalls(accountContext, CustomerContextKey.accountContext, bufferApiCalls);\n const userContext = buildUserContextManager();\n bufferContextCalls(userContext, CustomerContextKey.userContext, bufferApiCalls);\n let cachedInitConfiguration;\n let cachedConfiguration;\n const trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartLogs);\n function tryStartLogs() {\n if (!cachedConfiguration || !cachedInitConfiguration || !trackingConsentState.isGranted()) {\n return;\n }\n trackingConsentStateSubscription.unsubscribe();\n const startLogsResult = doStartLogs(cachedInitConfiguration, cachedConfiguration);\n bufferApiCalls.drain(startLogsResult);\n }\n return {\n init(initConfiguration, errorStack) {\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 addTelemetryConfiguration(serializeLogsConfiguration(initConfiguration));\n if (cachedConfiguration) {\n displayAlreadyInitializedError('DD_LOGS', initConfiguration);\n return;\n }\n const configuration = validateAndBuildLogsConfiguration(initConfiguration, errorStack);\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 globalContext,\n accountContext,\n userContext,\n getInternalContext: noop,\n handleLog(message, statusType, handlingStack, context = getCommonContext(), date = timeStampNow()) {\n bufferApiCalls.add((startLogsResult) => startLogsResult.handleLog(message, statusType, handlingStack, context, date));\n },\n };\n}\nfunction overrideInitConfigurationForBridge(initConfiguration) {\n return { ...initConfiguration, clientToken: 'empty' };\n}\n//# sourceMappingURL=preStartLogs.js.map","import { ContextManagerMethod, CustomerContextKey, addTelemetryUsage, makePublicApi, monitor, sanitize, displayAlreadyInitializedError, deepClone, createTrackingConsentState, defineContextMethod, startBufferingData, callMonitored, } from '@datadog/browser-core';\nimport { Logger } from '../domain/logger';\nimport { buildCommonContext } from '../domain/contexts/commonContext';\nimport { createPreStartStrategy } from './preStartLogs';\nexport function makeLogsPublicApi(startLogsImpl) {\n const trackingConsentState = createTrackingConsentState();\n const bufferedDataObservable = startBufferingData().observable;\n let strategy = createPreStartStrategy(buildCommonContext, trackingConsentState, (initConfiguration, configuration) => {\n const startLogsResult = startLogsImpl(configuration, buildCommonContext, trackingConsentState, bufferedDataObservable);\n strategy = createPostStartStrategy(initConfiguration, startLogsResult);\n return startLogsResult;\n });\n const getStrategy = () => strategy;\n const customLoggers = {};\n const mainLogger = new Logger((...params) => strategy.handleLog(...params));\n return makePublicApi({\n logger: mainLogger,\n init: (initConfiguration) => {\n const errorStack = new Error().stack;\n callMonitored(() => strategy.init(initConfiguration, errorStack));\n },\n setTrackingConsent: monitor((trackingConsent) => {\n trackingConsentState.update(trackingConsent);\n addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent });\n }),\n getGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.getContext),\n setGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.setContext),\n setGlobalContextProperty: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.setContextProperty),\n removeGlobalContextProperty: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.removeContextProperty),\n clearGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.clearContext),\n createLogger: monitor((name, conf = {}) => {\n customLoggers[name] = new Logger((...params) => strategy.handleLog(...params), sanitize(name), conf.handler, conf.level, sanitize(conf.context));\n return customLoggers[name];\n }),\n getLogger: monitor((name) => customLoggers[name]),\n getInitConfiguration: monitor(() => deepClone(strategy.initConfiguration)),\n getInternalContext: monitor((startTime) => strategy.getInternalContext(startTime)),\n setUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.setContext),\n getUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.getContext),\n setUserProperty: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.setContextProperty),\n removeUserProperty: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.removeContextProperty),\n clearUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.clearContext),\n setAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.setContext),\n getAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.getContext),\n setAccountProperty: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.setContextProperty),\n removeAccountProperty: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.removeContextProperty),\n clearAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.clearContext),\n });\n}\nfunction createPostStartStrategy(initConfiguration, startLogsResult) {\n return {\n init: (initConfiguration) => {\n displayAlreadyInitializedError('DD_LOGS', initConfiguration);\n },\n initConfiguration,\n ...startLogsResult,\n };\n}\n//# sourceMappingURL=logsPublicApi.js.map","import { Observable, performDraw, SESSION_NOT_TRACKED, startSessionManager } from '@datadog/browser-core';\nexport const LOGS_SESSION_KEY = 'logs';\nexport function startLogsSessionManager(configuration, trackingConsentState) {\n const sessionManager = startSessionManager(configuration, LOGS_SESSION_KEY, (rawTrackingType) => computeTrackingType(configuration, rawTrackingType), trackingConsentState);\n return {\n findTrackedSession: (startTime, options = { returnInactive: false }) => {\n const session = sessionManager.findSession(startTime, options);\n return session && session.trackingType === \"1\" /* LoggerTrackingType.TRACKED */\n ? {\n id: session.id,\n anonymousId: session.anonymousId,\n }\n : undefined;\n },\n expireObservable: sessionManager.expireObservable,\n };\n}\nexport function startLogsSessionManagerStub(configuration) {\n const isTracked = computeTrackingType(configuration) === \"1\" /* LoggerTrackingType.TRACKED */;\n const session = isTracked ? {} : undefined;\n return {\n findTrackedSession: () => session,\n expireObservable: new Observable(),\n };\n}\nfunction computeTrackingType(configuration, rawTrackingType) {\n if (hasValidLoggerSession(rawTrackingType)) {\n return rawTrackingType;\n }\n if (!performDraw(configuration.sessionSampleRate)) {\n return \"0\" /* LoggerTrackingType.NOT_TRACKED */;\n }\n return \"1\" /* LoggerTrackingType.TRACKED */;\n}\nfunction hasValidLoggerSession(trackingType) {\n return trackingType === \"0\" /* LoggerTrackingType.NOT_TRACKED */ || trackingType === \"1\" /* LoggerTrackingType.TRACKED */;\n}\n//# sourceMappingURL=logsSessionManager.js.map","import { DISCARDED, ErrorSource, buildTags, combine, createEventRateLimiter, getRelativeTime, } from '@datadog/browser-core';\nimport { STATUSES } from './logger';\nexport function startLogsAssembly(configuration, lifeCycle, hooks, getCommonContext, reportError) {\n const statusWithCustom = STATUSES.concat(['custom']);\n const logRateLimiters = {};\n statusWithCustom.forEach((status) => {\n logRateLimiters[status] = createEventRateLimiter(status, configuration.eventRateLimiterThreshold, reportError);\n });\n lifeCycle.subscribe(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, ({ rawLogsEvent, messageContext = undefined, savedCommonContext = undefined, domainContext, ddtags = [] }) => {\n var _a, _b;\n const startTime = getRelativeTime(rawLogsEvent.date);\n const commonContext = savedCommonContext || getCommonContext();\n const defaultLogsEventAttributes = hooks.triggerHook(0 /* HookNames.Assemble */, {\n startTime,\n });\n if (defaultLogsEventAttributes === DISCARDED) {\n return;\n }\n const defaultDdtags = buildTags(configuration);\n const log = combine({\n view: commonContext.view,\n }, defaultLogsEventAttributes, rawLogsEvent, messageContext, {\n ddtags: defaultDdtags.concat(ddtags).join(','),\n });\n if (((_a = configuration.beforeSend) === null || _a === void 0 ? void 0 : _a.call(configuration, log, domainContext)) === false ||\n (log.origin !== ErrorSource.AGENT &&\n ((_b = logRateLimiters[log.status]) !== null && _b !== void 0 ? _b : logRateLimiters['custom']).isLimitReached())) {\n return;\n }\n lifeCycle.notify(1 /* LifeCycleEventType.LOG_COLLECTED */, log);\n });\n}\n//# sourceMappingURL=assembly.js.map","import { timeStampNow, ConsoleApiName, ErrorSource, initConsoleObservable } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nimport { createErrorFieldFromRawError } from '../createErrorFieldFromRawError';\nexport const LogStatusForApi = {\n [ConsoleApiName.log]: StatusType.info,\n [ConsoleApiName.debug]: StatusType.debug,\n [ConsoleApiName.info]: StatusType.info,\n [ConsoleApiName.warn]: StatusType.warn,\n [ConsoleApiName.error]: StatusType.error,\n};\nexport function startConsoleCollection(configuration, lifeCycle) {\n const consoleSubscription = initConsoleObservable(configuration.forwardConsoleLogs).subscribe((log) => {\n var _a;\n const 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 messageContext: (_a = log.error) === null || _a === void 0 ? void 0 : _a.context,\n domainContext: {\n handlingStack: log.handlingStack,\n },\n };\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, collectedData);\n });\n return {\n stop: () => {\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 const reportSubscription = initReportObservable(configuration, configuration.forwardReports).subscribe((rawError) => {\n let message = rawError.message;\n let error;\n const 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 ${getFileFromStackTraceString(rawError.stack)}`;\n }\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n rawLogsEvent: {\n date: timeStampNow(),\n message,\n origin: ErrorSource.REPORT,\n error,\n status,\n },\n });\n });\n return {\n stop: () => {\n reportSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=reportCollection.js.map","import { isWorkerEnvironment, Observable, ErrorSource, initXhrObservable, RequestType, 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 // XHR is not available in web workers, so we use an empty observable that never emits\n const xhrSubscription = (isWorkerEnvironment ? new Observable() : initXhrObservable(configuration)).subscribe((context) => {\n if (context.state === 'complete') {\n handleResponse(RequestType.XHR, context);\n }\n });\n const fetchSubscription = initFetchObservable().subscribe((context) => {\n if (context.state === 'resolve') {\n handleResponse(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 const domainContext = {\n isAborted: request.isAborted,\n handlingStack: request.handlingStack,\n };\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n rawLogsEvent: {\n message: `${format(type)} error ${request.method} ${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,\n });\n }\n }\n return {\n stop: () => {\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 const 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((text) => callback(truncateResponseText(text, configuration))), monitor((error) => callback(`Unable to retrieve response: ${error}`)));\n }\n else {\n truncateResponseStream(clonedResponse.body, configuration.requestErrorResponseLengthLimit, (error, responseText) => {\n if (error) {\n callback(`Unable to retrieve response: ${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 `${responseText.substring(0, configuration.requestErrorResponseLengthLimit)}...`;\n }\n return responseText;\n}\nfunction format(type) {\n if (RequestType.XHR === type) {\n return 'XHR';\n }\n return 'Fetch';\n}\nfunction truncateResponseStream(stream, bytesLimit, callback) {\n readBytesFromStream(stream, (error, bytes, limitExceeded) => {\n if (error) {\n callback(error);\n }\n else {\n let responseText = new TextDecoder().decode(bytes);\n if (limitExceeded) {\n responseText += '...';\n }\n callback(undefined, responseText);\n }\n }, {\n bytesLimit,\n collectStreamBody: true,\n });\n}\n//# sourceMappingURL=networkErrorCollection.js.map","import { noop, ErrorSource } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nimport { createErrorFieldFromRawError } from '../createErrorFieldFromRawError';\nexport function startRuntimeErrorCollection(configuration, lifeCycle, bufferedDataObservable) {\n if (!configuration.forwardErrorsToLogs) {\n return { stop: noop };\n }\n const rawErrorSubscription = bufferedDataObservable.subscribe((bufferedData) => {\n if (bufferedData.type === 0 /* BufferedDataType.RUNTIME_ERROR */) {\n const error = bufferedData.error;\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n rawLogsEvent: {\n message: error.message,\n date: error.startClocks.timeStamp,\n error: createErrorFieldFromRawError(error),\n origin: ErrorSource.SOURCE,\n status: StatusType.error,\n },\n messageContext: error.context,\n });\n }\n });\n return {\n stop: () => {\n rawErrorSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=runtimeErrorCollection.js.map","import { AbstractLifeCycle } from '@datadog/browser-core';\nexport const LifeCycle = (AbstractLifeCycle);\n//# sourceMappingURL=lifeCycle.js.map","import { 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 const 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 const rawLogEventData = {\n rawLogsEvent: {\n date: savedDate || timeStampNow(),\n message: logsMessage.message,\n status: logsMessage.status,\n origin: ErrorSource.LOGGER,\n },\n messageContext,\n savedCommonContext,\n ddtags: logger.getTags(),\n };\n if (handlingStack) {\n rawLogEventData.domainContext = { handlingStack };\n }\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, rawLogEventData);\n }\n }\n return {\n handleLog,\n };\n}\nconst loggerToConsoleApiName = {\n [StatusType.ok]: ConsoleApiName.debug,\n [StatusType.debug]: ConsoleApiName.debug,\n [StatusType.info]: ConsoleApiName.info,\n [StatusType.notice]: ConsoleApiName.info,\n [StatusType.warn]: ConsoleApiName.warn,\n [StatusType.error]: ConsoleApiName.error,\n [StatusType.critical]: ConsoleApiName.error,\n [StatusType.alert]: ConsoleApiName.error,\n [StatusType.emerg]: ConsoleApiName.error,\n};\nfunction displayInConsole({ status, message }, messageContext) {\n originalConsoleMethods[loggerToConsoleApiName[status]].call(globalConsole, message, messageContext);\n}\n//# sourceMappingURL=loggerCollection.js.map","import { createBatch, createFlushController, createHttpRequest, createIdentityEncoder } from '@datadog/browser-core';\nexport function startLogsBatch(configuration, lifeCycle, reportError, pageMayExitObservable, session) {\n const endpoints = [configuration.logsEndpointBuilder];\n if (configuration.replica) {\n endpoints.push(configuration.replica.logsEndpointBuilder);\n }\n const batch = createBatch({\n encoder: createIdentityEncoder(),\n request: createHttpRequest(endpoints, configuration.batchBytesLimit, reportError),\n flushController: createFlushController({\n messagesLimit: configuration.batchMessagesLimit,\n bytesLimit: configuration.batchBytesLimit,\n durationLimit: configuration.flushTimeout,\n pageMayExitObservable,\n sessionExpireObservable: session.expireObservable,\n }),\n messageBytesLimit: configuration.messageBytesLimit,\n });\n lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, (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 const bridge = getEventBridge();\n lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, (serverLogsEvent) => {\n bridge.send('log', serverLogsEvent);\n });\n}\n//# sourceMappingURL=startLogsBridge.js.map","export function startInternalContext(sessionManager) {\n return {\n get: (startTime) => {\n const 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 (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 // monitor-until: forever, to keep an eye on the errors reported to customers\n addTelemetryDebug('Error reported to customer', { 'error.message': error.message });\n };\n}\n//# sourceMappingURL=reportError.js.map","import { abstractHooks } from '@datadog/browser-core';\nexport const createHooks = (abstractHooks);\n//# sourceMappingURL=hooks.js.map","import { globalObject, willSyntheticsInjectRum, SKIPPED } from '@datadog/browser-core';\nexport function startRUMInternalContext(hooks) {\n const browserWindow = globalObject;\n hooks.register(0 /* HookNames.Assemble */, ({ startTime }) => {\n const internalContext = getRUMInternalContext(startTime);\n if (!internalContext) {\n return SKIPPED;\n }\n return internalContext;\n });\n hooks.register(1 /* HookNames.AssembleTelemetry */, ({ startTime }) => {\n var _a, _b;\n const internalContext = getRUMInternalContext(startTime);\n if (!internalContext) {\n return SKIPPED;\n }\n return {\n application: { id: internalContext.application_id },\n view: { id: (_a = internalContext.view) === null || _a === void 0 ? void 0 : _a.id },\n action: { id: (_b = internalContext.user_action) === null || _b === void 0 ? void 0 : _b.id },\n };\n });\n function getRUMInternalContext(startTime) {\n const willSyntheticsInjectRumResult = willSyntheticsInjectRum();\n const rumSource = willSyntheticsInjectRumResult ? browserWindow.DD_RUM_SYNTHETICS : browserWindow.DD_RUM;\n const rumContext = getInternalContextFromRumGlobal(startTime, rumSource);\n if (rumContext) {\n return rumContext;\n }\n }\n function getInternalContextFromRumGlobal(startTime, rumGlobal) {\n if (rumGlobal && rumGlobal.getInternalContext) {\n return rumGlobal.getInternalContext(startTime);\n }\n }\n}\n//# sourceMappingURL=rumInternalContext.js.map","import { DISCARDED, SKIPPED } from '@datadog/browser-core';\nexport function startSessionContext(hooks, configuration, sessionManager) {\n hooks.register(0 /* HookNames.Assemble */, ({ startTime }) => {\n const session = sessionManager.findTrackedSession(startTime);\n const isSessionTracked = sessionManager.findTrackedSession(startTime, { returnInactive: true });\n if (!isSessionTracked) {\n return DISCARDED;\n }\n return {\n service: configuration.service,\n session_id: session ? session.id : undefined,\n session: session ? { id: session.id } : undefined,\n };\n });\n hooks.register(1 /* HookNames.AssembleTelemetry */, ({ startTime }) => {\n const session = sessionManager.findTrackedSession(startTime);\n if (!session || !session.id) {\n return SKIPPED;\n }\n return {\n session: { id: session.id },\n };\n });\n}\n//# sourceMappingURL=sessionContext.js.map","import { DISCARDED, SKIPPED } from '@datadog/browser-core';\nexport function startTrackingConsentContext(hooks, trackingConsentState) {\n function isConsented() {\n const wasConsented = trackingConsentState.isGranted();\n if (!wasConsented) {\n return DISCARDED;\n }\n return SKIPPED;\n }\n hooks.register(0 /* HookNames.Assemble */, isConsented);\n hooks.register(1 /* HookNames.AssembleTelemetry */, isConsented);\n}\n//# sourceMappingURL=trackingConsentContext.js.map","import { Observable, sendToExtension, createPageMayExitObservable, willSyntheticsInjectRum, canUseEventBridge, startAccountContext, startGlobalContext, startTelemetry, createIdentityEncoder, startUserContext, isWorkerEnvironment, } 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 { createHooks } from '../domain/hooks';\nimport { startRUMInternalContext } from '../domain/contexts/rumInternalContext';\nimport { startSessionContext } from '../domain/contexts/sessionContext';\nimport { startTrackingConsentContext } from '../domain/contexts/trackingConsentContext';\nconst LOGS_STORAGE_KEY = 'logs';\nexport function startLogs(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, bufferedDataObservable) {\n const lifeCycle = new LifeCycle();\n const hooks = createHooks();\n const cleanupTasks = [];\n lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, (log) => sendToExtension('logs', log));\n const reportError = startReportError(lifeCycle);\n // Page exit is not observable in worker environments (no window/document events)\n const pageMayExitObservable = isWorkerEnvironment\n ? new Observable()\n : createPageMayExitObservable(configuration);\n const telemetry = startTelemetry(\"browser-logs-sdk\" /* TelemetryService.LOGS */, configuration, hooks, reportError, pageMayExitObservable, createIdentityEncoder);\n cleanupTasks.push(telemetry.stop);\n const session = configuration.sessionStoreStrategyType && !canUseEventBridge() && !willSyntheticsInjectRum()\n ? startLogsSessionManager(configuration, trackingConsentState)\n : startLogsSessionManagerStub(configuration);\n startTrackingConsentContext(hooks, trackingConsentState);\n // Start user and account context first to allow overrides from global context\n startSessionContext(hooks, configuration, session);\n const accountContext = startAccountContext(hooks, configuration, LOGS_STORAGE_KEY);\n const userContext = startUserContext(hooks, configuration, session, LOGS_STORAGE_KEY);\n const globalContext = startGlobalContext(hooks, configuration, LOGS_STORAGE_KEY, false);\n startRUMInternalContext(hooks);\n startNetworkErrorCollection(configuration, lifeCycle);\n startRuntimeErrorCollection(configuration, lifeCycle, bufferedDataObservable);\n bufferedDataObservable.unbuffer();\n startConsoleCollection(configuration, lifeCycle);\n startReportCollection(configuration, lifeCycle);\n const { handleLog } = startLoggerCollection(lifeCycle);\n startLogsAssembly(configuration, lifeCycle, hooks, getCommonContext, reportError);\n if (!canUseEventBridge()) {\n const { stop: stopLogsBatch } = startLogsBatch(configuration, lifeCycle, reportError, pageMayExitObservable, session);\n cleanupTasks.push(() => stopLogsBatch());\n }\n else {\n startLogsBridge(lifeCycle);\n }\n const internalContext = startInternalContext(session);\n return {\n handleLog,\n getInternalContext: internalContext.get,\n accountContext,\n globalContext,\n userContext,\n stop: () => {\n cleanupTasks.forEach((task) => task());\n },\n };\n}\n//# sourceMappingURL=startLogs.js.map","/**\n *\n * Datadog Browser Logs SDK for collecting and forwarding browser logs to Datadog.\n * Provides comprehensive logging capabilities with automatic error tracking and custom log collection.\n *\n * @packageDocumentation\n * @see [Browser Log Collection](https://docs.datadoghq.com/logs/log_collection/javascript/)\n */\nimport { 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';\n/**\n * The global Logs instance. Use this to call Logs methods.\n *\n * @see [Browser Log Collection](https://docs.datadoghq.com/logs/log_collection/javascript/)\n */\nexport const datadogLogs = makeLogsPublicApi(startLogs);\ndefineGlobal(getGlobalObject(), 'DD_LOGS', datadogLogs);\n//# sourceMappingURL=main.js.map",null,null,null,null,null,null,null,null,null],"names":["ErrorEnum","MontonioCheckoutNotInitializedError","message","ValidationError","PaymentFailedError","paymentFailedMessageData","FailedToFetchReturnUrlError","attempts","CheckoutOptionsValidationError","errors","errorList","error","index","MessageTypeEnum","ConfigService","name","environment","config","HTTPService","url","data","method","controller","timeoutId","headers","options","response","MessagingService","messageType","handler","iframe","windowSource","subscription","timeout","resolve","reject","messageData","targetOrigin","except","key","source","event","ConsoleApiName","globalConsole","originalConsoleMethods","PREFIX","display","DOCS_ORIGIN","DOCS_TROUBLESHOOTING","MORE_DETAILS","catchUserErrors","fn","errorMsg","args","err","performDraw","threshold","isPercentage","value","isNumber","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","ONE_YEAR","dateNow","timeStampNow","relativeNow","clocksNow","clocksOrigin","getNavigationStart","elapsed","start","end","addDuration","a","b","getRelativeTime","timestamp","navigationStart","_a","_b","ONE_KIBI_BYTE","ONE_MEBI_BYTE","HAS_MULTI_BYTES_CHARACTERS","computeBytesCount","candidate","shallowClone","object","objectHasValue","isEmptyObject","getGlobalObject","globalObject","isWorkerEnvironment","getZoneJsOriginalValue","target","browserWindow","original","onMonitorErrorCollected","debugMode","startMonitorErrorCollection","newOnMonitorErrorCollected","setDebugMode","newDebugMode","monitored","_","__","descriptor","originalMethod","monitor","callMonitored","context","e","monitorError","displayIfDebugEnabled","setTimeout","callback","delay","clearTimeout","setInterval","clearInterval","queueMicrotask","nativeImplementation","Observable","onFirstSubscribe","observer","other","mergeObservables","observables","globalObservable","subscriptions","observable","BufferedObservable","maxBufferSize","closed","throttle","wait","inWaitPeriod","pendingExecutionWithParameters","pendingTimeoutId","parameters","noop","generateUUID","placeholder","COMMA_SEPARATED_KEY_VALUE","findCommaSeparatedValue","rawString","match","findCommaSeparatedValues","result","safeTruncate","length","suffix","lastChar","correctedLength","isChromium","detectBrowserCached","browserCache","detectBrowser","userAgent","normalizeUrl","buildUrl","base","URL","getPristineWindow","getPristineGlobalObjectCache","pristineWindow","setCookie","expireDelay","date","expires","sameSite","domain","secure","partitioned","getCookie","initCookieParsed","getInitCookie","deleteCookie","areCookiesAuthorized","testCookieName","testCookieValue","isCookieCorrectlySet","getCurrentSiteCache","getCurrentSite","hostname","referrer","defaultHostName","getCookieDefaultHostName","domainLevels","candidateDomain","SESSION_STORE_KEY","findLast","array","predicate","i","item","objectValues","objectEntries","SESSION_TIME_OUT_DELAY","SESSION_EXPIRATION_DELAY","SESSION_COOKIE_EXPIRATION_DELAY","SESSION_NOT_TRACKED","SessionPersistence","SESSION_ENTRY_REGEXP","SESSION_ENTRY_SEPARATOR","isValidSessionString","sessionString","EXPIRED","getExpiredSessionState","previousSessionState","configuration","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","storeSessionCookie","retrieveSessionCookie","defaultTimeout","currentSite","LOCAL_STORAGE_TEST_KEY","selectLocalStorageStrategy","id","testKey","retrievedId","initLocalStorageStrategy","persistInLocalStorage","retrieveSessionFromLocalStorage","expireSessionFromLocalStorage","LOCK_RETRY_DELAY","LOCK_MAX_TRIES","LOCK_EXPIRATION_DELAY","LOCK_SEPARATOR","bufferedOperations","ongoingOperations","processSessionStoreOperations","operations","sessionStoreStrategy","numberOfRetries","isLockEnabled","persistSession","expireSession","persistWithLock","currentLock","retrieveStore","lock","isLockExpired","next","currentStore","retryLater","createLock","processedSession","sessionStore","currentNumberOfRetries","nextOperations","timeStamp","STORAGE_POLL_DELAY","selectSessionStoreStrategyType","sessionStoreStrategyType","getSessionStoreStrategy","startSessionStore","productKey","computeTrackingType","renewObservable","expireObservable","sessionStateUpdateObservable","watchSessionTimeoutId","watchSession","sessionCache","startSession","throttledExpandOrRenewSession","cancelExpandOrRenewSession","synchronizedSession","synchronizeSession","expandOrRenewSessionState","hasSessionInCache","renewSessionInCache","expandSession","isSessionInCacheOutdated","expireSessionInCache","trackingType","updateSessionState","partialSessionState","TrackingConsent","createTrackingConsentState","currentConsent","trackingConsent","getType","matchList","list","useStartsWith","EXTENSION_PREFIXES","containsExtensionUrl","str","prefix","isUnsupportedExtensionEnvironment","windowLocation","stack","line","trimmedLine","ERROR_DOES_NOT_HAVE_ALLOWED_TRACKING_ORIGIN","ERROR_NOT_ALLOWED_TRACKING_ORIGIN","isAllowedTrackingOrigins","errorStack","windowOrigin","allowedTrackingOrigins","isAllowed","INTAKE_SITE_STAGING","INTAKE_SITE_FED_STAGING","INTAKE_SITE_US1","INTAKE_SITE_US1_FED","PCI_INTAKE_HOST_US1","INTAKE_URL_PARAMETERS","createEndpointBuilder","trackType","extraParameters","buildUrlWithParameters","createEndpointUrlWithParametersBuilder","api","payload","buildEndpointParameters","path","proxy","normalizedProxyUrl","host","buildEndpointHost","site","internalAnalyticsSubdomain","domainParts","extension","clientToken","retry","encoding","computeTransportConfiguration","validateSource","endpointBuilders","computeEndpointBuilders","computeReplicaConfiguration","replicaConfiguration","isIntakeUrl","param","isString","tag","tagName","isDatadogSite","isSampleRate","sampleRate","validateAndBuildConfiguration","_c","_d","_e","_f","_g","_h","_j","_k","serializeConfiguration","ExperimentalFeature","enabledExperimentalFeatures","initFeatureFlags","enableExperimentalFeatures","addExperimentalFeatures","flag","enabledFeatures","isExperimentalFeatureEnabled","featureName","getExperimentalFeatures","UNKNOWN_FUNCTION","computeStackTrace","ex","stackProperty","tryToGetString","exString","stackFrame","parseChromeLine","parseChromeAnonymousLine","parseWinLine","parseGeckoLine","isWronglyReportingCustomErrors","constructors","currentPrototype","isNonNativeClassPrototype","constructorName","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","ERROR_TYPES_RE","prototype","isWronglyReportingCustomErrorsCache","DatadogTestCustomError","customError","nativeError","errConstructor","createHandlingStack","type","formattedStack","stackTrace","toStackTraceString","formatErrorMessage","frame","func","instrumentMethod","targetPrototype","onPreCall","computeHandlingStack","stopped","instrumentation","postCallCallback","jsonStringify","replacer","space","restoreObjectPrototypeToJson","detachToJsonMethod","restoreArrayPrototypeToJson","restoreValuePrototypeToJson","restoreValueToJson","objectToJson","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","sanitizeEvent","changeType","NO_ERROR_STACK_PRESENT_MESSAGE","computeRawError","originalError","handlingStack","componentStack","startClocks","nonErrorPrefix","useFallbackStack","handling","isErrorInstance","isError","computeMessage","flattenErrorCauses","tryToGetFingerprint","tryToGetErrorContext","getFileFromStackTraceString","parentSource","currentError","causes","ErrorSource","trackRuntimeError","handleRuntimeError","rawError","stopInstrumentingOnError","instrumentOnError","stopInstrumentingOnUnhandledRejection","instrumentUnhandledRejection","errorObj","makePublicApi","stub","publicApi","defineGlobal","global","existingGlobalVariable","displayAlreadyInitializedError","sdkName","addEventListener","eventTarget","eventName","listener","addEventListeners","eventNames","once","capture","passive","listenerWithMonitor","stop","listenerTarget","add","remove","RawReportType","initReportObservable","apis","createCspViolationReportObservable","reportTypes","createReportObservable","handleReports","reports","report","buildRawReportErrorFromReport","buildRawReportErrorFromCspViolation","body","buildRawReportError","buildStack","partial","sourceFile","lineNumber","columnNumber","TAG_SIZE_LIMIT","buildTags","env","service","version","datacenter","sdkVersion","variant","tags","buildTag","rawValue","hasForbiddenCharacters","sanitizeTag","supportUnicodePropertyEscapes","sendToExtension","mergeInto","destination","circularReferenceChecker","createCircularReferenceChecker","flags","merged","deepClone","combine","sources","set","has","getConnectivity","navigator","isServerError","status","tryToClone","MAX_ONGOING_BYTES_COUNT","MAX_ONGOING_REQUESTS","MAX_QUEUE_BYTES_COUNT","MAX_BACKOFF_TIME","INITIAL_BACKOFF_TIME","sendWithRetryStrategy","state","sendStrategy","reportError","requestObservable","send","retryQueuedPayloads","scheduleRetry","onSuccess","onFailure","shouldRetryRequest","reason","previousQueue","newPayloadQueue","newRetryState","newBandwidthMonitor","createHttpRequest","bytesLimit","retryState","endpointBuilder","onResponse","fetchKeepAliveStrategy","sendBeaconStrategy","beaconUrl","reportBeaconError","fetchStrategy","hasReportedBeaconError","isKeepAliveSupported","fetchUrl","getEventBridge","eventBridgeGlobal","getEventBridgeGlobal","eventType","viewId","view","canUseEventBridge","currentHost","bridge","allowedHost","PageExitReason","createPageMayExitObservable","stopListeners","stopBeforeUnloadListener","isPageExitReason","createBatch","encoder","request","flushController","messageBytesLimit","upsertBuffer","flushSubscription","flush","push","serializedMessage","estimatedMessageBytesCount","realMessageBytesCount","hasMessageFor","removedMessage","messageBytesCount","addOrUpdate","upsertMessages","pageMightExit","encoderResult","formatPayloadFromEncoder","pendingMessages","createFlushController","messagesLimit","durationLimit","pageMayExitObservable","sessionExpireObservable","pageMayExitSubscription","sessionExpireSubscription","flushObservable","currentBytesCount","currentMessagesCount","flushReason","messagesCount","bytesCount","cancelDurationLimitTimeout","durationLimitTimeoutId","scheduleDurationLimitTimeout","messageBytesCountDiff","DISCARDED","SKIPPED","abstractHooks","callbacks","hookName","cb","hookCallbacks","results","TelemetryType","ALLOWED_FRAME_URLS","METRIC_SAMPLE_RATE","TELEMETRY_EXCLUDED_SITES","telemetryObservable","getTelemetryObservable","startTelemetry","telemetryService","hooks","createEncoder","startTelemetryTransport","enabled","metricsEnabled","startTelemetryCollection","metricSampleRate","alreadySentEventsByKind","telemetryEnabled","telemetryEnabledPerType","runtimeEnvInfo","getRuntimeEnvInfo","rawEvent","metricName","kind","alreadySentEvents","stringifiedEvent","defaultTelemetryEventAttributes","toTelemetryEvent","addTelemetryError","cleanupTasks","telemetrySubscription","endpoints","isTelemetryReplicationAllowed","telemetryBatch","task","addTelemetryDebug","formatError","addTelemetryConfiguration","addTelemetryUsage","usage","scrubCustomerFrames","allowedFrameUrl","removeDuplicates","removeItem","END_OF_TIMES","CLEAR_OLD_VALUES_INTERVAL","cleanupHistoriesInterval","cleanupHistories","createValueHistory","maxEntries","entries","clearExpiredValues","oldTimeThreshold","startTime","endTime","find","closeActive","latestEntry","findAll","duration","reset","SYNTHETICS_TEST_ID_COOKIE_NAME","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","getSyntheticsTestId","getSyntheticsResultId","isSyntheticsTest","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","startSessionManager","trackingConsentState","sessionContextHistory","buildSessionContext","detectSessionIdChange","trackActivity","trackVisibility","trackResume","reportUnexpectedSessionState","expandOrRenewSession","expandSessionWhenVisible","rawSession","getSessionCookies","initialSessionState","sessionCreatedTime","sdkInitTime","changed","change","sessionAge","newSessionState","time","cookie","sessionCookies","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","BUFFER_LIMIT","createBoundedBuffer","buffer","arg","checkContext","maybeContext","isValid","ensureProperties","propertiesConfig","newContext","required","isDefined","createContextManager","changeObservable","contextManager","defineContextMethod","getStrategy","contextName","methodName","bufferContextCalls","preStartContextManager","bufferApiCalls","startResult","CONTEXT_STORE_KEY_PREFIX","storageListeners","storeContextManager","customerDataType","storageKey","buildStorageKey","synchronizeWithStorage","dumpToStorage","contextFromStorage","getFromStorage","rawContext","startAccountContext","accountContextManager","buildAccountContextManager","account","startGlobalContext","useContextNamespace","globalContextManager","buildGlobalContextManager","startUserContext","sessionManager","userContextManager","buildUserContextManager","user","CustomerContextKey","ContextManagerMethod","readBytesFromStream","stream","reader","chunks","readBytesCount","readMore","onDone","bytes","limitExceeded","completeBuffer","offset","chunk","ResourceType","RequestType","startBufferingData","trackRuntimeErrorImpl","runtimeErrorSubscription","isAuthorized","handlerType","logger","loggerHandler","sanitizedHandlerType","STATUS_PRIORITIES","StatusType","createErrorFieldFromRawError","includeMessage","__decorate","decorators","desc","c","r","d","HandlerType","STATUSES","Logger","handleLogStrategy","level","loggerContext","messageContext","sanitizedMessageContext","sanitizedKey","createLoggerMethod","buildCommonContext","DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT","validateAndBuildLogsConfiguration","baseConfiguration","forwardConsoleLogs","validateAndBuildForwardOption","forwardReports","option","allowedValues","label","serializeLogsConfiguration","baseSerializedInitConfiguration","createPreStartStrategy","getCommonContext","doStartLogs","globalContext","accountContext","userContext","cachedInitConfiguration","cachedConfiguration","trackingConsentStateSubscription","tryStartLogs","startLogsResult","overrideInitConfigurationForBridge","statusType","makeLogsPublicApi","startLogsImpl","bufferedDataObservable","strategy","createPostStartStrategy","customLoggers","mainLogger","conf","startLogsSessionManager","rawTrackingType","startLogsSessionManagerStub","hasValidLoggerSession","startLogsAssembly","lifeCycle","statusWithCustom","logRateLimiters","rawLogsEvent","savedCommonContext","domainContext","ddtags","commonContext","defaultLogsEventAttributes","defaultDdtags","log","LogStatusForApi","startConsoleCollection","consoleSubscription","collectedData","startReportCollection","reportSubscription","startNetworkErrorCollection","xhrSubscription","handleResponse","fetchSubscription","isRejected","computeXhrResponseData","onResponseDataAvailable","computeFetchResponseText","computeFetchErrorText","responseData","format","truncateResponseText","clonedResponse","truncateResponseStream","responseText","text","startRuntimeErrorCollection","rawErrorSubscription","bufferedData","LifeCycle","startLoggerCollection","handleLog","logsMessage","savedDate","displayInConsole","rawLogEventData","loggerToConsoleApiName","startLogsBatch","batch","serverLogsEvent","startLogsBridge","startInternalContext","trackedSession","startReportError","createHooks","startRUMInternalContext","internalContext","getRUMInternalContext","rumSource","rumContext","getInternalContextFromRumGlobal","rumGlobal","startSessionContext","startTrackingConsentContext","isConsented","LOGS_STORAGE_KEY","startLogs","telemetry","stopLogsBatch","datadogLogs","Environment","LoggingService","sessionUuid","Iframe","element","src","allow","styles","combinedStyles","BaseComponent","getElement","selector","disableBodyScroll","originalOverflow","restoreBodyOverflow","LocaleEnum","PaymentStatusEnum","UUID_PATTERN","validateCheckoutOptions","validLocales","validateUpdatableCheckoutOptions","PaymentAuth","paymentAuthData","form","MontonioCheckout","mountTo","sessionData","completedMessage","failedMessage","res","paymentAuthIframe","paymentIntentUuid","MAX_ATTEMPTS","DELAY_BETWEEN_ATTEMPTS_IN_MS"],"mappings":"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","x_google_ignoreList":[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,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114]}
|
|
1
|
+
{"version":3,"file":"montonio.es.js","sources":["../src/common/exceptions/exceptions.ts","../src/services/Messaging/types.ts","../src/services/Config/Config.ts","../src/services/HTTP/HTTP.ts","../src/services/Messaging/Messaging.ts","../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/objectUtils.js","../node_modules/@datadog/browser-core/esm/tools/globalObject.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/queueMicrotask.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/utils/urlPolyfill.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/polyfills.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/utils/typeUtils.js","../node_modules/@datadog/browser-core/esm/tools/matchOption.js","../node_modules/@datadog/browser-core/esm/domain/extension/extensionUtils.js","../node_modules/@datadog/browser-core/esm/domain/allowedTrackingOrigins.js","../node_modules/@datadog/browser-core/esm/domain/intakeSites.js","../node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.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/experimentalFeatures.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/jsonStringify.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/domain/tags.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/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/pageMayExitObservable.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/tools/abstractHooks.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/utils/arrayUtils.js","../node_modules/@datadog/browser-core/esm/tools/valueHistory.js","../node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","../node_modules/@datadog/browser-core/esm/domain/session/sessionManager.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/tools/boundedBuffer.js","../node_modules/@datadog/browser-core/esm/domain/context/contextUtils.js","../node_modules/@datadog/browser-core/esm/domain/context/contextManager.js","../node_modules/@datadog/browser-core/esm/domain/context/defineContextMethod.js","../node_modules/@datadog/browser-core/esm/domain/context/storeContextManager.js","../node_modules/@datadog/browser-core/esm/domain/contexts/accountContext.js","../node_modules/@datadog/browser-core/esm/domain/contexts/globalContext.js","../node_modules/@datadog/browser-core/esm/domain/contexts/userContext.js","../node_modules/@datadog/browser-core/esm/domain/context/contextConstants.js","../node_modules/@datadog/browser-core/esm/tools/readBytesFromStream.js","../node_modules/@datadog/browser-core/esm/domain/resourceUtils.js","../node_modules/@datadog/browser-core/esm/domain/bufferedData.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/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/hooks.js","../node_modules/@datadog/browser-logs/esm/domain/contexts/rumInternalContext.js","../node_modules/@datadog/browser-logs/esm/domain/contexts/sessionContext.js","../node_modules/@datadog/browser-logs/esm/domain/contexts/trackingConsentContext.js","../node_modules/@datadog/browser-logs/esm/boot/startLogs.js","../node_modules/@datadog/browser-logs/esm/entries/main.js","../src/services/Config/types.ts","../src/services/Logging/Logging.ts","../src/components/Iframe/Iframe.ts","../src/components/BaseComponent.ts","../src/utils/DOM/DOM.ts","../src/components/MontonioCheckout/types.ts","../src/utils/Validation/Validation.ts","../src/components/PaymentAuth/PaymentAuth.ts","../src/components/MontonioCheckout/MontonioCheckout.ts"],"sourcesContent":[null,null,null,null,null,"/* eslint-disable local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport const ConsoleApiName = {\n log: 'log',\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error',\n};\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport const globalConsole = console;\nexport const originalConsoleMethods = {};\nObject.keys(ConsoleApiName).forEach((name) => {\n originalConsoleMethods[name] = globalConsole[name];\n});\nconst PREFIX = 'Datadog Browser SDK:';\nexport const display = {\n debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),\n log: originalConsoleMethods.log.bind(globalConsole, PREFIX),\n info: originalConsoleMethods.info.bind(globalConsole, PREFIX),\n warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),\n error: originalConsoleMethods.error.bind(globalConsole, PREFIX),\n};\nexport const DOCS_ORIGIN = 'https://docs.datadoghq.com';\nexport const DOCS_TROUBLESHOOTING = `${DOCS_ORIGIN}/real_user_monitoring/browser/troubleshooting`;\nexport const MORE_DETAILS = 'More details:';\n//# sourceMappingURL=display.js.map","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n return (...args) => {\n try {\n return fn(...args);\n }\n catch (err) {\n display.error(errorMsg, err);\n }\n };\n}\n//# sourceMappingURL=catchUserErrors.js.map","/**\n * Return true if the draw is successful\n *\n * @param threshold - 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 const ONE_SECOND = 1000;\nexport const ONE_MINUTE = 60 * ONE_SECOND;\nexport const ONE_HOUR = 60 * ONE_MINUTE;\nexport const ONE_DAY = 24 * ONE_HOUR;\nexport const ONE_YEAR = 365 * ONE_DAY;\nexport function relativeToClocks(relative) {\n return { relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nexport function timeStampToClocks(timeStamp) {\n return { relative: getRelativeTime(timeStamp), timeStamp };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n const correctedOrigin = (dateNow() - performance.now());\n // apply correction only for positive drift\n if (correctedOrigin > getNavigationStart()) {\n return Math.round(addDuration(correctedOrigin, relativeTime));\n }\n return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n if (!isNumber(duration)) {\n return duration;\n }\n return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n // case ourselves.\n // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n return new Date().getTime();\n}\nexport function timeStampNow() {\n return dateNow();\n}\nexport function relativeNow() {\n return performance.now();\n}\nexport function clocksNow() {\n return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n return (end - start);\n}\nexport function addDuration(a, b) {\n return a + b;\n}\n// Get the time since the navigation was started.\nexport function getRelativeTime(timestamp) {\n return (timestamp - getNavigationStart());\n}\nexport function getTimeStamp(relativeTime) {\n return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nlet navigationStart;\n/**\n * Notes: this does not use `performance.timeOrigin` because:\n * - It doesn't seem to reflect the actual time on which the navigation has started: it may be much farther in the past,\n * at least in Firefox 71. (see: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926)\n * - It is not supported in Safari <15\n */\nfunction getNavigationStart() {\n var _a, _b;\n if (navigationStart === undefined) {\n // ServiceWorkers do not support navigationStart (it's deprecated), so we fallback to timeOrigin\n navigationStart = ((_b = (_a = performance.timing) === null || _a === void 0 ? void 0 : _a.navigationStart) !== null && _b !== void 0 ? _b : performance.timeOrigin);\n }\n return navigationStart;\n}\n//# sourceMappingURL=timeUtils.js.map","export const ONE_KIBI_BYTE = 1024;\nexport const ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// eslint-disable-next-line no-control-regex\nconst HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nexport function computeBytesCount(candidate) {\n // Accurate bytes count computations can degrade performances when there is a lot of events to process\n if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n return candidate.length;\n }\n if (window.TextEncoder !== undefined) {\n return new TextEncoder().encode(candidate).length;\n }\n return new Blob([candidate]).size;\n}\nexport function concatBuffers(buffers) {\n const length = buffers.reduce((total, buffer) => total + buffer.length, 0);\n const result = new Uint8Array(length);\n let offset = 0;\n for (const buffer of buffers) {\n result.set(buffer, offset);\n offset += buffer.length;\n }\n return result;\n}\n//# sourceMappingURL=byteUtils.js.map","export function shallowClone(object) {\n return { ...object };\n}\nexport function objectHasValue(object, value) {\n return Object.keys(object).some((key) => object[key] === value);\n}\nexport function isEmptyObject(object) {\n return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n const newObject = {};\n for (const key of Object.keys(object)) {\n newObject[key] = fn(object[key]);\n }\n return newObject;\n}\n//# sourceMappingURL=objectUtils.js.map","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n Object.defineProperty(Object.prototype, '_dd_temp_', {\n get() {\n return this;\n },\n configurable: true,\n });\n // @ts-ignore _dd_temp is defined using defineProperty\n let globalObject = _dd_temp_;\n // @ts-ignore _dd_temp is defined using defineProperty\n delete Object.prototype._dd_temp_;\n if (typeof globalObject !== 'object') {\n // on safari _dd_temp_ is available on window but not globally\n // fallback on other browser globals check\n if (typeof self === 'object') {\n globalObject = self;\n }\n else if (typeof window === 'object') {\n globalObject = window;\n }\n else {\n globalObject = {};\n }\n }\n return globalObject;\n}\n/**\n * Cached reference to the global object so it can be imported and re-used without\n * re-evaluating the heavyweight fallback logic in `getGlobalObject()`.\n */\n// eslint-disable-next-line local-rules/disallow-side-effects\nexport const globalObject = getGlobalObject();\nexport const isWorkerEnvironment = 'WorkerGlobalScope' in globalObject;\n//# sourceMappingURL=globalObject.js.map","import { getGlobalObject } from './globalObject';\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue(target, name) {\n const browserWindow = getGlobalObject();\n let original;\n if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n original = target[browserWindow.Zone.__symbol__(name)];\n }\n if (!original) {\n original = target[name];\n }\n return original;\n}\n//# sourceMappingURL=getZoneJsOriginalValue.js.map","import { display } from './display';\nlet onMonitorErrorCollected;\nlet debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n onMonitorErrorCollected = undefined;\n debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args) {\n const decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n return decorated.apply(this, args);\n };\n}\nexport function monitor(fn) {\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return callMonitored(fn, this, arguments);\n }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return fn.apply(context, args);\n }\n catch (e) {\n monitorError(e);\n }\n}\nexport function monitorError(e) {\n displayIfDebugEnabled(e);\n if (onMonitorErrorCollected) {\n try {\n onMonitorErrorCollected(e);\n }\n catch (e) {\n displayIfDebugEnabled(e);\n }\n }\n}\nexport function displayIfDebugEnabled(...args) {\n if (debugMode) {\n display.error('[MONITOR]', ...args);\n }\n}\n//# sourceMappingURL=monitor.js.map","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue';\nimport { monitor } from './monitor';\nimport { getGlobalObject } from './globalObject';\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","import { monitor } from './monitor';\nimport { globalObject } from './globalObject';\nexport function queueMicrotask(callback) {\n var _a;\n const nativeImplementation = (_a = globalObject.queueMicrotask) === null || _a === void 0 ? void 0 : _a.bind(globalObject);\n if (typeof nativeImplementation === 'function') {\n nativeImplementation(monitor(callback));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- the callback is monitored, so it'll never throw\n Promise.resolve().then(monitor(callback));\n }\n}\n//# sourceMappingURL=queueMicrotask.js.map","import { queueMicrotask } from './queueMicrotask';\n// eslint-disable-next-line no-restricted-syntax\nexport class Observable {\n constructor(onFirstSubscribe) {\n this.onFirstSubscribe = onFirstSubscribe;\n this.observers = [];\n }\n subscribe(observer) {\n this.addObserver(observer);\n return {\n unsubscribe: () => this.removeObserver(observer),\n };\n }\n notify(data) {\n this.observers.forEach((observer) => observer(data));\n }\n addObserver(observer) {\n this.observers.push(observer);\n if (this.observers.length === 1 && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined;\n }\n }\n removeObserver(observer) {\n this.observers = this.observers.filter((other) => observer !== other);\n if (!this.observers.length && this.onLastUnsubscribe) {\n this.onLastUnsubscribe();\n }\n }\n}\nexport function mergeObservables(...observables) {\n return new Observable((globalObservable) => {\n const subscriptions = observables.map((observable) => observable.subscribe((data) => globalObservable.notify(data)));\n return () => subscriptions.forEach((subscription) => subscription.unsubscribe());\n });\n}\n// eslint-disable-next-line no-restricted-syntax\nexport class BufferedObservable extends Observable {\n constructor(maxBufferSize) {\n super();\n this.maxBufferSize = maxBufferSize;\n this.buffer = [];\n }\n notify(data) {\n this.buffer.push(data);\n if (this.buffer.length > this.maxBufferSize) {\n this.buffer.shift();\n }\n super.notify(data);\n }\n subscribe(observer) {\n let closed = false;\n const subscription = {\n unsubscribe: () => {\n closed = true;\n this.removeObserver(observer);\n },\n };\n queueMicrotask(() => {\n for (const data of this.buffer) {\n if (closed) {\n return;\n }\n observer(data);\n }\n if (!closed) {\n this.addObserver(observer);\n }\n });\n return subscription;\n }\n /**\n * Drop buffered data and don't buffer future data. This is to avoid leaking memory when it's not\n * needed anymore. This can be seen as a performance optimization, and things will work probably\n * even if this method isn't called, but still useful to clarify our intent and lowering our\n * memory impact.\n */\n unbuffer() {\n queueMicrotask(() => {\n this.maxBufferSize = this.buffer.length = 0;\n });\n }\n}\n//# sourceMappingURL=observable.js.map","import { setTimeout, clearTimeout } from '../timer';\n// use lodash API\nexport function throttle(fn, wait, options) {\n const needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n const needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n let inWaitPeriod = false;\n let pendingExecutionWithParameters;\n let pendingTimeoutId;\n return {\n throttled: (...parameters) => {\n if (inWaitPeriod) {\n pendingExecutionWithParameters = parameters;\n return;\n }\n if (needLeadingExecution) {\n fn(...parameters);\n }\n else {\n pendingExecutionWithParameters = parameters;\n }\n inWaitPeriod = true;\n pendingTimeoutId = setTimeout(() => {\n if (needTrailingExecution && pendingExecutionWithParameters) {\n fn(...pendingExecutionWithParameters);\n }\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n }, wait);\n },\n cancel: () => {\n clearTimeout(pendingTimeoutId);\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n },\n };\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n//# sourceMappingURL=functionUtils.js.map","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n return placeholder\n ? // eslint-disable-next-line no-bitwise\n (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n : `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, generateUUID);\n}\nconst COMMA_SEPARATED_KEY_VALUE = /([\\w-]+)\\s*=\\s*([^;]+)/g;\nexport function findCommaSeparatedValue(rawString, name) {\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n if (match[1] === name) {\n return match[2];\n }\n }\n else {\n break;\n }\n }\n}\nexport function findCommaSeparatedValues(rawString) {\n const result = new Map();\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n result.set(match[1], match[2]);\n }\n else {\n break;\n }\n }\n return result;\n}\nexport function safeTruncate(candidate, length, suffix = '') {\n const lastChar = candidate.charCodeAt(length - 1);\n const isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n const correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n if (candidate.length <= correctedLength) {\n return candidate;\n }\n return `${candidate.slice(0, correctedLength)}${suffix}`;\n}\n//# sourceMappingURL=stringUtils.js.map","export function isChromium() {\n return detectBrowserCached() === 0 /* Browser.CHROMIUM */;\n}\nexport function isSafari() {\n return detectBrowserCached() === 1 /* Browser.SAFARI */;\n}\nlet browserCache;\nfunction detectBrowserCached() {\n return browserCache !== null && browserCache !== void 0 ? browserCache : (browserCache = detectBrowser());\n}\n// Exported only for tests\nexport function detectBrowser(browserWindow = window) {\n var _a;\n const userAgent = browserWindow.navigator.userAgent;\n if (browserWindow.chrome || /HeadlessChrome/.test(userAgent)) {\n return 0 /* Browser.CHROMIUM */;\n }\n if (\n // navigator.vendor is deprecated, but it is the most resilient way we found to detect\n // \"Apple maintained browsers\" (AKA Safari). If one day it gets removed, we still have the\n // useragent test as a semi-working fallback.\n ((_a = browserWindow.navigator.vendor) === null || _a === void 0 ? void 0 : _a.indexOf('Apple')) === 0 ||\n (/safari/i.test(userAgent) && !/chrome|android/i.test(userAgent))) {\n return 1 /* Browser.SAFARI */;\n }\n return 2 /* Browser.OTHER */;\n}\n//# sourceMappingURL=browserDetection.js.map","import { globalObject } from '../globalObject';\nexport function normalizeUrl(url) {\n return buildUrl(url, location.href).href;\n}\nexport function isValidUrl(url) {\n try {\n return !!buildUrl(url);\n }\n catch (_a) {\n return false;\n }\n}\nexport function getPathName(url) {\n const pathname = buildUrl(url).pathname;\n return pathname[0] === '/' ? pathname : `/${pathname}`;\n}\nexport function buildUrl(url, base) {\n const { URL } = getPristineWindow();\n try {\n return base !== undefined ? new URL(url, base) : new URL(url);\n }\n catch (error) {\n throw new Error(`Failed to construct URL: ${String(error)}`);\n }\n}\n/**\n * Get native URL constructor from a clean iframe\n * This avoids polyfill issues by getting the native implementation from a fresh iframe context\n * Falls back to the original URL constructor if iframe approach fails\n */\nlet getPristineGlobalObjectCache;\nexport function getPristineWindow() {\n if (!getPristineGlobalObjectCache) {\n let iframe;\n let pristineWindow;\n try {\n iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n pristineWindow = iframe.contentWindow;\n }\n catch (_a) {\n pristineWindow = globalObject;\n }\n getPristineGlobalObjectCache = {\n URL: pristineWindow.URL,\n };\n iframe === null || iframe === void 0 ? void 0 : iframe.remove();\n }\n return getPristineGlobalObjectCache;\n}\n//# sourceMappingURL=urlPolyfill.js.map","import { display } from '../tools/display';\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { findCommaSeparatedValue, findCommaSeparatedValues, generateUUID } from '../tools/utils/stringUtils';\nimport { buildUrl } from '../tools/utils/urlPolyfill';\nexport function setCookie(name, value, expireDelay = 0, options) {\n const date = new Date();\n date.setTime(date.getTime() + expireDelay);\n const expires = `expires=${date.toUTCString()}`;\n const sameSite = options && options.crossSite ? 'none' : 'strict';\n const domain = options && options.domain ? `;domain=${options.domain}` : '';\n const secure = options && options.secure ? ';secure' : '';\n const partitioned = options && options.partitioned ? ';partitioned' : '';\n document.cookie = `${name}=${value};${expires};path=/;samesite=${sameSite}${domain}${secure}${partitioned}`;\n}\nexport function getCookie(name) {\n return findCommaSeparatedValue(document.cookie, name);\n}\nlet initCookieParsed;\n/**\n * Returns a cached value of the cookie. Use this during SDK initialization (and whenever possible)\n * to avoid accessing document.cookie multiple times.\n */\nexport function getInitCookie(name) {\n if (!initCookieParsed) {\n initCookieParsed = findCommaSeparatedValues(document.cookie);\n }\n return initCookieParsed.get(name);\n}\nexport function resetInitCookies() {\n initCookieParsed = undefined;\n}\nexport function deleteCookie(name, options) {\n setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n if (document.cookie === undefined || document.cookie === null) {\n return false;\n }\n try {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n const testCookieName = `dd_cookie_test_${generateUUID()}`;\n const testCookieValue = 'test';\n setCookie(testCookieName, testCookieValue, ONE_MINUTE, options);\n const isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n deleteCookie(testCookieName, options);\n return isCookieCorrectlySet;\n }\n catch (error) {\n display.error(error);\n return false;\n }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nlet getCurrentSiteCache;\nexport function getCurrentSite(hostname = location.hostname, referrer = document.referrer) {\n if (getCurrentSiteCache === undefined) {\n const defaultHostName = getCookieDefaultHostName(hostname, referrer);\n if (defaultHostName) {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n const testCookieName = `dd_site_test_${generateUUID()}`;\n const testCookieValue = 'test';\n const domainLevels = defaultHostName.split('.');\n let candidateDomain = domainLevels.pop();\n while (domainLevels.length && !getCookie(testCookieName)) {\n candidateDomain = `${domainLevels.pop()}.${candidateDomain}`;\n setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain });\n }\n deleteCookie(testCookieName, { domain: candidateDomain });\n getCurrentSiteCache = candidateDomain;\n }\n }\n return getCurrentSiteCache;\n}\nfunction getCookieDefaultHostName(hostname, referrer) {\n try {\n return hostname || buildUrl(referrer).hostname;\n }\n catch (_a) {\n // Ignore\n }\n}\nexport function resetGetCurrentSite() {\n getCurrentSiteCache = undefined;\n}\n//# sourceMappingURL=cookie.js.map","export const SESSION_STORE_KEY = '_dd_s';\n//# sourceMappingURL=sessionStoreStrategy.js.map","export function findLast(array, predicate) {\n for (let i = array.length - 1; i >= 0; i -= 1) {\n const item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n return undefined;\n}\n// Keep the following wrapper functions as it can be mangled and will result in smaller bundle size that using\n// the native Object.values and Object.entries directly\nexport function objectValues(object) {\n return Object.values(object);\n}\nexport function objectEntries(object) {\n return Object.entries(object);\n}\n//# sourceMappingURL=polyfills.js.map","import { ONE_HOUR, ONE_MINUTE, ONE_YEAR } from '../../tools/utils/timeUtils';\nexport const SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport const SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;\nexport const SESSION_COOKIE_EXPIRATION_DELAY = ONE_YEAR;\nexport const SESSION_NOT_TRACKED = '0';\n/**\n * @internal\n */\nexport const SessionPersistence = {\n COOKIE: 'cookie',\n LOCAL_STORAGE: 'local-storage',\n};\n//# sourceMappingURL=sessionConstants.js.map","export const SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/;\nexport const SESSION_ENTRY_SEPARATOR = '&';\nexport function isValidSessionString(sessionString) {\n return (!!sessionString &&\n (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));\n}\n//# sourceMappingURL=sessionStateValidation.js.map","import { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { objectEntries } from '../../tools/utils/polyfills';\nimport { dateNow } from '../../tools/utils/timeUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { isValidSessionString, SESSION_ENTRY_REGEXP, SESSION_ENTRY_SEPARATOR } from './sessionStateValidation';\nexport const EXPIRED = '1';\nexport function getExpiredSessionState(previousSessionState, configuration) {\n const expiredSessionState = {\n isExpired: EXPIRED,\n };\n if (configuration.trackAnonymousUser) {\n if (previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId) {\n expiredSessionState.anonymousId = previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId;\n }\n else {\n expiredSessionState.anonymousId = generateUUID();\n }\n }\n return expiredSessionState;\n}\nexport function isSessionInNotStartedState(session) {\n return isEmptyObject(session);\n}\nexport function isSessionStarted(session) {\n return !isSessionInNotStartedState(session);\n}\nexport function isSessionInExpiredState(session) {\n return session.isExpired !== undefined || !isActiveSession(session);\n}\n// An active session is a session in either `Tracked` or `NotTracked` state\nfunction isActiveSession(sessionState) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return ((sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&\n (sessionState.expire === undefined || dateNow() < Number(sessionState.expire)));\n}\nexport function expandSessionState(session) {\n session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);\n}\nexport function toSessionString(session) {\n return (objectEntries(session)\n // we use `aid` as a key for anonymousId\n .map(([key, value]) => (key === 'anonymousId' ? `aid=${value}` : `${key}=${value}`))\n .join(SESSION_ENTRY_SEPARATOR));\n}\nexport function toSessionState(sessionString) {\n const session = {};\n if (isValidSessionString(sessionString)) {\n sessionString.split(SESSION_ENTRY_SEPARATOR).forEach((entry) => {\n const matches = SESSION_ENTRY_REGEXP.exec(entry);\n if (matches !== null) {\n const [, key, value] = matches;\n if (key === 'aid') {\n // we use `aid` as a key for anonymousId\n session.anonymousId = value;\n }\n else {\n session[key] = value;\n }\n }\n });\n }\n return session;\n}\n//# sourceMappingURL=sessionState.js.map","import { getInitCookie } from '../../browser/cookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nimport { expandSessionState, isSessionStarted } from './sessionState';\nexport const OLD_SESSION_COOKIE_NAME = '_dd';\nexport const OLD_RUM_COOKIE_NAME = '_dd_r';\nexport const OLD_LOGS_COOKIE_NAME = '_dd_l';\n// duplicate values to avoid dependency issues\nexport const RUM_SESSION_KEY = 'rum';\nexport const LOGS_SESSION_KEY = 'logs';\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(cookieStoreStrategy) {\n const sessionString = getInitCookie(SESSION_STORE_KEY);\n if (!sessionString) {\n const oldSessionId = getInitCookie(OLD_SESSION_COOKIE_NAME);\n const oldRumType = getInitCookie(OLD_RUM_COOKIE_NAME);\n const oldLogsType = getInitCookie(OLD_LOGS_COOKIE_NAME);\n const session = {};\n if (oldSessionId) {\n session.id = oldSessionId;\n }\n if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n session[LOGS_SESSION_KEY] = oldLogsType;\n }\n if (oldRumType && /^[012]$/.test(oldRumType)) {\n session[RUM_SESSION_KEY] = oldRumType;\n }\n if (isSessionStarted(session)) {\n expandSessionState(session);\n cookieStoreStrategy.persistSession(session);\n }\n }\n}\n//# sourceMappingURL=oldCookiesMigration.js.map","import { isChromium } from '../../../tools/utils/browserDetection';\nimport { getCurrentSite, areCookiesAuthorized, getCookie, setCookie } from '../../../browser/cookie';\nimport { tryOldCookiesMigration } from '../oldCookiesMigration';\nimport { SESSION_COOKIE_EXPIRATION_DELAY, SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY, SessionPersistence, } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nexport function selectCookieStrategy(initConfiguration) {\n const cookieOptions = buildCookieOptions(initConfiguration);\n return cookieOptions && areCookiesAuthorized(cookieOptions)\n ? { type: SessionPersistence.COOKIE, cookieOptions }\n : undefined;\n}\nexport function initCookieStrategy(configuration, cookieOptions) {\n const cookieStore = {\n /**\n * Lock strategy allows mitigating issues due to concurrent access to cookie.\n * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.\n */\n isLockEnabled: isChromium(),\n persistSession: (sessionState) => storeSessionCookie(cookieOptions, configuration, sessionState, SESSION_EXPIRATION_DELAY),\n retrieveSession: retrieveSessionCookie,\n expireSession: (sessionState) => storeSessionCookie(cookieOptions, configuration, getExpiredSessionState(sessionState, configuration), SESSION_TIME_OUT_DELAY),\n };\n tryOldCookiesMigration(cookieStore);\n return cookieStore;\n}\nfunction storeSessionCookie(options, configuration, sessionState, defaultTimeout) {\n setCookie(SESSION_STORE_KEY, toSessionString(sessionState), configuration.trackAnonymousUser ? SESSION_COOKIE_EXPIRATION_DELAY : defaultTimeout, options);\n}\nexport function retrieveSessionCookie() {\n const sessionString = getCookie(SESSION_STORE_KEY);\n const sessionState = toSessionState(sessionString);\n return sessionState;\n}\nexport function buildCookieOptions(initConfiguration) {\n const cookieOptions = {};\n cookieOptions.secure =\n !!initConfiguration.useSecureSessionCookie || !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n cookieOptions.crossSite = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n if (initConfiguration.trackSessionAcrossSubdomains) {\n const currentSite = getCurrentSite();\n if (!currentSite) {\n return;\n }\n cookieOptions.domain = currentSite;\n }\n return cookieOptions;\n}\n//# sourceMappingURL=sessionInCookie.js.map","import { generateUUID } from '../../../tools/utils/stringUtils';\nimport { SessionPersistence } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nconst LOCAL_STORAGE_TEST_KEY = '_dd_test_';\nexport function selectLocalStorageStrategy() {\n try {\n const id = generateUUID();\n const testKey = `${LOCAL_STORAGE_TEST_KEY}${id}`;\n localStorage.setItem(testKey, id);\n const retrievedId = localStorage.getItem(testKey);\n localStorage.removeItem(testKey);\n return id === retrievedId ? { type: SessionPersistence.LOCAL_STORAGE } : undefined;\n }\n catch (_a) {\n return undefined;\n }\n}\nexport function initLocalStorageStrategy(configuration) {\n return {\n isLockEnabled: false,\n persistSession: persistInLocalStorage,\n retrieveSession: retrieveSessionFromLocalStorage,\n expireSession: (sessionState) => expireSessionFromLocalStorage(sessionState, configuration),\n };\n}\nfunction persistInLocalStorage(sessionState) {\n localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState));\n}\nfunction retrieveSessionFromLocalStorage() {\n const sessionString = localStorage.getItem(SESSION_STORE_KEY);\n return toSessionState(sessionString);\n}\nfunction expireSessionFromLocalStorage(previousSessionState, configuration) {\n persistInLocalStorage(getExpiredSessionState(previousSessionState, configuration));\n}\n//# sourceMappingURL=sessionInLocalStorage.js.map","import { setTimeout } from '../../tools/timer';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { elapsed, ONE_SECOND, timeStampNow } from '../../tools/utils/timeUtils';\nimport { expandSessionState, isSessionInExpiredState } from './sessionState';\nexport const LOCK_RETRY_DELAY = 10;\nexport const LOCK_MAX_TRIES = 100;\n// Locks should be hold for a few milliseconds top, just the time it takes to read and write a\n// cookie. Using one second should be enough in most situations.\nexport const LOCK_EXPIRATION_DELAY = ONE_SECOND;\nconst LOCK_SEPARATOR = '--';\nconst bufferedOperations = [];\nlet ongoingOperations;\nexport function processSessionStoreOperations(operations, sessionStoreStrategy, numberOfRetries = 0) {\n var _a;\n const { isLockEnabled, persistSession, expireSession } = sessionStoreStrategy;\n const persistWithLock = (session) => persistSession({ ...session, lock: currentLock });\n const retrieveStore = () => {\n const { lock, ...session } = sessionStoreStrategy.retrieveSession();\n return {\n session,\n lock: lock && !isLockExpired(lock) ? lock : undefined,\n };\n };\n if (!ongoingOperations) {\n ongoingOperations = operations;\n }\n if (operations !== ongoingOperations) {\n bufferedOperations.push(operations);\n return;\n }\n if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {\n next(sessionStoreStrategy);\n return;\n }\n let currentLock;\n let currentStore = retrieveStore();\n if (isLockEnabled) {\n // if someone has lock, retry later\n if (currentStore.lock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n // acquire lock\n currentLock = createLock();\n persistWithLock(currentStore.session);\n // if lock is not acquired, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n let processedSession = operations.process(currentStore.session);\n if (isLockEnabled) {\n // if lock corrupted after process, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n if (processedSession) {\n if (isSessionInExpiredState(processedSession)) {\n expireSession(processedSession);\n }\n else {\n expandSessionState(processedSession);\n if (isLockEnabled) {\n persistWithLock(processedSession);\n }\n else {\n persistSession(processedSession);\n }\n }\n }\n if (isLockEnabled) {\n // correctly handle lock around expiration would require to handle this case properly at several levels\n // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n if (!(processedSession && isSessionInExpiredState(processedSession))) {\n // if lock corrupted after persist, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n persistSession(currentStore.session);\n processedSession = currentStore.session;\n }\n }\n // call after even if session is not persisted in order to perform operations on\n // up-to-date session state value => the value could have been modified by another tab\n (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentStore.session);\n next(sessionStoreStrategy);\n}\nfunction retryLater(operations, sessionStore, currentNumberOfRetries) {\n setTimeout(() => {\n processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1);\n }, LOCK_RETRY_DELAY);\n}\nfunction next(sessionStore) {\n ongoingOperations = undefined;\n const nextOperations = bufferedOperations.shift();\n if (nextOperations) {\n processSessionStoreOperations(nextOperations, sessionStore);\n }\n}\nexport function createLock() {\n return generateUUID() + LOCK_SEPARATOR + timeStampNow();\n}\nfunction isLockExpired(lock) {\n const [, timeStamp] = lock.split(LOCK_SEPARATOR);\n return !timeStamp || elapsed(Number(timeStamp), timeStampNow()) > LOCK_EXPIRATION_DELAY;\n}\n//# sourceMappingURL=sessionStoreOperations.js.map","import { clearInterval, setInterval } from '../../tools/timer';\nimport { Observable } from '../../tools/observable';\nimport { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { display } from '../../tools/display';\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie';\nimport { getExpiredSessionState, isSessionInExpiredState, isSessionInNotStartedState, isSessionStarted, } from './sessionState';\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage';\nimport { processSessionStoreOperations } from './sessionStoreOperations';\nimport { SESSION_NOT_TRACKED, SessionPersistence } from './sessionConstants';\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport const STORAGE_POLL_DELAY = ONE_SECOND;\n/**\n * Selects the correct session store strategy type based on the configuration and storage\n * availability.\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n switch (initConfiguration.sessionPersistence) {\n case SessionPersistence.COOKIE:\n return selectCookieStrategy(initConfiguration);\n case SessionPersistence.LOCAL_STORAGE:\n return selectLocalStorageStrategy();\n case undefined: {\n let sessionStoreStrategyType = selectCookieStrategy(initConfiguration);\n if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n sessionStoreStrategyType = selectLocalStorageStrategy();\n }\n return sessionStoreStrategyType;\n }\n default:\n display.error(`Invalid session persistence '${String(initConfiguration.sessionPersistence)}'`);\n }\n}\nexport function getSessionStoreStrategy(sessionStoreStrategyType, configuration) {\n return sessionStoreStrategyType.type === SessionPersistence.COOKIE\n ? initCookieStrategy(configuration, sessionStoreStrategyType.cookieOptions)\n : initLocalStorageStrategy(configuration);\n}\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(sessionStoreStrategyType, configuration, productKey, computeTrackingType, sessionStoreStrategy = getSessionStoreStrategy(sessionStoreStrategyType, configuration)) {\n const renewObservable = new Observable();\n const expireObservable = new Observable();\n const sessionStateUpdateObservable = new Observable();\n const watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);\n let sessionCache;\n startSession();\n const { throttled: throttledExpandOrRenewSession, cancel: cancelExpandOrRenewSession } = throttle(() => {\n processSessionStoreOperations({\n process: (sessionState) => {\n if (isSessionInNotStartedState(sessionState)) {\n return;\n }\n const synchronizedSession = synchronizeSession(sessionState);\n expandOrRenewSessionState(synchronizedSession);\n return synchronizedSession;\n },\n after: (sessionState) => {\n if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n renewSessionInCache(sessionState);\n }\n sessionCache = sessionState;\n },\n }, sessionStoreStrategy);\n }, STORAGE_POLL_DELAY);\n function expandSession() {\n processSessionStoreOperations({\n process: (sessionState) => (hasSessionInCache() ? synchronizeSession(sessionState) : undefined),\n }, sessionStoreStrategy);\n }\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session store\n * - if the session is not active, clear the session store and expire the session cache\n */\n function watchSession() {\n const sessionState = sessionStoreStrategy.retrieveSession();\n if (isSessionInExpiredState(sessionState)) {\n processSessionStoreOperations({\n process: (sessionState) => isSessionInExpiredState(sessionState) ? getExpiredSessionState(sessionState, configuration) : undefined,\n after: synchronizeSession,\n }, sessionStoreStrategy);\n }\n else {\n synchronizeSession(sessionState);\n }\n }\n function synchronizeSession(sessionState) {\n if (isSessionInExpiredState(sessionState)) {\n sessionState = getExpiredSessionState(sessionState, configuration);\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache();\n }\n else {\n sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState });\n sessionCache = sessionState;\n }\n }\n return sessionState;\n }\n function startSession() {\n processSessionStoreOperations({\n process: (sessionState) => {\n if (isSessionInNotStartedState(sessionState)) {\n return getExpiredSessionState(sessionState, configuration);\n }\n },\n after: (sessionState) => {\n sessionCache = sessionState;\n },\n }, sessionStoreStrategy);\n }\n function expandOrRenewSessionState(sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return false;\n }\n const trackingType = computeTrackingType(sessionState[productKey]);\n sessionState[productKey] = trackingType;\n delete sessionState.isExpired;\n if (trackingType !== SESSION_NOT_TRACKED && !sessionState.id) {\n sessionState.id = generateUUID();\n sessionState.created = String(dateNow());\n }\n }\n function hasSessionInCache() {\n return (sessionCache === null || sessionCache === void 0 ? void 0 : sessionCache[productKey]) !== undefined;\n }\n function isSessionInCacheOutdated(sessionState) {\n return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey];\n }\n function expireSessionInCache() {\n sessionCache = getExpiredSessionState(sessionCache, configuration);\n expireObservable.notify();\n }\n function renewSessionInCache(sessionState) {\n sessionCache = sessionState;\n renewObservable.notify();\n }\n function updateSessionState(partialSessionState) {\n processSessionStoreOperations({\n process: (sessionState) => ({ ...sessionState, ...partialSessionState }),\n after: synchronizeSession,\n }, sessionStoreStrategy);\n }\n return {\n expandOrRenewSession: throttledExpandOrRenewSession,\n expandSession,\n getSession: () => sessionCache,\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable,\n restartSession: startSession,\n expire: () => {\n cancelExpandOrRenewSession();\n sessionStoreStrategy.expireSession(sessionCache);\n synchronizeSession(getExpiredSessionState(sessionCache, configuration));\n },\n stop: () => {\n clearInterval(watchSessionTimeoutId);\n },\n updateSessionState,\n };\n}\n//# sourceMappingURL=sessionStore.js.map","import { Observable } from '../tools/observable';\nexport const TrackingConsent = {\n GRANTED: 'granted',\n NOT_GRANTED: 'not-granted',\n};\nexport function createTrackingConsentState(currentConsent) {\n const observable = new Observable();\n return {\n tryToInit(trackingConsent) {\n if (!currentConsent) {\n currentConsent = trackingConsent;\n }\n },\n update(trackingConsent) {\n currentConsent = trackingConsent;\n observable.notify();\n },\n isGranted() {\n return currentConsent === TrackingConsent.GRANTED;\n },\n observable,\n };\n}\n//# sourceMappingURL=trackingConsent.js.map","/**\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 './display';\nimport { getType } from './utils/typeUtils';\nexport function isMatchOption(item) {\n const itemType = getType(item);\n return itemType === 'string' || itemType === 'function' || item instanceof RegExp;\n}\n/**\n * Returns true if value can be matched by at least one of the provided MatchOptions.\n * When comparing strings, setting useStartsWith to true will compare the value with the start of\n * the option, instead of requiring an exact match.\n */\nexport function matchList(list, value, useStartsWith = false) {\n return list.some((item) => {\n try {\n if (typeof item === 'function') {\n return item(value);\n }\n else if (item instanceof RegExp) {\n return item.test(value);\n }\n else if (typeof item === 'string') {\n return useStartsWith ? value.startsWith(item) : item === value;\n }\n }\n catch (e) {\n display.error(e);\n }\n return false;\n });\n}\n//# sourceMappingURL=matchOption.js.map","export const EXTENSION_PREFIXES = ['chrome-extension://', 'moz-extension://'];\nexport function containsExtensionUrl(str) {\n return EXTENSION_PREFIXES.some((prefix) => str.includes(prefix));\n}\n/**\n * Utility function to detect if the SDK is being initialized in an unsupported browser extension environment.\n *\n * @param windowLocation - The current window location to check\n * @param stack - The error stack to check for extension URLs\n * @returns true if running in an unsupported browser extension environment\n */\nexport function isUnsupportedExtensionEnvironment(windowLocation, stack = '') {\n // If the page itself is an extension page.\n if (containsExtensionUrl(windowLocation)) {\n return false;\n }\n // Since we generate the error on the init, we check the 2nd frame line.\n const frameLines = stack.split('\\n').filter((line) => {\n const trimmedLine = line.trim();\n return trimmedLine.length && /^at\\s+|@/.test(trimmedLine);\n });\n const target = frameLines[1] || '';\n return containsExtensionUrl(target);\n}\n//# sourceMappingURL=extensionUtils.js.map","import { display } from '../tools/display';\nimport { matchList } from '../tools/matchOption';\nimport { isUnsupportedExtensionEnvironment } from './extension/extensionUtils';\nexport const ERROR_DOES_NOT_HAVE_ALLOWED_TRACKING_ORIGIN = 'Running the Browser SDK in a Web extension content script is forbidden unless the `allowedTrackingOrigins` option is provided.';\nexport const ERROR_NOT_ALLOWED_TRACKING_ORIGIN = 'SDK initialized on a non-allowed domain.';\nexport function isAllowedTrackingOrigins(configuration, errorStack, windowOrigin = typeof location !== 'undefined' ? location.origin : '') {\n const allowedTrackingOrigins = configuration.allowedTrackingOrigins;\n if (!allowedTrackingOrigins) {\n if (isUnsupportedExtensionEnvironment(windowOrigin, errorStack)) {\n display.error(ERROR_DOES_NOT_HAVE_ALLOWED_TRACKING_ORIGIN);\n return false;\n }\n return true;\n }\n const isAllowed = matchList(allowedTrackingOrigins, windowOrigin);\n if (!isAllowed) {\n display.error(ERROR_NOT_ALLOWED_TRACKING_ORIGIN);\n }\n return isAllowed;\n}\n//# sourceMappingURL=allowedTrackingOrigins.js.map","export const INTAKE_SITE_STAGING = 'datad0g.com';\nexport const INTAKE_SITE_FED_STAGING = 'dd0g-gov.com';\nexport const INTAKE_SITE_US1 = 'datadoghq.com';\nexport const INTAKE_SITE_EU1 = 'datadoghq.eu';\nexport const INTAKE_SITE_US1_FED = 'ddog-gov.com';\nexport const PCI_INTAKE_HOST_US1 = 'pci.browser-intake-datadoghq.com';\nexport const INTAKE_URL_PARAMETERS = ['ddsource', 'dd-api-key', 'dd-request-id'];\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_FED_STAGING, INTAKE_SITE_US1, PCI_INTAKE_HOST_US1 } from '../intakeSites';\nexport function createEndpointBuilder(initConfiguration, trackType, extraParameters) {\n const buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType);\n return {\n build(api, payload) {\n const parameters = buildEndpointParameters(initConfiguration, trackType, api, payload, extraParameters);\n return buildUrlWithParameters(parameters);\n },\n trackType,\n };\n}\n/**\n * Create a function used to build a full endpoint url from provided parameters. The goal of this\n * function is to pre-compute some parts of the URL to avoid re-computing everything on every\n * request, as only parameters are changing.\n */\nfunction createEndpointUrlWithParametersBuilder(initConfiguration, trackType) {\n const path = `/api/v2/${trackType}`;\n const proxy = initConfiguration.proxy;\n if (typeof proxy === 'string') {\n const normalizedProxyUrl = normalizeUrl(proxy);\n return (parameters) => `${normalizedProxyUrl}?ddforward=${encodeURIComponent(`${path}?${parameters}`)}`;\n }\n if (typeof proxy === 'function') {\n return (parameters) => proxy({ path, parameters });\n }\n const host = buildEndpointHost(trackType, initConfiguration);\n return (parameters) => `https://${host}${path}?${parameters}`;\n}\nexport function buildEndpointHost(trackType, initConfiguration) {\n const { site = INTAKE_SITE_US1, internalAnalyticsSubdomain } = initConfiguration;\n if (trackType === 'logs' && initConfiguration.usePciIntake && site === INTAKE_SITE_US1) {\n return PCI_INTAKE_HOST_US1;\n }\n if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n return `${internalAnalyticsSubdomain}.${INTAKE_SITE_US1}`;\n }\n if (site === INTAKE_SITE_FED_STAGING) {\n return `http-intake.logs.${site}`;\n }\n const domainParts = site.split('.');\n const extension = domainParts.pop();\n return `browser-intake-${domainParts.join('-')}.${extension}`;\n}\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters({ clientToken, internalAnalyticsSubdomain, source = 'browser' }, trackType, api, { retry, encoding }, extraParameters = []) {\n const parameters = [\n `ddsource=${source}`,\n `dd-api-key=${clientToken}`,\n `dd-evp-origin-version=${encodeURIComponent(\"6.22.0\")}`,\n 'dd-evp-origin=browser',\n `dd-request-id=${generateUUID()}`,\n ].concat(extraParameters);\n if (encoding) {\n parameters.push(`dd-evp-encoding=${encoding}`);\n }\n if (trackType === 'rum') {\n parameters.push(`batch_time=${timeStampNow()}`, `_dd.api=${api}`);\n if (retry) {\n parameters.push(`_dd.retry_count=${retry.count}`, `_dd.retry_after=${retry.lastFailureStatus}`);\n }\n }\n if (internalAnalyticsSubdomain) {\n parameters.reverse();\n }\n return parameters.join('&');\n}\n//# sourceMappingURL=endpointBuilder.js.map","import { INTAKE_SITE_US1, INTAKE_URL_PARAMETERS } from '../intakeSites';\nimport { createEndpointBuilder } from './endpointBuilder';\nexport function computeTransportConfiguration(initConfiguration) {\n const site = initConfiguration.site || INTAKE_SITE_US1;\n const source = validateSource(initConfiguration.source);\n const endpointBuilders = computeEndpointBuilders({ ...initConfiguration, site, source });\n const replicaConfiguration = computeReplicaConfiguration({ ...initConfiguration, site, source });\n return {\n replica: replicaConfiguration,\n site,\n source,\n ...endpointBuilders,\n };\n}\nfunction validateSource(source) {\n if (source === 'flutter' || source === 'unity') {\n return source;\n }\n return 'browser';\n}\nfunction computeEndpointBuilders(initConfiguration) {\n return {\n logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs'),\n rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum'),\n profilingEndpointBuilder: createEndpointBuilder(initConfiguration, 'profile'),\n sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay'),\n exposuresEndpointBuilder: createEndpointBuilder(initConfiguration, 'exposures'),\n };\n}\nfunction computeReplicaConfiguration(initConfiguration) {\n if (!initConfiguration.replica) {\n return;\n }\n const replicaConfiguration = {\n ...initConfiguration,\n site: INTAKE_SITE_US1,\n clientToken: initConfiguration.replica.clientToken,\n };\n return {\n logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs'),\n rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', [\n `application.id=${initConfiguration.replica.applicationId}`,\n ]),\n };\n}\nexport function isIntakeUrl(url) {\n // check if tags is present in the query string\n return INTAKE_URL_PARAMETERS.every((param) => url.includes(param));\n}\n//# sourceMappingURL=transportConfiguration.js.map","import { catchUserErrors } from '../../tools/catchUserErrors';\nimport { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nimport { ONE_SECOND } from '../../tools/utils/timeUtils';\nimport { isPercentage } from '../../tools/utils/numberUtils';\nimport { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils';\nimport { objectHasValue } from '../../tools/utils/objectUtils';\nimport { selectSessionStoreStrategyType } from '../session/sessionStore';\nimport { TrackingConsent } from '../trackingConsent';\nimport { isAllowedTrackingOrigins } from '../allowedTrackingOrigins';\nimport { isWorkerEnvironment } from '../../tools/globalObject';\nimport { computeTransportConfiguration } from './transportConfiguration';\n/**\n * Default privacy level for the browser SDK.\n *\n * [Replay Privacy Options](https://docs.datadoghq.com/real_user_monitoring/session_replay/browser/privacy_options) for further information.\n */\nexport const DefaultPrivacyLevel = {\n ALLOW: 'allow',\n MASK: 'mask',\n MASK_USER_INPUT: 'mask-user-input',\n MASK_UNLESS_ALLOWLISTED: 'mask-unless-allowlisted',\n};\n/**\n * Trace context injection option.\n *\n * See [Connect RUM and Traces](https://docs.datadoghq.com/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.\n */\nexport const TraceContextInjection = {\n ALL: 'all',\n SAMPLED: 'sampled',\n};\nfunction isString(tag, tagName) {\n if (tag !== undefined && tag !== null && typeof tag !== 'string') {\n display.error(`${tagName} must be defined as a string`);\n return false;\n }\n return true;\n}\nfunction isDatadogSite(site) {\n if (site && typeof site === 'string' && !/(datadog|ddog|datad0g|dd0g)/.test(site)) {\n display.error(`Site should be a valid Datadog site. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/site/.`);\n return false;\n }\n return true;\n}\nexport function isSampleRate(sampleRate, name) {\n if (sampleRate !== undefined && !isPercentage(sampleRate)) {\n display.error(`${name} Sample Rate should be a number between 0 and 100`);\n return false;\n }\n return true;\n}\nexport function validateAndBuildConfiguration(initConfiguration, errorStack) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n if (!initConfiguration || !initConfiguration.clientToken) {\n display.error('Client Token is not configured, we will not send any data.');\n return;\n }\n if (initConfiguration.allowedTrackingOrigins !== undefined &&\n !Array.isArray(initConfiguration.allowedTrackingOrigins)) {\n display.error('Allowed Tracking Origins must be an array');\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 !isAllowedTrackingOrigins(initConfiguration, errorStack !== null && errorStack !== void 0 ? errorStack : '')) {\n return;\n }\n if (initConfiguration.trackingConsent !== undefined &&\n !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)) {\n display.error('Tracking Consent should be either \"granted\" or \"not-granted\"');\n return;\n }\n return {\n beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n sessionStoreStrategyType: isWorkerEnvironment ? undefined : 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: (_e = initConfiguration.service) !== null && _e !== void 0 ? _e : undefined,\n env: (_f = initConfiguration.env) !== null && _f !== void 0 ? _f : undefined,\n version: (_g = initConfiguration.version) !== null && _g !== void 0 ? _g : undefined,\n datacenter: (_h = initConfiguration.datacenter) !== null && _h !== void 0 ? _h : undefined,\n silentMultipleInit: !!initConfiguration.silentMultipleInit,\n allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,\n trackingConsent: (_j = initConfiguration.trackingConsent) !== null && _j !== void 0 ? _j : TrackingConsent.GRANTED,\n trackAnonymousUser: (_k = initConfiguration.trackAnonymousUser) !== null && _k !== void 0 ? _k : true,\n storeContextsAcrossPages: !!initConfiguration.storeContextsAcrossPages,\n /**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\n batchBytesLimit: 16 * ONE_KIBI_BYTE,\n eventRateLimiterThreshold: 3000,\n maxTelemetryEventsPerPage: 15,\n /**\n * flush automatically, aim to be lower than ALB connection timeout\n * to maximize connection reuse.\n */\n flushTimeout: (30 * ONE_SECOND),\n /**\n * Logs intake limit. When using the SDK in a Worker Environment, we\n * limit the batch size to 1 to ensure it can be sent in a single event.\n */\n batchMessagesLimit: isWorkerEnvironment ? 1 : 50,\n messageBytesLimit: 256 * ONE_KIBI_BYTE,\n /**\n * The source of the SDK, used for support plugins purposes.\n */\n variant: initConfiguration.variant,\n sdkVersion: initConfiguration.sdkVersion,\n ...computeTransportConfiguration(initConfiguration),\n };\n}\nexport function serializeConfiguration(initConfiguration) {\n return {\n session_sample_rate: initConfiguration.sessionSampleRate,\n telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,\n use_before_send: !!initConfiguration.beforeSend,\n use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,\n use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n use_proxy: !!initConfiguration.proxy,\n silent_multiple_init: initConfiguration.silentMultipleInit,\n track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n track_anonymous_user: initConfiguration.trackAnonymousUser,\n session_persistence: initConfiguration.sessionPersistence,\n allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,\n store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,\n tracking_consent: initConfiguration.trackingConsent,\n use_allowed_tracking_origins: Array.isArray(initConfiguration.allowedTrackingOrigins),\n source: initConfiguration.source,\n sdk_version: initConfiguration.sdkVersion,\n variant: initConfiguration.variant,\n };\n}\n//# sourceMappingURL=configuration.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[\"TRACK_INTAKE_REQUESTS\"] = \"track_intake_requests\";\n ExperimentalFeature[\"USE_TREE_WALKER_FOR_ACTION_NAME\"] = \"use_tree_walker_for_action_name\";\n ExperimentalFeature[\"FEATURE_OPERATION_VITAL\"] = \"feature_operation_vital\";\n ExperimentalFeature[\"SHORT_SESSION_INVESTIGATION\"] = \"short_session_investigation\";\n})(ExperimentalFeature || (ExperimentalFeature = {}));\nconst enabledExperimentalFeatures = new Set();\nexport function initFeatureFlags(enableExperimentalFeatures) {\n if (Array.isArray(enableExperimentalFeatures)) {\n addExperimentalFeatures(enableExperimentalFeatures.filter((flag) => objectHasValue(ExperimentalFeature, flag)));\n }\n}\nexport function addExperimentalFeatures(enabledFeatures) {\n enabledFeatures.forEach((flag) => {\n enabledExperimentalFeatures.add(flag);\n });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n return enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n enabledExperimentalFeatures.clear();\n}\nexport function getExperimentalFeatures() {\n return enabledExperimentalFeatures;\n}\n//# sourceMappingURL=experimentalFeatures.js.map","/**\n * Cross-browser stack trace computation.\n *\n * Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js\n */\nconst UNKNOWN_FUNCTION = '?';\nexport function computeStackTrace(ex) {\n var _a, _b;\n const stack = [];\n let stackProperty = tryToGetString(ex, 'stack');\n const exString = String(ex);\n if (stackProperty && stackProperty.startsWith(exString)) {\n stackProperty = stackProperty.slice(exString.length);\n }\n if (stackProperty) {\n stackProperty.split('\\n').forEach((line) => {\n const stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION;\n }\n stack.push(stackFrame);\n }\n });\n }\n if (stack.length > 0 && isWronglyReportingCustomErrors() && ex instanceof Error) {\n // if we are wrongly reporting custom errors\n const constructors = [];\n // go through each inherited constructor\n let currentPrototype = ex;\n while ((currentPrototype = Object.getPrototypeOf(currentPrototype)) &&\n isNonNativeClassPrototype(currentPrototype)) {\n const constructorName = ((_a = currentPrototype.constructor) === null || _a === void 0 ? void 0 : _a.name) || UNKNOWN_FUNCTION;\n constructors.push(constructorName);\n }\n // traverse the stacktrace in reverse order because the stacktrace starts with the last inherited constructor\n // we check constructor names to ensure we remove the correct frame (and there isn't a weird unsupported environment behavior)\n for (let i = constructors.length - 1; i >= 0 && ((_b = stack[0]) === null || _b === void 0 ? void 0 : _b.func) === constructors[i]; i--) {\n // if the first stack frame is the custom error constructor\n // null stack frames may represent frames that failed to be parsed because the error class did not have a constructor\n stack.shift(); // remove it\n }\n }\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack,\n };\n}\nconst fileUrl = '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|snippet|<anonymous>|\\\\w+\\\\.|\\\\/).*?)';\nconst filePosition = '(?::(\\\\d+))';\nconst CHROME_LINE_RE = new RegExp(`^\\\\s*at (.*?) ?\\\\(${fileUrl}${filePosition}?${filePosition}?\\\\)?\\\\s*$`, 'i');\nconst CHROME_EVAL_RE = new RegExp(`\\\\((\\\\S*)${filePosition}${filePosition}\\\\)`);\nfunction parseChromeLine(line) {\n const parts = CHROME_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n const isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n const submatch = CHROME_EVAL_RE.exec(parts[2]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined,\n };\n}\nconst CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(`^\\\\s*at ?${fileUrl}${filePosition}?${filePosition}??\\\\s*$`, 'i');\nfunction parseChromeAnonymousLine(line) {\n const parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1],\n };\n}\nconst WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n const parts = WINJS_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2],\n };\n}\nconst GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:(?:(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle|\\[wasm code\\])(?::(\\d+))?(?::(\\d+))?)|@)\\s*$/i;\nconst GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n const parts = GECKO_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n const submatch = GECKO_EVAL_RE.exec(parts[3]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = undefined; // no column when eval\n }\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3],\n };\n}\nfunction tryToGetString(candidate, property) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined;\n }\n const value = candidate[property];\n return typeof value === 'string' ? value : undefined;\n}\nexport function computeStackTraceFromOnErrorMessage(messageObj, url, line, column) {\n if (url === undefined) {\n return;\n }\n const { name, message } = tryToParseMessage(messageObj);\n return {\n name,\n message,\n stack: [{ url, column, line }],\n };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nconst ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/;\nfunction tryToParseMessage(messageObj) {\n let name;\n let message;\n if ({}.toString.call(messageObj) === '[object String]') {\n ;\n [, name, message] = ERROR_TYPES_RE.exec(messageObj);\n }\n return { name, message };\n}\n// Custom error stacktrace fix\n// Some browsers (safari/firefox) add the error constructor as a frame in the stacktrace\n// In order to normalize the stacktrace, we need to remove it\nfunction isNonNativeClassPrototype(prototype) {\n return String(prototype.constructor).startsWith('class ');\n}\nlet isWronglyReportingCustomErrorsCache;\nfunction isWronglyReportingCustomErrors() {\n if (isWronglyReportingCustomErrorsCache !== undefined) {\n return isWronglyReportingCustomErrorsCache;\n }\n /* eslint-disable no-restricted-syntax */\n class DatadogTestCustomError extends Error {\n constructor() {\n super();\n this.name = 'Error'; // set name to Error so that no browser would default to the constructor name\n }\n }\n const [customError, nativeError] = [DatadogTestCustomError, Error].map((errConstructor) => new errConstructor()); // so that both errors should exactly have the same stacktrace\n isWronglyReportingCustomErrorsCache =\n // If customError is not a class, it means that this was built with ES5 as target, converting the class to a normal object.\n // Thus, error constructors will be reported on all browsers, which is the expected behavior.\n isNonNativeClassPrototype(Object.getPrototypeOf(customError)) &&\n // If the browser is correctly reporting the stacktrace, the normal error stacktrace should be the same as the custom error stacktrace\n nativeError.stack !== customError.stack;\n return isWronglyReportingCustomErrorsCache;\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { callMonitored } from '../monitor';\nimport { computeStackTrace } from './computeStackTrace';\n/**\n * Creates a stacktrace without SDK internal frames.\n * Constraints:\n * - Has to be called at the utmost position of the call stack.\n * - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack(type) {\n /**\n * Skip the two internal frames:\n * - SDK API (console.error, ...)\n * - this function\n * in order to keep only the user calls\n */\n const internalFramesToSkip = 2;\n const error = new Error(type);\n error.name = 'HandlingStack';\n let formattedStack;\n callMonitored(() => {\n const stackTrace = computeStackTrace(error);\n stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n formattedStack = toStackTraceString(stackTrace);\n });\n return formattedStack;\n}\nexport function toStackTraceString(stack) {\n let result = formatErrorMessage(stack);\n stack.stack.forEach((frame) => {\n const func = frame.func === '?' ? '<anonymous>' : frame.func;\n const args = frame.args && frame.args.length > 0 ? `(${frame.args.join(', ')})` : '';\n const line = frame.line ? `:${frame.line}` : '';\n const column = frame.line && frame.column ? `:${frame.column}` : '';\n result += `\\n at ${func}${args} @ ${frame.url}${line}${column}`;\n });\n return result;\n}\nexport function formatErrorMessage(stack) {\n return `${stack.name || 'Error'}: ${stack.message}`;\n}\n//# sourceMappingURL=handlingStack.js.map","import { setTimeout } from './timer';\nimport { callMonitored } from './monitor';\nimport { noop } from './utils/functionUtils';\nimport { createHandlingStack } from './stackTrace/handlingStack';\n/**\n * Instruments a method on a object, calling the given callback before the original method is\n * invoked. The callback receives an object with information about the method call.\n *\n * This function makes sure that we are \"good citizens\" regarding third party instrumentations: when\n * removing the instrumentation, the original method is usually restored, but if a third party\n * instrumentation was set after ours, we keep it in place and just replace our instrumentation with\n * a noop.\n *\n * Note: it is generally better to instrument methods that are \"owned\" by the object instead of ones\n * that are inherited from the prototype chain. Example:\n * * do: `instrumentMethod(Array.prototype, 'push', ...)`\n * * don't: `instrumentMethod([], 'push', ...)`\n *\n * This method is also used to set event handler properties (ex: window.onerror = ...), as it has\n * the same requirements as instrumenting a method:\n * * if the event handler is already set by a third party, we need to call it and not just blindly\n * override it.\n * * if the event handler is set by a third party after us, we need to keep it in place when\n * removing ours.\n *\n * @example\n *\n * instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {\n * console.log('Before calling fetch on', target, 'with parameters', parameters)\n *\n * onPostCall((result) => {\n * console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)\n * })\n * })\n */\nexport function instrumentMethod(targetPrototype, method, onPreCall, { computeHandlingStack } = {}) {\n let original = targetPrototype[method];\n if (typeof original !== 'function') {\n if (method in targetPrototype && method.startsWith('on')) {\n original = noop;\n }\n else {\n return { stop: noop };\n }\n }\n let stopped = false;\n const instrumentation = function () {\n if (stopped) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return original.apply(this, arguments);\n }\n const parameters = Array.from(arguments);\n let postCallCallback;\n callMonitored(onPreCall, null, [\n {\n target: this,\n parameters,\n onPostCall: (callback) => {\n postCallCallback = callback;\n },\n handlingStack: computeHandlingStack ? createHandlingStack('instrumented method') : undefined,\n },\n ]);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const result = original.apply(this, parameters);\n if (postCallCallback) {\n callMonitored(postCallCallback, null, [result]);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result;\n };\n targetPrototype[method] = instrumentation;\n return {\n stop: () => {\n stopped = true;\n // If the instrumentation has been removed by a third party, keep the last one\n if (targetPrototype[method] === instrumentation) {\n targetPrototype[method] = original;\n }\n },\n };\n}\nexport function instrumentSetter(targetPrototype, property, after) {\n const originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property);\n if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n return { stop: noop };\n }\n const stoppedInstrumentation = noop;\n let instrumentation = (target, value) => {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(() => {\n if (instrumentation !== stoppedInstrumentation) {\n after(target, value);\n }\n }, 0);\n };\n const instrumentationWrapper = function (value) {\n originalDescriptor.set.call(this, value);\n instrumentation(this, value);\n };\n Object.defineProperty(targetPrototype, property, {\n set: instrumentationWrapper,\n });\n return {\n stop: () => {\n var _a;\n if (((_a = Object.getOwnPropertyDescriptor(targetPrototype, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n Object.defineProperty(targetPrototype, property, originalDescriptor);\n }\n instrumentation = stoppedInstrumentation;\n },\n };\n}\n//# sourceMappingURL=instrumentMethod.js.map","import { noop } from '../utils/functionUtils';\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n if (typeof value !== 'object' || value === null) {\n return JSON.stringify(value);\n }\n // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n // subclasses.\n const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n const restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n const restoreValueToJson = detachToJsonMethod(value);\n try {\n return JSON.stringify(value, replacer, space);\n }\n catch (_a) {\n return '<error: unable to serialize object>';\n }\n finally {\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n restoreValuePrototypeToJson();\n restoreValueToJson();\n }\n}\nexport function detachToJsonMethod(value) {\n const object = value;\n const objectToJson = object.toJSON;\n if (objectToJson) {\n delete object.toJSON;\n return () => {\n object.toJSON = objectToJson;\n };\n }\n return noop;\n}\n//# sourceMappingURL=jsonStringify.js.map","import { display } from '../display';\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils';\nimport { detachToJsonMethod } from './jsonStringify';\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nconst SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE;\n// Symbol for the root element of the JSONPath used for visited objects\nconst JSON_PATH_ROOT_ELEMENT = '$';\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nconst KEY_DECORATION_LENGTH = 3;\nexport function sanitize(source, maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT) {\n // Unbind any toJSON function we may have on [] or {} prototypes\n const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n const containerQueue = [];\n const visitedObjectsWithPath = new WeakMap();\n const sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);\n const serializedSanitizedData = JSON.stringify(sanitizedData);\n let accumulatedCharacterCount = serializedSanitizedData ? serializedSanitizedData.length : 0;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source);\n return undefined;\n }\n while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n const containerToProcess = containerQueue.shift();\n let separatorLength = 0; // 0 for the first element, 1 for subsequent elements\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (let key = 0; key < containerToProcess.source.length; key++) {\n const targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length;\n }\n else {\n // When an element of an Array (targetData) is undefined, it is serialized as null:\n // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n accumulatedCharacterCount += 4;\n }\n accumulatedCharacterCount += separatorLength;\n separatorLength = 1;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n else {\n for (const key in containerToProcess.source) {\n if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n const targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount +=\n JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;\n separatorLength = 1;\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n }\n }\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n return sanitizedData;\n}\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {\n // Start by handling toJSON, as we want to sanitize its output\n const sourceToSanitize = tryToApplyToJSON(source);\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize);\n }\n const sanitizedSource = sanitizeObjects(sourceToSanitize);\n if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n return sanitizedSource;\n }\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n const sourceAsObject = source;\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return `[Reference seen at ${visitedObjectsWithPath.get(sourceAsObject)}]`;\n }\n // Add processed source to queue\n const currentPath = key !== undefined ? `${parentPath}.${key}` : parentPath;\n const target = Array.isArray(sourceToSanitize) ? [] : {};\n visitedObjectsWithPath.set(sourceAsObject, currentPath);\n queue.push({ source: sourceToSanitize, target, path: currentPath });\n return target;\n}\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return `[BigInt] ${value.toString()}`;\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return `[Function] ${value.name || 'unknown'}`;\n }\n // JSON.stringify() does not serialize symbols.\n if (typeof value === 'symbol') {\n return `[Symbol] ${value.description || value.toString()}`;\n }\n return value;\n}\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n */\nfunction sanitizeObjects(value) {\n try {\n if (value instanceof Event) {\n return sanitizeEvent(value);\n }\n if (value instanceof RegExp) {\n return `[RegExp] ${value.toString()}`;\n }\n // Handle all remaining object types in a generic way\n const result = Object.prototype.toString.call(value);\n const match = result.match(/\\[object (.*)\\]/);\n if (match && match[1]) {\n return `[${match[1]}]`;\n }\n }\n catch (_a) {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]';\n}\nfunction sanitizeEvent(event) {\n return {\n type: event.type,\n isTrusted: event.isTrusted,\n currentTarget: event.currentTarget ? sanitizeObjects(event.currentTarget) : null,\n target: event.target ? sanitizeObjects(event.target) : null,\n };\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n const object = value;\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON();\n }\n catch (_a) {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n return value;\n}\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n display.warn(`The data provided has been ${changeType} as it is over the limit of ${maxCharacterCount} characters:`, source);\n}\n//# sourceMappingURL=sanitize.js.map","import { sanitize } from '../../tools/serialisation/sanitize';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nexport const NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error';\nexport function computeRawError({ stackTrace, originalError, handlingStack, componentStack, startClocks, nonErrorPrefix, useFallbackStack = true, source, handling, }) {\n const isErrorInstance = isError(originalError);\n if (!stackTrace && isErrorInstance) {\n stackTrace = computeStackTrace(originalError);\n }\n return {\n startClocks,\n source,\n handling,\n handlingStack,\n componentStack,\n originalError,\n type: stackTrace ? stackTrace.name : undefined,\n message: computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError),\n stack: stackTrace ? toStackTraceString(stackTrace) : useFallbackStack ? NO_ERROR_STACK_PRESENT_MESSAGE : undefined,\n causes: isErrorInstance ? flattenErrorCauses(originalError, source) : undefined,\n fingerprint: tryToGetFingerprint(originalError),\n context: tryToGetErrorContext(originalError),\n };\n}\nfunction computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError) {\n // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n // TODO rework tracekit integration to avoid scattering error building logic\n return (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.message) && (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name)\n ? stackTrace.message\n : !isErrorInstance\n ? `${nonErrorPrefix} ${jsonStringify(sanitize(originalError))}`\n : 'Empty message';\n}\nexport function tryToGetFingerprint(originalError) {\n return isError(originalError) && 'dd_fingerprint' in originalError ? String(originalError.dd_fingerprint) : undefined;\n}\nexport function tryToGetErrorContext(originalError) {\n if (originalError !== null && typeof originalError === 'object' && 'dd_context' in originalError) {\n return originalError.dd_context;\n }\n}\nexport function getFileFromStackTraceString(stack) {\n var _a;\n return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function isError(error) {\n return error instanceof Error || Object.prototype.toString.call(error) === '[object Error]';\n}\nexport function flattenErrorCauses(error, parentSource) {\n let currentError = error;\n const causes = [];\n while (isError(currentError === null || currentError === void 0 ? void 0 : currentError.cause) && causes.length < 10) {\n const stackTrace = computeStackTrace(currentError.cause);\n causes.push({\n message: currentError.cause.message,\n source: parentSource,\n type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n stack: stackTrace && toStackTraceString(stackTrace),\n });\n currentError = currentError.cause;\n }\n return causes.length ? causes : undefined;\n}\n//# sourceMappingURL=error.js.map","export const ErrorSource = {\n AGENT: 'agent',\n CONSOLE: 'console',\n CUSTOM: 'custom',\n LOGGER: 'logger',\n NETWORK: 'network',\n SOURCE: 'source',\n REPORT: 'report',\n};\n//# sourceMappingURL=error.types.js.map","import { instrumentMethod } from '../../tools/instrumentMethod';\nimport { Observable } from '../../tools/observable';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nimport { computeStackTraceFromOnErrorMessage } from '../../tools/stackTrace/computeStackTrace';\nimport { getGlobalObject } from '../../tools/globalObject';\nimport { computeRawError, isError } from './error';\nimport { ErrorSource } from './error.types';\nexport function trackRuntimeError() {\n return new Observable((observer) => {\n const handleRuntimeError = (originalError, stackTrace) => {\n const rawError = computeRawError({\n stackTrace,\n originalError,\n startClocks: clocksNow(),\n nonErrorPrefix: \"Uncaught\" /* NonErrorPrefix.UNCAUGHT */,\n source: ErrorSource.SOURCE,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n });\n observer.notify(rawError);\n };\n const { stop: stopInstrumentingOnError } = instrumentOnError(handleRuntimeError);\n const { stop: stopInstrumentingOnUnhandledRejection } = instrumentUnhandledRejection(handleRuntimeError);\n return () => {\n stopInstrumentingOnError();\n stopInstrumentingOnUnhandledRejection();\n };\n });\n}\nexport function instrumentOnError(callback) {\n return instrumentMethod(getGlobalObject(), 'onerror', ({ parameters: [messageObj, url, line, column, errorObj] }) => {\n let stackTrace;\n if (!isError(errorObj)) {\n stackTrace = computeStackTraceFromOnErrorMessage(messageObj, url, line, column);\n }\n callback(errorObj !== null && errorObj !== void 0 ? errorObj : messageObj, stackTrace);\n });\n}\nexport function instrumentUnhandledRejection(callback) {\n return instrumentMethod(getGlobalObject(), 'onunhandledrejection', ({ parameters: [e] }) => {\n callback(e.reason || 'Empty reason');\n });\n}\n//# sourceMappingURL=trackRuntimeError.js.map","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { display } from '../tools/display';\nexport function makePublicApi(stub) {\n const publicApi = {\n version: \"6.22.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(callback) {\n callback();\n },\n ...stub,\n };\n // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n // as much as possible but of course it's not a real protection.\n Object.defineProperty(publicApi, '_setDebug', {\n get() {\n return setDebugMode;\n },\n enumerable: false,\n });\n return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n const existingGlobalVariable = global[name];\n if (existingGlobalVariable && !existingGlobalVariable.q && existingGlobalVariable.version) {\n display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.');\n }\n global[name] = api;\n if (existingGlobalVariable && existingGlobalVariable.q) {\n existingGlobalVariable.q.forEach((fn) => catchUserErrors(fn, 'onReady callback threw an error:')());\n }\n}\n//# sourceMappingURL=init.js.map","import { display } from '../tools/display';\nexport function displayAlreadyInitializedError(sdkName, initConfiguration) {\n if (!initConfiguration.silentMultipleInit) {\n display.error(`${sdkName} is already initialized.`);\n }\n}\n//# sourceMappingURL=displayAlreadyInitializedError.js.map","import { monitor } from '../tools/monitor';\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue';\n/**\n * Add an event listener to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(configuration, eventTarget, eventName, listener, options) {\n return addEventListeners(configuration, eventTarget, [eventName], listener, options);\n}\n/**\n * Add event listeners to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(configuration, eventTarget, eventNames, listener, { once, capture, passive } = {}) {\n const listenerWithMonitor = monitor((event) => {\n if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {\n return;\n }\n if (once) {\n stop();\n }\n listener(event);\n });\n const options = passive ? { capture, passive } : capture;\n // Use the window.EventTarget.prototype when possible to avoid wrong overrides (e.g: https://github.com/salesforce/lwc/issues/1824)\n const listenerTarget = window.EventTarget && eventTarget instanceof EventTarget ? window.EventTarget.prototype : eventTarget;\n const add = getZoneJsOriginalValue(listenerTarget, 'addEventListener');\n eventNames.forEach((eventName) => add.call(eventTarget, eventName, listenerWithMonitor, options));\n function stop() {\n const remove = getZoneJsOriginalValue(listenerTarget, 'removeEventListener');\n eventNames.forEach((eventName) => remove.call(eventTarget, eventName, listenerWithMonitor, options));\n }\n return {\n stop,\n };\n}\n//# sourceMappingURL=addEventListener.js.map","import { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { monitor } from '../../tools/monitor';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { addEventListener } from '../../browser/addEventListener';\nimport { safeTruncate } from '../../tools/utils/stringUtils';\nimport { ErrorSource } from '../error/error.types';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nexport const RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation',\n};\nexport function initReportObservable(configuration, apis) {\n const observables = [];\n if (apis.includes(RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration));\n }\n const reportTypes = apis.filter((api) => api !== RawReportType.cspViolation);\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes));\n }\n return mergeObservables(...observables);\n}\nfunction createReportObservable(reportTypes) {\n return new Observable((observable) => {\n if (!window.ReportingObserver) {\n return;\n }\n const handleReports = monitor((reports, _) => reports.forEach((report) => observable.notify(buildRawReportErrorFromReport(report))));\n const observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true,\n });\n observer.observe();\n return () => {\n observer.disconnect();\n };\n });\n}\nfunction createCspViolationReportObservable(configuration) {\n return new Observable((observable) => {\n const { stop } = addEventListener(configuration, document, \"securitypolicyviolation\" /* DOM_EVENT.SECURITY_POLICY_VIOLATION */, (event) => {\n observable.notify(buildRawReportErrorFromCspViolation(event));\n });\n return stop;\n });\n}\nfunction buildRawReportErrorFromReport(report) {\n const { type, body } = report;\n return buildRawReportError({\n type: body.id,\n message: `${type}: ${body.message}`,\n originalError: report,\n stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n });\n}\nfunction buildRawReportErrorFromCspViolation(event) {\n const message = `'${event.blockedURI}' blocked by '${event.effectiveDirective}' directive`;\n return buildRawReportError({\n type: event.effectiveDirective,\n message: `${RawReportType.cspViolation}: ${message}`,\n originalError: event,\n csp: {\n disposition: event.disposition,\n },\n stack: buildStack(event.effectiveDirective, event.originalPolicy\n ? `${message} of the policy \"${safeTruncate(event.originalPolicy, 100, '...')}\"`\n : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber),\n });\n}\nfunction buildRawReportError(partial) {\n return {\n startClocks: clocksNow(),\n source: ErrorSource.REPORT,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n ...partial,\n };\n}\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n return sourceFile\n ? toStackTraceString({\n name,\n 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","import { DOCS_ORIGIN, MORE_DETAILS, display } from '../tools/display';\nexport const TAG_SIZE_LIMIT = 200;\nexport function buildTags(configuration) {\n const { env, service, version, datacenter, sdkVersion, variant } = configuration;\n const tags = [buildTag('sdk_version', sdkVersion !== null && sdkVersion !== void 0 ? sdkVersion : \"6.22.0\")];\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 if (variant) {\n tags.push(buildTag('variant', variant));\n }\n return tags;\n}\nexport function buildTag(key, rawValue) {\n // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n // that the backend may not follow the exact same rules, so we only want to display an informal\n // warning.\n const tag = rawValue ? `${key}:${rawValue}` : key;\n if (tag.length > TAG_SIZE_LIMIT || hasForbiddenCharacters(tag)) {\n display.warn(`Tag ${tag} doesn't meet tag requirements and will be sanitized. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/tagging/#defining-tags`);\n }\n // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n // by forging a value containing commas.\n return sanitizeTag(tag);\n}\nexport function sanitizeTag(tag) {\n return tag.replace(/,/g, '_');\n}\nfunction hasForbiddenCharacters(rawValue) {\n // Unicode property escapes is not supported in all browsers, so we use a try/catch.\n // Todo: Remove the try/catch when dropping support for Chrome 63 and Firefox 67\n // see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#browser_compatibility\n if (!supportUnicodePropertyEscapes()) {\n return false;\n }\n // We use the Unicode property escapes to match any character that is a letter including other languages like Chinese, Japanese, etc.\n // p{Ll} matches a lowercase letter.\n // p{Lo} matches a letter that is neither uppercase nor lowercase (ex: Japanese characters).\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#unicode_property_escapes_vs._character_classes\n return new RegExp('[^\\\\p{Ll}\\\\p{Lo}0-9_:./-]', 'u').test(rawValue);\n}\nexport function supportUnicodePropertyEscapes() {\n try {\n new RegExp('[\\\\p{Ll}]', 'u');\n return true;\n }\n catch (_a) {\n return false;\n }\n}\n//# sourceMappingURL=tags.js.map","import { globalObject } from './globalObject';\nexport function sendToExtension(type, payload) {\n const callback = globalObject.__ddBrowserSdkExtensionCallback;\n if (callback) {\n callback({ type, 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 = createCircularReferenceChecker()) {\n // ignore the source if it is undefined\n if (source === undefined) {\n return destination;\n }\n if (typeof source !== 'object' || source === null) {\n // primitive values - just return source\n return source;\n }\n else if (source instanceof Date) {\n return new Date(source.getTime());\n }\n else if (source instanceof RegExp) {\n const flags = source.flags ||\n // old browsers compatibility\n [\n source.global ? 'g' : '',\n source.ignoreCase ? 'i' : '',\n source.multiline ? 'm' : '',\n source.sticky ? 'y' : '',\n source.unicode ? 'u' : '',\n ].join('');\n return new RegExp(source.source, flags);\n }\n if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n // remove circular references\n return undefined;\n }\n else if (Array.isArray(source)) {\n const merged = Array.isArray(destination) ? destination : [];\n for (let i = 0; i < source.length; ++i) {\n merged[i] = mergeInto(merged[i], source[i], circularReferenceChecker);\n }\n return merged;\n }\n const merged = getType(destination) === 'object' ? destination : {};\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n }\n }\n return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n return mergeInto(undefined, value);\n}\nexport function combine(...sources) {\n let destination;\n for (const source of sources) {\n // Ignore any undefined or null sources.\n if (source === undefined || source === null) {\n continue;\n }\n destination = mergeInto(destination, source);\n }\n return destination;\n}\nfunction createCircularReferenceChecker() {\n if (typeof WeakSet !== 'undefined') {\n const set = new WeakSet();\n return {\n hasAlreadyBeenSeen(value) {\n const has = set.has(value);\n if (!has) {\n set.add(value);\n }\n return has;\n },\n };\n }\n const array = [];\n return {\n hasAlreadyBeenSeen(value) {\n const has = array.indexOf(value) >= 0;\n if (!has) {\n array.push(value);\n }\n return has;\n },\n };\n}\n//# sourceMappingURL=mergeInto.js.map","import { globalObject } from '../../tools/globalObject';\nexport function getConnectivity() {\n var _a;\n const navigator = globalObject.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","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 const MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport const MAX_ONGOING_REQUESTS = 32;\nexport const MAX_QUEUE_BYTES_COUNT = 20 * ONE_MEBI_BYTE;\nexport const MAX_BACKOFF_TIME = ONE_MINUTE;\nexport const INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, trackType, reportError, requestObservable) {\n if (state.transportStatus === 0 /* TransportStatus.UP */ &&\n state.queuedPayloads.size() === 0 &&\n state.bandwidthMonitor.canHandle(payload)) {\n send(payload, state, sendStrategy, requestObservable, {\n onSuccess: () => retryQueuedPayloads(0 /* RetryReason.AFTER_SUCCESS */, state, sendStrategy, trackType, reportError, requestObservable),\n onFailure: () => {\n if (!state.queuedPayloads.enqueue(payload)) {\n requestObservable.notify({ type: 'queue-full', bandwidth: state.bandwidthMonitor.stats(), payload });\n }\n scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable);\n },\n });\n }\n else {\n if (!state.queuedPayloads.enqueue(payload)) {\n requestObservable.notify({ type: 'queue-full', bandwidth: state.bandwidthMonitor.stats(), payload });\n }\n }\n}\nfunction scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable) {\n if (state.transportStatus !== 2 /* TransportStatus.DOWN */) {\n return;\n }\n setTimeout(() => {\n const payload = state.queuedPayloads.first();\n send(payload, state, sendStrategy, requestObservable, {\n onSuccess: () => {\n state.queuedPayloads.dequeue();\n state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n retryQueuedPayloads(1 /* RetryReason.AFTER_RESUME */, state, sendStrategy, trackType, reportError, requestObservable);\n },\n onFailure: () => {\n state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable);\n },\n });\n }, state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, requestObservable, { onSuccess, onFailure }) {\n state.bandwidthMonitor.add(payload);\n sendStrategy(payload, (response) => {\n state.bandwidthMonitor.remove(payload);\n if (!shouldRetryRequest(response)) {\n state.transportStatus = 0 /* TransportStatus.UP */;\n requestObservable.notify({ type: 'success', bandwidth: state.bandwidthMonitor.stats(), payload });\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 requestObservable.notify({ type: 'failure', bandwidth: state.bandwidthMonitor.stats(), payload });\n onFailure();\n }\n });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, trackType, reportError, requestObservable) {\n if (reason === 0 /* RetryReason.AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n reportError({\n message: `Reached max ${trackType} events size queued for upload: ${MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE}MiB`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n });\n state.queueFullReported = true;\n }\n const previousQueue = state.queuedPayloads;\n state.queuedPayloads = newPayloadQueue();\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, trackType, reportError, requestObservable);\n }\n}\nfunction shouldRetryRequest(response) {\n return (response.type !== 'opaque' &&\n ((response.status === 0 && !navigator.onLine) ||\n response.status === 408 ||\n response.status === 429 ||\n isServerError(response.status)));\n}\nexport function newRetryState() {\n return {\n transportStatus: 0 /* TransportStatus.UP */,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false,\n };\n}\nfunction newPayloadQueue() {\n const queue = [];\n return {\n bytesCount: 0,\n enqueue(payload) {\n if (this.isFull()) {\n return false;\n }\n queue.push(payload);\n this.bytesCount += payload.bytesCount;\n return true;\n },\n first() {\n return queue[0];\n },\n dequeue() {\n const payload = queue.shift();\n if (payload) {\n this.bytesCount -= payload.bytesCount;\n }\n return payload;\n },\n size() {\n return queue.length;\n },\n isFull() {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n },\n };\n}\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle(payload) {\n return (this.ongoingRequestCount === 0 ||\n (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n this.ongoingRequestCount < MAX_ONGOING_REQUESTS));\n },\n add(payload) {\n this.ongoingRequestCount += 1;\n this.ongoingByteCount += payload.bytesCount;\n },\n remove(payload) {\n this.ongoingRequestCount -= 1;\n this.ongoingByteCount -= payload.bytesCount;\n },\n stats() {\n return {\n ongoingByteCount: this.ongoingByteCount,\n ongoingRequestCount: this.ongoingRequestCount,\n };\n },\n };\n}\n//# sourceMappingURL=sendWithRetryStrategy.js.map","import { monitor, monitorError } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(endpointBuilders, bytesLimit, reportError) {\n const observable = new Observable();\n const retryState = newRetryState();\n return {\n observable,\n send: (payload) => {\n for (const endpointBuilder of endpointBuilders) {\n sendWithRetryStrategy(payload, retryState, (payload, onResponse) => fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse), endpointBuilder.trackType, reportError, observable);\n }\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: (payload) => {\n for (const endpointBuilder of endpointBuilders) {\n sendBeaconStrategy(endpointBuilder, bytesLimit, payload);\n }\n },\n };\n}\nfunction sendBeaconStrategy(endpointBuilder, bytesLimit, payload) {\n const canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit;\n if (canUseBeacon) {\n try {\n const beaconUrl = endpointBuilder.build('beacon', payload);\n const isQueued = navigator.sendBeacon(beaconUrl, payload.data);\n if (isQueued) {\n return;\n }\n }\n catch (e) {\n reportBeaconError(e);\n }\n }\n fetchStrategy(endpointBuilder, payload);\n}\nlet hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true;\n monitorError(e);\n }\n}\nexport function fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse) {\n const canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit;\n if (canUseKeepAlive) {\n const fetchUrl = endpointBuilder.build('fetch-keepalive', payload);\n fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' })\n .then(monitor((response) => onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type })))\n .catch(monitor(() => fetchStrategy(endpointBuilder, payload, onResponse)));\n }\n else {\n fetchStrategy(endpointBuilder, payload, onResponse);\n }\n}\nexport function fetchStrategy(endpointBuilder, payload, onResponse) {\n const fetchUrl = endpointBuilder.build('fetch', payload);\n fetch(fetchUrl, { method: 'POST', body: payload.data, mode: 'cors' })\n .then(monitor((response) => onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type })))\n .catch(monitor(() => onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: 0 })));\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}\n//# sourceMappingURL=httpRequest.js.map","import { getGlobalObject } from '../tools/globalObject';\nexport function getEventBridge() {\n const eventBridgeGlobal = getEventBridgeGlobal();\n if (!eventBridgeGlobal) {\n return;\n }\n return {\n getCapabilities() {\n var _a;\n return JSON.parse(((_a = eventBridgeGlobal.getCapabilities) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal)) || '[]');\n },\n getPrivacyLevel() {\n var _a;\n return (_a = eventBridgeGlobal.getPrivacyLevel) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal);\n },\n getAllowedWebViewHosts() {\n return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n },\n send(eventType, event, viewId) {\n const view = viewId ? { id: viewId } : undefined;\n eventBridgeGlobal.send(JSON.stringify({ eventType, event, view }));\n },\n };\n}\nexport function bridgeSupports(capability) {\n const bridge = getEventBridge();\n return !!bridge && bridge.getCapabilities().includes(capability);\n}\nexport function canUseEventBridge(currentHost) {\n var _a;\n if (currentHost === void 0) { currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n const bridge = getEventBridge();\n return (!!bridge &&\n bridge\n .getAllowedWebViewHosts()\n .some((allowedHost) => currentHost === allowedHost || currentHost.endsWith(`.${allowedHost}`)));\n}\nfunction getEventBridgeGlobal() {\n return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","import { Observable } from '../tools/observable';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { addEventListeners, addEventListener } from './addEventListener';\nexport const PageExitReason = {\n HIDDEN: 'visibility_hidden',\n UNLOADING: 'before_unload',\n PAGEHIDE: 'page_hide',\n FROZEN: 'page_frozen',\n};\nexport function createPageMayExitObservable(configuration) {\n return new Observable((observable) => {\n const { stop: stopListeners } = addEventListeners(configuration, window, [\"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, \"freeze\" /* DOM_EVENT.FREEZE */], (event) => {\n if (event.type === \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */ && document.visibilityState === 'hidden') {\n /**\n * Only event that guarantee to fire on mobile devices when the page transitions to background state\n * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n */\n observable.notify({ reason: PageExitReason.HIDDEN });\n }\n else if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n /**\n * After transitioning in background a tab can be freezed to preserve resources. (cf: https://developer.chrome.com/blog/page-lifecycle-api)\n * Allow to collect events happening between hidden and frozen state.\n */\n observable.notify({ reason: PageExitReason.FROZEN });\n }\n }, { capture: true });\n const stopBeforeUnloadListener = addEventListener(configuration, window, \"beforeunload\" /* DOM_EVENT.BEFORE_UNLOAD */, () => {\n observable.notify({ reason: PageExitReason.UNLOADING });\n }).stop;\n return () => {\n stopListeners();\n stopBeforeUnloadListener();\n };\n });\n}\nexport function isPageExitReason(reason) {\n return objectValues(PageExitReason).includes(reason);\n}\n//# sourceMappingURL=pageMayExitObservable.js.map","import { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../tools/display';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { isPageExitReason } from '../browser/pageMayExitObservable';\nimport { jsonStringify } from '../tools/serialisation/jsonStringify';\nimport { computeBytesCount } from '../tools/utils/byteUtils';\nexport function createBatch({ encoder, request, flushController, messageBytesLimit, }) {\n let upsertBuffer = {};\n const flushSubscription = flushController.flushObservable.subscribe((event) => 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${serializedMessage}`, (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 const removedMessage = upsertBuffer[key];\n delete upsertBuffer[key];\n const messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage);\n flushController.notifyAfterRemoveMessage(messageBytesCount);\n }\n function addOrUpdate(message, key) {\n const serializedMessage = jsonStringify(message);\n const estimatedMessageBytesCount = encoder.estimateEncodedBytesCount(serializedMessage);\n if (estimatedMessageBytesCount >= messageBytesLimit) {\n display.warn(`Discarded a message whose size was bigger than the maximum allowed size ${messageBytesLimit}KB. ${MORE_DETAILS} ${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 const upsertMessages = objectValues(upsertBuffer).join('\\n');\n upsertBuffer = {};\n const pageMightExit = isPageExitReason(event.reason);\n const send = pageMightExit ? request.sendOnExit : request.send;\n if (pageMightExit &&\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 const 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 const 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${upsertMessages}`);\n }\n encoder.finish((encoderResult) => {\n send(formatPayloadFromEncoder(encoderResult));\n });\n }\n }\n return {\n flushController,\n add: addOrUpdate,\n upsert: addOrUpdate,\n stop: flushSubscription.unsubscribe,\n };\n}\nfunction formatPayloadFromEncoder(encoderResult) {\n let 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,\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({ messagesLimit, bytesLimit, durationLimit, pageMayExitObservable, sessionExpireObservable, }) {\n const pageMayExitSubscription = pageMayExitObservable.subscribe((event) => flush(event.reason));\n const sessionExpireSubscription = sessionExpireObservable.subscribe(() => flush('session_expire'));\n const flushObservable = new Observable(() => () => {\n pageMayExitSubscription.unsubscribe();\n sessionExpireSubscription.unsubscribe();\n });\n let currentBytesCount = 0;\n let currentMessagesCount = 0;\n function flush(flushReason) {\n if (currentMessagesCount === 0) {\n return;\n }\n const messagesCount = currentMessagesCount;\n const bytesCount = currentBytesCount;\n currentMessagesCount = 0;\n currentBytesCount = 0;\n cancelDurationLimitTimeout();\n flushObservable.notify({\n reason: flushReason,\n messagesCount,\n bytesCount,\n });\n }\n let durationLimitTimeoutId;\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(() => {\n flush('duration_limit');\n }, durationLimit);\n }\n }\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId);\n durationLimitTimeoutId = undefined;\n }\n return {\n 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(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(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(messageBytesCount) {\n currentBytesCount -= messageBytesCount;\n currentMessagesCount -= 1;\n if (currentMessagesCount === 0) {\n cancelDurationLimitTimeout();\n }\n },\n };\n}\n//# sourceMappingURL=flushController.js.map","import { combine } from './mergeInto';\n// Discards the event from being sent\nexport const DISCARDED = 'DISCARDED';\n// Skips from the assembly of the event\nexport const SKIPPED = 'SKIPPED';\nexport function abstractHooks() {\n const callbacks = {};\n return {\n register(hookName, callback) {\n if (!callbacks[hookName]) {\n callbacks[hookName] = [];\n }\n callbacks[hookName].push(callback);\n return {\n unregister: () => {\n callbacks[hookName] = callbacks[hookName].filter((cb) => cb !== callback);\n },\n };\n },\n triggerHook(hookName, param) {\n const hookCallbacks = callbacks[hookName] || [];\n const results = [];\n for (const callback of hookCallbacks) {\n const result = callback(param);\n if (result === DISCARDED) {\n return DISCARDED;\n }\n if (result === SKIPPED) {\n continue;\n }\n results.push(result);\n }\n return combine(...results);\n },\n };\n}\n//# sourceMappingURL=abstractHooks.js.map","export const TelemetryType = {\n LOG: 'log',\n CONFIGURATION: 'configuration',\n USAGE: 'usage',\n};\n//# sourceMappingURL=rawTelemetryEvent.types.js.map","import { ConsoleApiName } from '../../tools/display';\nimport { NO_ERROR_STACK_PRESENT_MESSAGE, isError } from '../error/error';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures';\nimport { buildTags } from '../tags';\nimport { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../intakeSites';\nimport { BufferedObservable, Observable } from '../../tools/observable';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { sendToExtension } from '../../tools/sendToExtension';\nimport { performDraw } from '../../tools/utils/numberUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { combine } from '../../tools/mergeInto';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { getConnectivity } from '../connectivity';\nimport { canUseEventBridge, createFlushController, createHttpRequest, getEventBridge, createBatch, } from '../../transport';\nimport { DISCARDED } from '../../tools/abstractHooks';\nimport { globalObject, isWorkerEnvironment } from '../../tools/globalObject';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nconst ALLOWED_FRAME_URLS = [\n 'https://www.datadoghq-browser-agent.com',\n 'https://www.datad0g-browser-agent.com',\n 'https://d3uc069fcn7uxw.cloudfront.net',\n 'https://d20xtzwzcl0ceb.cloudfront.net',\n 'http://localhost',\n '<anonymous>',\n];\nconst METRIC_SAMPLE_RATE = 1;\nconst TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\nlet telemetryObservable;\nexport function getTelemetryObservable() {\n if (!telemetryObservable) {\n telemetryObservable = new BufferedObservable(100);\n }\n return telemetryObservable;\n}\nexport function startTelemetry(telemetryService, configuration, hooks, reportError, pageMayExitObservable, createEncoder) {\n const observable = new Observable();\n const { stop } = startTelemetryTransport(configuration, reportError, pageMayExitObservable, createEncoder, observable);\n const { enabled, metricsEnabled } = startTelemetryCollection(telemetryService, configuration, hooks, observable);\n return {\n stop,\n enabled,\n metricsEnabled,\n };\n}\nexport function startTelemetryCollection(telemetryService, configuration, hooks, observable, metricSampleRate = METRIC_SAMPLE_RATE) {\n const alreadySentEventsByKind = {};\n const telemetryEnabled = !TELEMETRY_EXCLUDED_SITES.includes(configuration.site) && performDraw(configuration.telemetrySampleRate);\n const telemetryEnabledPerType = {\n [TelemetryType.LOG]: telemetryEnabled,\n [TelemetryType.CONFIGURATION]: telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate),\n [TelemetryType.USAGE]: telemetryEnabled && performDraw(configuration.telemetryUsageSampleRate),\n // not an actual \"type\" but using a single draw for all metrics\n metric: telemetryEnabled && performDraw(metricSampleRate),\n };\n const runtimeEnvInfo = getRuntimeEnvInfo();\n const telemetryObservable = getTelemetryObservable();\n telemetryObservable.subscribe(({ rawEvent, metricName }) => {\n if ((metricName && !telemetryEnabledPerType['metric']) || !telemetryEnabledPerType[rawEvent.type]) {\n return;\n }\n const kind = metricName || rawEvent.status || rawEvent.type;\n let alreadySentEvents = alreadySentEventsByKind[kind];\n if (!alreadySentEvents) {\n alreadySentEvents = alreadySentEventsByKind[kind] = new Set();\n }\n if (alreadySentEvents.size >= configuration.maxTelemetryEventsPerPage) {\n return;\n }\n const stringifiedEvent = jsonStringify(rawEvent);\n if (alreadySentEvents.has(stringifiedEvent)) {\n return;\n }\n const defaultTelemetryEventAttributes = hooks.triggerHook(1 /* HookNames.AssembleTelemetry */, {\n startTime: clocksNow().relative,\n });\n if (defaultTelemetryEventAttributes === DISCARDED) {\n return;\n }\n const event = toTelemetryEvent(defaultTelemetryEventAttributes, telemetryService, rawEvent, runtimeEnvInfo);\n observable.notify(event);\n sendToExtension('telemetry', event);\n alreadySentEvents.add(stringifiedEvent);\n });\n telemetryObservable.unbuffer();\n startMonitorErrorCollection(addTelemetryError);\n return {\n enabled: telemetryEnabled,\n metricsEnabled: telemetryEnabledPerType['metric'],\n };\n function toTelemetryEvent(defaultTelemetryEventAttributes, telemetryService, rawEvent, runtimeEnvInfo) {\n const clockNow = clocksNow();\n const event = {\n type: 'telemetry',\n date: clockNow.timeStamp,\n service: telemetryService,\n version: \"6.22.0\",\n source: 'browser',\n _dd: {\n format_version: 2,\n },\n telemetry: combine(rawEvent, {\n runtime_env: runtimeEnvInfo,\n connectivity: getConnectivity(),\n sdk_setup: \"npm\",\n }),\n ddtags: buildTags(configuration).join(','),\n experimental_features: Array.from(getExperimentalFeatures()),\n };\n return combine(event, defaultTelemetryEventAttributes);\n }\n}\nfunction startTelemetryTransport(configuration, reportError, pageMayExitObservable, createEncoder, telemetryObservable) {\n const cleanupTasks = [];\n if (canUseEventBridge()) {\n const bridge = getEventBridge();\n const telemetrySubscription = telemetryObservable.subscribe((event) => bridge.send('internal_telemetry', event));\n cleanupTasks.push(telemetrySubscription.unsubscribe);\n }\n else {\n const endpoints = [configuration.rumEndpointBuilder];\n if (configuration.replica && isTelemetryReplicationAllowed(configuration)) {\n endpoints.push(configuration.replica.rumEndpointBuilder);\n }\n const telemetryBatch = createBatch({\n encoder: createEncoder(4 /* DeflateEncoderStreamId.TELEMETRY */),\n request: createHttpRequest(endpoints, configuration.batchBytesLimit, reportError),\n flushController: createFlushController({\n messagesLimit: configuration.batchMessagesLimit,\n bytesLimit: configuration.batchBytesLimit,\n durationLimit: configuration.flushTimeout,\n pageMayExitObservable,\n // We don't use an actual session expire observable here, to make telemetry collection\n // independent of the session. This allows to start and send telemetry events earlier.\n sessionExpireObservable: new Observable(),\n }),\n messageBytesLimit: configuration.messageBytesLimit,\n });\n cleanupTasks.push(telemetryBatch.stop);\n const telemetrySubscription = telemetryObservable.subscribe(telemetryBatch.add);\n cleanupTasks.push(telemetrySubscription.unsubscribe);\n }\n return {\n stop: () => cleanupTasks.forEach((task) => task()),\n };\n}\nfunction getRuntimeEnvInfo() {\n var _a;\n return {\n is_local_file: ((_a = globalObject.location) === null || _a === void 0 ? void 0 : _a.protocol) === 'file:',\n is_worker: isWorkerEnvironment,\n };\n}\nexport function resetTelemetry() {\n telemetryObservable = undefined;\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nfunction isTelemetryReplicationAllowed(configuration) {\n return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.LOG,\n message,\n status: \"debug\" /* StatusType.debug */,\n ...context,\n },\n });\n}\nexport function addTelemetryError(e, context) {\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.LOG,\n status: \"error\" /* StatusType.error */,\n ...formatError(e),\n ...context,\n },\n });\n}\nexport function addTelemetryConfiguration(configuration) {\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.CONFIGURATION,\n configuration,\n },\n });\n}\nexport function addTelemetryMetrics(metricName, context) {\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.LOG,\n message: metricName,\n status: \"debug\" /* StatusType.debug */,\n ...context,\n },\n metricName,\n });\n}\nexport function addTelemetryUsage(usage) {\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.USAGE,\n usage,\n },\n });\n}\nexport function formatError(e) {\n if (isError(e)) {\n const stackTrace = computeStackTrace(e);\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n },\n message: stackTrace.message,\n };\n }\n return {\n error: {\n stack: NO_ERROR_STACK_PRESENT_MESSAGE,\n },\n message: `${\"Uncaught\" /* NonErrorPrefix.UNCAUGHT */} ${jsonStringify(e)}`,\n };\n}\nexport function scrubCustomerFrames(stackTrace) {\n stackTrace.stack = stackTrace.stack.filter((frame) => !frame.url || ALLOWED_FRAME_URLS.some((allowedFrameUrl) => frame.url.startsWith(allowedFrameUrl)));\n return stackTrace;\n}\n//# sourceMappingURL=telemetry.js.map","export function removeDuplicates(array) {\n const set = new Set();\n array.forEach((item) => set.add(item));\n return Array.from(set);\n}\nexport function removeItem(array, item) {\n const index = array.indexOf(item);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\nexport function isNonEmptyArray(value) {\n return Array.isArray(value) && value.length > 0;\n}\n//# sourceMappingURL=arrayUtils.js.map","import { setInterval, clearInterval } from './timer';\nimport { removeItem } from './utils/arrayUtils';\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils';\nconst END_OF_TIMES = Infinity;\nexport const CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE;\nlet cleanupHistoriesInterval = null;\nconst cleanupTasks = new Set();\nfunction cleanupHistories() {\n cleanupTasks.forEach((task) => task());\n}\nexport function createValueHistory({ expireDelay, maxEntries, }) {\n let entries = [];\n if (!cleanupHistoriesInterval) {\n cleanupHistoriesInterval = setInterval(() => cleanupHistories(), CLEAR_OLD_VALUES_INTERVAL);\n }\n const clearExpiredValues = () => {\n const oldTimeThreshold = relativeNow() - expireDelay;\n while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {\n entries.pop();\n }\n };\n cleanupTasks.add(clearExpiredValues);\n /**\n * Add a value to the history associated with a start time. Returns a reference to this newly\n * added entry that can be removed or closed.\n */\n function add(value, startTime) {\n const entry = {\n value,\n startTime,\n endTime: END_OF_TIMES,\n remove: () => {\n removeItem(entries, entry);\n },\n close: (endTime) => {\n entry.endTime = endTime;\n },\n };\n if (maxEntries && entries.length >= maxEntries) {\n entries.pop();\n }\n entries.unshift(entry);\n return entry;\n }\n /**\n * Return the latest value that was active during `startTime`, or the currently active value\n * if no `startTime` is provided. This method assumes that entries are not overlapping.\n *\n * If `option.returnInactive` is true, returns the value at `startTime` (active or not).\n */\n function find(startTime = END_OF_TIMES, options = { returnInactive: false }) {\n for (const entry of entries) {\n if (entry.startTime <= startTime) {\n if (options.returnInactive || startTime <= entry.endTime) {\n return entry.value;\n }\n break;\n }\n }\n }\n /**\n * Helper function to close the currently active value, if any. This method assumes that entries\n * are not overlapping.\n */\n function closeActive(endTime) {\n const latestEntry = entries[0];\n if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n latestEntry.close(endTime);\n }\n }\n /**\n * Return all values with an active period overlapping with the duration,\n * or all values that were active during `startTime` if no duration is provided,\n * or all currently active values if no `startTime` is provided.\n */\n function findAll(startTime = END_OF_TIMES, duration = 0) {\n const endTime = addDuration(startTime, duration);\n return entries\n .filter((entry) => entry.startTime <= endTime && startTime <= entry.endTime)\n .map((entry) => entry.value);\n }\n /**\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 cleanupTasks.delete(clearExpiredValues);\n if (cleanupTasks.size === 0 && cleanupHistoriesInterval) {\n clearInterval(cleanupHistoriesInterval);\n cleanupHistoriesInterval = null;\n }\n }\n return { add, find, closeActive, findAll, reset, stop };\n}\n//# sourceMappingURL=valueHistory.js.map","import { getInitCookie } from '../../browser/cookie';\nimport { globalObject, isWorkerEnvironment } from '../../tools/globalObject';\nexport const SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport const SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport const SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function willSyntheticsInjectRum() {\n if (isWorkerEnvironment) {\n // We don't expect to run synthetics tests in a worker environment\n return false;\n }\n return Boolean(globalObject._DATADOG_SYNTHETICS_INJECTS_RUM || getInitCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n const value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getInitCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n const value = window._DATADOG_SYNTHETICS_RESULT_ID || getInitCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\nexport function isSyntheticsTest() {\n return Boolean(getSyntheticsTestId() && getSyntheticsResultId());\n}\n//# sourceMappingURL=syntheticsWorkerValues.js.map","import { Observable } from '../../tools/observable';\nimport { createValueHistory } from '../../tools/valueHistory';\nimport { clocksOrigin, dateNow, ONE_MINUTE, relativeNow } from '../../tools/utils/timeUtils';\nimport { addEventListener, addEventListeners } from '../../browser/addEventListener';\nimport { clearInterval, setInterval } from '../../tools/timer';\nimport { addTelemetryDebug } from '../telemetry';\nimport { isSyntheticsTest } from '../synthetics/syntheticsWorkerValues';\nimport { getCurrentSite } from '../../browser/cookie';\nimport { ExperimentalFeature, isExperimentalFeatureEnabled } from '../../tools/experimentalFeatures';\nimport { findLast } from '../../tools/utils/polyfills';\nimport { monitorError } from '../../tools/monitor';\nimport { SESSION_NOT_TRACKED, SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { startSessionStore } from './sessionStore';\nimport { toSessionState } from './sessionState';\nimport { retrieveSessionCookie } from './storeStrategies/sessionInCookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nexport const VISIBILITY_CHECK_DELAY = ONE_MINUTE;\nconst SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nlet stopCallbacks = [];\nexport function startSessionManager(configuration, productKey, computeTrackingType, trackingConsentState) {\n const renewObservable = new Observable();\n const expireObservable = new Observable();\n // TODO - Improve configuration type and remove assertion\n const sessionStore = startSessionStore(configuration.sessionStoreStrategyType, configuration, productKey, computeTrackingType);\n stopCallbacks.push(() => sessionStore.stop());\n const sessionContextHistory = createValueHistory({\n expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY,\n });\n stopCallbacks.push(() => sessionContextHistory.stop());\n sessionStore.renewObservable.subscribe(() => {\n sessionContextHistory.add(buildSessionContext(), relativeNow());\n renewObservable.notify();\n });\n sessionStore.expireObservable.subscribe(() => {\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 if (isExperimentalFeatureEnabled(ExperimentalFeature.SHORT_SESSION_INVESTIGATION)) {\n const session = sessionStore.getSession();\n if (session) {\n detectSessionIdChange(configuration, session);\n }\n }\n trackingConsentState.observable.subscribe(() => {\n if (trackingConsentState.isGranted()) {\n sessionStore.expandOrRenewSession();\n }\n else {\n sessionStore.expire();\n }\n });\n trackActivity(configuration, () => {\n if (trackingConsentState.isGranted()) {\n sessionStore.expandOrRenewSession();\n }\n });\n trackVisibility(configuration, () => sessionStore.expandSession());\n trackResume(configuration, () => sessionStore.restartSession());\n function buildSessionContext() {\n const session = sessionStore.getSession();\n if (!session) {\n reportUnexpectedSessionState().catch(() => void 0); // Ignore errors\n return {\n id: 'invalid',\n trackingType: SESSION_NOT_TRACKED,\n isReplayForced: false,\n anonymousId: undefined,\n };\n }\n return {\n id: session.id,\n trackingType: session[productKey],\n isReplayForced: !!session.forcedReplay,\n anonymousId: session.anonymousId,\n };\n }\n return {\n findSession: (startTime, options) => sessionContextHistory.find(startTime, options),\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,\n expire: sessionStore.expire,\n updateSessionState: sessionStore.updateSessionState,\n };\n}\nexport function stopSessionManager() {\n stopCallbacks.forEach((e) => e());\n stopCallbacks = [];\n}\nfunction trackActivity(configuration, expandOrRenewSession) {\n const { 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 });\n stopCallbacks.push(stop);\n}\nfunction trackVisibility(configuration, expandSession) {\n const expandSessionWhenVisible = () => {\n if (document.visibilityState === 'visible') {\n expandSession();\n }\n };\n const { stop } = addEventListener(configuration, document, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, expandSessionWhenVisible);\n stopCallbacks.push(stop);\n const visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);\n stopCallbacks.push(() => {\n clearInterval(visibilityCheckInterval);\n });\n}\nfunction trackResume(configuration, cb) {\n const { stop } = addEventListener(configuration, window, \"resume\" /* DOM_EVENT.RESUME */, cb, { capture: true });\n stopCallbacks.push(stop);\n}\nasync function reportUnexpectedSessionState() {\n const rawSession = retrieveSessionCookie();\n // monitor-until: forever, could be handy to troubleshoot issues until session manager rework\n addTelemetryDebug('Unexpected session state', {\n session: rawSession,\n isSyntheticsTest: isSyntheticsTest(),\n createdTimestamp: rawSession === null || rawSession === void 0 ? void 0 : rawSession.created,\n expireTimestamp: rawSession === null || rawSession === void 0 ? void 0 : rawSession.expire,\n cookie: await getSessionCookies(),\n currentDomain: `${window.location.protocol}//${window.location.hostname}`,\n });\n}\nfunction detectSessionIdChange(configuration, initialSessionState) {\n if (!window.cookieStore || !initialSessionState.created) {\n return;\n }\n const sessionCreatedTime = Number(initialSessionState.created);\n const sdkInitTime = dateNow();\n const { stop } = addEventListener(configuration, cookieStore, \"change\" /* DOM_EVENT.CHANGE */, listener);\n stopCallbacks.push(stop);\n function listener(event) {\n const changed = findLast(event.changed, (change) => change.name === SESSION_STORE_KEY);\n if (!changed) {\n return;\n }\n const sessionAge = dateNow() - sessionCreatedTime;\n if (sessionAge > 14 * ONE_MINUTE) {\n // The session might have expired just because it's too old or lack activity\n stop();\n }\n else {\n const newSessionState = toSessionState(changed.value);\n if (newSessionState.id && newSessionState.id !== initialSessionState.id) {\n stop();\n const time = dateNow() - sdkInitTime;\n getSessionCookies()\n .then((cookie) => {\n // monitor-until: 2025-12-01, after RUM-10845 investigation done\n addTelemetryDebug('Session cookie changed', {\n time,\n session_age: sessionAge,\n old: initialSessionState,\n new: newSessionState,\n cookie,\n });\n })\n .catch(monitorError);\n }\n }\n }\n}\nasync function getSessionCookies() {\n let sessionCookies;\n if ('cookieStore' in window) {\n sessionCookies = await window.cookieStore.getAll(SESSION_STORE_KEY);\n }\n else {\n sessionCookies = document.cookie.split(/\\s*;\\s*/).filter((cookie) => cookie.startsWith(SESSION_STORE_KEY));\n }\n return {\n count: sessionCookies.length,\n domain: getCurrentSite() || 'undefined',\n ...sessionCookies,\n };\n}\n//# sourceMappingURL=sessionManager.js.map","import { computeBytesCount } from './utils/byteUtils';\nexport function createIdentityEncoder() {\n let output = '';\n let outputBytesCount = 0;\n return {\n isAsync: false,\n get isEmpty() {\n return !output;\n },\n write(data, callback) {\n const additionalEncodedBytesCount = computeBytesCount(data);\n outputBytesCount += additionalEncodedBytesCount;\n output += data;\n if (callback) {\n callback(additionalEncodedBytesCount);\n }\n },\n finish(callback) {\n callback(this.finishSync());\n },\n finishSync() {\n const result = {\n output,\n outputBytesCount,\n rawBytesCount: outputBytesCount,\n pendingData: '',\n };\n output = '';\n outputBytesCount = 0;\n return result;\n },\n estimateEncodedBytesCount(data) {\n return data.length;\n },\n };\n}\n//# sourceMappingURL=encoder.js.map","// eslint-disable-next-line no-restricted-syntax\nexport class AbstractLifeCycle {\n constructor() {\n this.callbacks = {};\n }\n notify(eventType, data) {\n const eventCallbacks = this.callbacks[eventType];\n if (eventCallbacks) {\n eventCallbacks.forEach((callback) => callback(data));\n }\n }\n subscribe(eventType, callback) {\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = [];\n }\n this.callbacks[eventType].push(callback);\n return {\n unsubscribe: () => {\n this.callbacks[eventType] = this.callbacks[eventType].filter((other) => callback !== other);\n },\n };\n }\n}\n//# sourceMappingURL=abstractLifeCycle.js.map","import { setTimeout } from '../../tools/timer';\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { ErrorSource } from '../error/error.types';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n let eventCount = 0;\n let allowNextEvent = false;\n return {\n isLimitReached() {\n if (eventCount === 0) {\n setTimeout(() => {\n eventCount = 0;\n }, ONE_MINUTE);\n }\n eventCount += 1;\n if (eventCount <= limit || allowNextEvent) {\n allowNextEvent = false;\n return false;\n }\n if (eventCount === limit + 1) {\n allowNextEvent = true;\n try {\n onLimitReached({\n message: `Reached max number of ${eventType}s by minute: ${limit}`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n });\n }\n finally {\n allowNextEvent = false;\n }\n }\n return true;\n },\n };\n}\n//# sourceMappingURL=createEventRateLimiter.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, clocksNow, timeStampNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { shallowClone } from '../tools/utils/objectUtils';\nimport { addEventListener } from './addEventListener';\nlet xhrObservable;\nconst xhrContexts = new WeakMap();\nexport function initXhrObservable(configuration) {\n if (!xhrObservable) {\n xhrObservable = createXhrObservable(configuration);\n }\n return xhrObservable;\n}\nfunction createXhrObservable(configuration) {\n return new Observable((observable) => {\n const { stop: stopInstrumentingStart } = instrumentMethod(XMLHttpRequest.prototype, 'open', openXhr);\n const { stop: stopInstrumentingSend } = instrumentMethod(XMLHttpRequest.prototype, 'send', (call) => {\n sendXhr(call, configuration, observable);\n }, { computeHandlingStack: true });\n const { stop: stopInstrumentingAbort } = instrumentMethod(XMLHttpRequest.prototype, 'abort', abortXhr);\n return () => {\n stopInstrumentingStart();\n stopInstrumentingSend();\n stopInstrumentingAbort();\n };\n });\n}\nfunction openXhr({ target: xhr, parameters: [method, url] }) {\n xhrContexts.set(xhr, {\n state: 'open',\n method: String(method).toUpperCase(),\n url: normalizeUrl(String(url)),\n });\n}\nfunction sendXhr({ target: xhr, parameters: [body], handlingStack }, configuration, observable) {\n const context = xhrContexts.get(xhr);\n if (!context) {\n return;\n }\n const startContext = context;\n startContext.state = 'start';\n startContext.startClocks = clocksNow();\n startContext.isAborted = false;\n startContext.xhr = xhr;\n startContext.handlingStack = handlingStack;\n startContext.body = body;\n let hasBeenReported = false;\n const { stop: stopInstrumentingOnReadyStateChange } = instrumentMethod(xhr, 'onreadystatechange', () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n // application during a future event. For example, Angular is calling .abort() on\n // completed requests during an onreadystatechange event, so the status becomes '0'\n // before the request is collected.\n onEnd();\n }\n });\n const onEnd = () => {\n unsubscribeLoadEndListener();\n stopInstrumentingOnReadyStateChange();\n if (hasBeenReported) {\n return;\n }\n hasBeenReported = true;\n const completeContext = context;\n completeContext.state = 'complete';\n completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n completeContext.status = xhr.status;\n observable.notify(shallowClone(completeContext));\n };\n const { stop: unsubscribeLoadEndListener } = addEventListener(configuration, xhr, 'loadend', onEnd);\n observable.notify(startContext);\n}\nfunction abortXhr({ target: xhr }) {\n const context = xhrContexts.get(xhr);\n if (context) {\n context.isAborted = true;\n }\n}\n//# sourceMappingURL=xhrObservable.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { clocksNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { globalObject } from '../tools/globalObject';\nlet fetchObservable;\nexport function initFetchObservable() {\n if (!fetchObservable) {\n fetchObservable = createFetchObservable();\n }\n return fetchObservable;\n}\nexport function resetFetchObservable() {\n fetchObservable = undefined;\n}\nfunction createFetchObservable() {\n return new Observable((observable) => {\n if (!globalObject.fetch) {\n return;\n }\n const { stop } = instrumentMethod(globalObject, 'fetch', (call) => beforeSend(call, observable), {\n computeHandlingStack: true,\n });\n return stop;\n });\n}\nfunction beforeSend({ parameters, onPostCall, handlingStack }, observable) {\n const [input, init] = parameters;\n let methodFromParams = init && init.method;\n if (methodFromParams === undefined && input instanceof Request) {\n methodFromParams = input.method;\n }\n const method = methodFromParams !== undefined ? String(methodFromParams).toUpperCase() : 'GET';\n const url = input instanceof Request ? input.url : normalizeUrl(String(input));\n const startClocks = clocksNow();\n const context = {\n state: 'start',\n init,\n input,\n method,\n startClocks,\n url,\n handlingStack,\n };\n observable.notify(context);\n // Those properties can be changed by observable subscribers\n parameters[0] = context.input;\n parameters[1] = context.init;\n onPostCall((responsePromise) => afterSend(observable, responsePromise, context));\n}\nfunction afterSend(observable, responsePromise, startContext) {\n const context = startContext;\n function reportFetch(partialContext) {\n context.state = 'resolve';\n Object.assign(context, partialContext);\n observable.notify(context);\n }\n responsePromise.then(monitor((response) => {\n reportFetch({\n response,\n responseType: response.type,\n status: response.status,\n isAborted: false,\n });\n }), monitor((error) => {\n var _a, _b;\n reportFetch({\n status: 0,\n isAborted: ((_b = (_a = context.init) === null || _a === void 0 ? void 0 : _a.signal) === null || _b === void 0 ? void 0 : _b.aborted) || (error instanceof DOMException && error.code === DOMException.ABORT_ERR),\n error,\n });\n }));\n}\n//# sourceMappingURL=fetchObservable.js.map","import { isError, computeRawError } 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 { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { ErrorSource } from '../error/error.types';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { createHandlingStack, formatErrorMessage } from '../../tools/stackTrace/handlingStack';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nlet consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n const consoleObservables = apis.map((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(...consoleObservables);\n}\nexport function resetConsoleObservable() {\n consoleObservablesByApi = {};\n}\nfunction createConsoleObservable(api) {\n return new Observable((observable) => {\n const originalConsoleApi = globalConsole[api];\n globalConsole[api] = (...params) => {\n originalConsoleApi.apply(console, params);\n const handlingStack = createHandlingStack('console error');\n callMonitored(() => {\n observable.notify(buildConsoleLog(params, api, handlingStack));\n });\n };\n return () => {\n globalConsole[api] = originalConsoleApi;\n };\n });\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n const message = params.map((param) => formatConsoleParameters(param)).join(' ');\n if (api === ConsoleApiName.error) {\n const firstErrorParam = params.find(isError);\n const rawError = computeRawError({\n originalError: firstErrorParam,\n handlingStack,\n startClocks: clocksNow(),\n source: ErrorSource.CONSOLE,\n handling: \"handled\" /* ErrorHandling.HANDLED */,\n nonErrorPrefix: \"Provided\" /* NonErrorPrefix.PROVIDED */,\n // if no good stack is computed from the error, let's not use the fallback stack message\n // advising the user to use an instance of Error, as console.error is commonly used without an\n // Error instance.\n useFallbackStack: false,\n });\n // Use the full log message as the error message instead of just the error instance message.\n rawError.message = message;\n return {\n api,\n message,\n handlingStack,\n error: rawError,\n };\n }\n return {\n api,\n message,\n error: undefined,\n 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 { removeItem } from './utils/arrayUtils';\nconst BUFFER_LIMIT = 500;\n/**\n * createBoundedBuffer creates a BoundedBuffer.\n *\n * @deprecated Use `BufferedObservable` instead.\n */\nexport function createBoundedBuffer() {\n const buffer = [];\n const add = (callback) => {\n const length = buffer.push(callback);\n if (length > BUFFER_LIMIT) {\n buffer.splice(0, 1);\n }\n };\n const remove = (callback) => {\n removeItem(buffer, callback);\n };\n const drain = (arg) => {\n buffer.forEach((callback) => callback(arg));\n buffer.length = 0;\n };\n return {\n add,\n remove,\n drain,\n };\n}\n//# sourceMappingURL=boundedBuffer.js.map","import { display } from '../../tools/display';\nimport { getType } from '../../tools/utils/typeUtils';\n/**\n * Simple check to ensure an object is a valid context\n */\nexport function checkContext(maybeContext) {\n const isValid = getType(maybeContext) === 'object';\n if (!isValid) {\n display.error('Unsupported context:', maybeContext);\n }\n return isValid;\n}\n//# sourceMappingURL=contextUtils.js.map","import { deepClone } from '../../tools/mergeInto';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { Observable } from '../../tools/observable';\nimport { display } from '../../tools/display';\nimport { checkContext } from './contextUtils';\nfunction ensureProperties(context, propertiesConfig, name) {\n const newContext = { ...context };\n for (const [key, { required, type }] of Object.entries(propertiesConfig)) {\n /**\n * Ensure specified properties are strings as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\n if (type === 'string' && !isDefined(newContext[key])) {\n /* eslint-disable @typescript-eslint/no-base-to-string */\n newContext[key] = String(newContext[key]);\n }\n if (required && isDefined(newContext[key])) {\n display.warn(`The property ${key} of ${name} is required; context will not be sent to the intake.`);\n }\n }\n return newContext;\n}\nfunction isDefined(value) {\n return value === undefined || value === null || value === '';\n}\nexport function createContextManager(name = '', { propertiesConfig = {}, } = {}) {\n let context = {};\n const changeObservable = new Observable();\n const contextManager = {\n getContext: () => deepClone(context),\n setContext: (newContext) => {\n if (checkContext(newContext)) {\n context = sanitize(ensureProperties(newContext, propertiesConfig, name));\n }\n else {\n contextManager.clearContext();\n }\n changeObservable.notify();\n },\n setContextProperty: (key, property) => {\n context = sanitize(ensureProperties({ ...context, [key]: property }, propertiesConfig, name));\n changeObservable.notify();\n },\n removeContextProperty: (key) => {\n delete context[key];\n ensureProperties(context, propertiesConfig, name);\n changeObservable.notify();\n },\n clearContext: () => {\n context = {};\n changeObservable.notify();\n },\n changeObservable,\n };\n return contextManager;\n}\n//# sourceMappingURL=contextManager.js.map","import { addTelemetryUsage } from '../telemetry';\nimport { monitor } from '../../tools/monitor';\nexport function defineContextMethod(getStrategy, contextName, methodName, usage) {\n return monitor((...args) => {\n if (usage) {\n addTelemetryUsage({ feature: usage });\n }\n return getStrategy()[contextName][methodName](...args);\n });\n}\nexport function bufferContextCalls(preStartContextManager, name, bufferApiCalls) {\n preStartContextManager.changeObservable.subscribe(() => {\n const context = preStartContextManager.getContext();\n bufferApiCalls.add((startResult) => startResult[name].setContext(context));\n });\n}\n//# sourceMappingURL=defineContextMethod.js.map","import { addEventListener } from '../../browser/addEventListener';\nimport { combine } from '../../tools/mergeInto';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\nconst CONTEXT_STORE_KEY_PREFIX = '_dd_c';\nconst storageListeners = [];\nexport function storeContextManager(configuration, contextManager, productKey, customerDataType) {\n const storageKey = buildStorageKey(productKey, customerDataType);\n storageListeners.push(addEventListener(configuration, window, \"storage\" /* DOM_EVENT.STORAGE */, ({ key }) => {\n if (storageKey === key) {\n synchronizeWithStorage();\n }\n }));\n contextManager.changeObservable.subscribe(dumpToStorage);\n const contextFromStorage = combine(getFromStorage(), contextManager.getContext());\n if (!isEmptyObject(contextFromStorage)) {\n contextManager.setContext(contextFromStorage);\n }\n function synchronizeWithStorage() {\n contextManager.setContext(getFromStorage());\n }\n function dumpToStorage() {\n localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()));\n }\n function getFromStorage() {\n const rawContext = localStorage.getItem(storageKey);\n return rawContext ? JSON.parse(rawContext) : {};\n }\n}\nexport function buildStorageKey(productKey, customerDataType) {\n return `${CONTEXT_STORE_KEY_PREFIX}_${productKey}_${customerDataType}`;\n}\nexport function removeStorageListeners() {\n storageListeners.map((listener) => listener.stop());\n}\n//# sourceMappingURL=storeContextManager.js.map","import { storeContextManager } from '../context/storeContextManager';\nimport { SKIPPED } from '../../tools/abstractHooks';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { createContextManager } from '../context/contextManager';\nexport function startAccountContext(hooks, configuration, productKey) {\n const accountContextManager = buildAccountContextManager();\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(configuration, accountContextManager, productKey, 4 /* CustomerDataType.Account */);\n }\n hooks.register(0 /* HookNames.Assemble */, () => {\n const account = accountContextManager.getContext();\n if (isEmptyObject(account) || !account.id) {\n return SKIPPED;\n }\n return {\n account,\n };\n });\n return accountContextManager;\n}\nexport function buildAccountContextManager() {\n return createContextManager('account', {\n propertiesConfig: {\n id: { type: 'string', required: true },\n name: { type: 'string' },\n },\n });\n}\n//# sourceMappingURL=accountContext.js.map","import { storeContextManager } from '../context/storeContextManager';\nimport { createContextManager } from '../context/contextManager';\nexport function startGlobalContext(hooks, configuration, productKey, useContextNamespace) {\n const globalContextManager = buildGlobalContextManager();\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(configuration, globalContextManager, productKey, 2 /* CustomerDataType.GlobalContext */);\n }\n hooks.register(0 /* HookNames.Assemble */, () => {\n const context = globalContextManager.getContext();\n return useContextNamespace ? { context } : context;\n });\n return globalContextManager;\n}\nexport function buildGlobalContextManager() {\n return createContextManager('global context');\n}\n//# sourceMappingURL=globalContext.js.map","import { storeContextManager } from '../context/storeContextManager';\nimport { SKIPPED } from '../../tools/abstractHooks';\nimport { createContextManager } from '../context/contextManager';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\nexport function startUserContext(hooks, configuration, sessionManager, productKey) {\n const userContextManager = buildUserContextManager();\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(configuration, userContextManager, productKey, 1 /* CustomerDataType.User */);\n }\n hooks.register(0 /* HookNames.Assemble */, ({ eventType, startTime }) => {\n const user = userContextManager.getContext();\n const session = sessionManager.findTrackedSession(startTime);\n if (session && session.anonymousId && !user.anonymous_id && !!configuration.trackAnonymousUser) {\n user.anonymous_id = session.anonymousId;\n }\n if (isEmptyObject(user)) {\n return SKIPPED;\n }\n return {\n type: eventType,\n usr: user,\n };\n });\n hooks.register(1 /* HookNames.AssembleTelemetry */, ({ startTime }) => {\n var _a;\n return ({\n anonymous_id: (_a = sessionManager.findTrackedSession(startTime)) === null || _a === void 0 ? void 0 : _a.anonymousId,\n });\n });\n return userContextManager;\n}\nexport function buildUserContextManager() {\n return createContextManager('user', {\n propertiesConfig: {\n id: { type: 'string' },\n name: { type: 'string' },\n email: { type: 'string' },\n },\n });\n}\n//# sourceMappingURL=userContext.js.map","// Use a const instead of const enum to avoid inlining the enum values in the bundle and save bytes\nexport const CustomerContextKey = {\n userContext: 'userContext',\n globalContext: 'globalContext',\n accountContext: 'accountContext',\n};\n// Use a const instead of const enum to avoid inlining the enum values in the bundle and save bytes\nexport const ContextManagerMethod = {\n getContext: 'getContext',\n setContext: 'setContext',\n setContextProperty: 'setContextProperty',\n removeContextProperty: 'removeContextProperty',\n clearContext: 'clearContext',\n};\n//# sourceMappingURL=contextConstants.js.map","import { monitor } from './monitor';\nimport { noop } from './utils/functionUtils';\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nexport function readBytesFromStream(stream, callback, options) {\n const reader = stream.getReader();\n const chunks = [];\n let readBytesCount = 0;\n readMore();\n function readMore() {\n reader.read().then(monitor((result) => {\n if (result.done) {\n onDone();\n return;\n }\n if (options.collectStreamBody) {\n chunks.push(result.value);\n }\n readBytesCount += result.value.length;\n if (readBytesCount > options.bytesLimit) {\n onDone();\n }\n else {\n readMore();\n }\n }), monitor((error) => callback(error)));\n }\n function onDone() {\n reader.cancel().catch(\n // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n // as an unhandled rejection\n noop);\n let bytes;\n let limitExceeded;\n if (options.collectStreamBody) {\n let completeBuffer;\n if (chunks.length === 1) {\n // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just\n // use it directly.\n completeBuffer = chunks[0];\n }\n else {\n // else, we need to copy buffers into a larger buffer to concatenate them.\n completeBuffer = new Uint8Array(readBytesCount);\n let offset = 0;\n chunks.forEach((chunk) => {\n completeBuffer.set(chunk, offset);\n offset += chunk.length;\n });\n }\n bytes = completeBuffer.slice(0, options.bytesLimit);\n limitExceeded = completeBuffer.length > options.bytesLimit;\n }\n callback(undefined, bytes, limitExceeded);\n }\n}\n//# sourceMappingURL=readBytesFromStream.js.map","export const ResourceType = {\n DOCUMENT: 'document',\n XHR: 'xhr',\n BEACON: 'beacon',\n FETCH: 'fetch',\n CSS: 'css',\n JS: 'js',\n IMAGE: 'image',\n FONT: 'font',\n MEDIA: 'media',\n OTHER: 'other',\n};\nexport const RequestType = {\n FETCH: ResourceType.FETCH,\n XHR: ResourceType.XHR,\n};\n//# sourceMappingURL=resourceUtils.js.map","import { BufferedObservable } from '../tools/observable';\nimport { trackRuntimeError } from './error/trackRuntimeError';\nconst BUFFER_LIMIT = 500;\nexport function startBufferingData(trackRuntimeErrorImpl = trackRuntimeError) {\n const observable = new BufferedObservable(BUFFER_LIMIT);\n const runtimeErrorSubscription = trackRuntimeErrorImpl().subscribe((error) => {\n observable.notify({\n type: 0 /* BufferedDataType.RUNTIME_ERROR */,\n error,\n });\n });\n return {\n observable,\n stop: () => {\n runtimeErrorSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=bufferedData.js.map","export function isAuthorized(status, handlerType, logger) {\n const loggerHandler = logger.getHandler();\n const sanitizedHandlerType = Array.isArray(loggerHandler) ? loggerHandler : [loggerHandler];\n return STATUS_PRIORITIES[status] >= STATUS_PRIORITIES[logger.getLevel()] && sanitizedHandlerType.includes(handlerType);\n}\nexport const 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 const STATUS_PRIORITIES = {\n [StatusType.ok]: 0,\n [StatusType.debug]: 1,\n [StatusType.info]: 2,\n [StatusType.notice]: 4,\n [StatusType.warn]: 5,\n [StatusType.error]: 6,\n [StatusType.critical]: 7,\n [StatusType.alert]: 8,\n [StatusType.emerg]: 9,\n};\n//# sourceMappingURL=isAuthorized.js.map","export function createErrorFieldFromRawError(rawError, { \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 */\nincludeMessage = false, } = {}) {\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, combine, createContextManager, ErrorSource, monitored, sanitize, createHandlingStack, buildTag, sanitizeTag, } from '@datadog/browser-core';\nimport { isAuthorized, StatusType } from './logger/isAuthorized';\nimport { createErrorFieldFromRawError } from './createErrorFieldFromRawError';\nexport const HandlerType = {\n console: 'console',\n http: 'http',\n silent: 'silent',\n};\nexport const 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\nexport class Logger {\n constructor(handleLogStrategy, name, handlerType = HandlerType.http, level = StatusType.debug, loggerContext = {}) {\n this.handleLogStrategy = handleLogStrategy;\n this.handlerType = handlerType;\n this.level = level;\n this.contextManager = createContextManager('logger');\n this.tags = [];\n this.contextManager.setContext(loggerContext);\n if (name) {\n this.contextManager.setContextProperty('logger', { name });\n }\n }\n logImplementation(message, messageContext, status = StatusType.info, error, handlingStack) {\n const sanitizedMessageContext = sanitize(messageContext);\n let context;\n if (error !== undefined && error !== null) {\n const rawError = computeRawError({\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 }, rawError.context, sanitizedMessageContext);\n }\n else {\n context = sanitizedMessageContext;\n }\n this.handleLogStrategy({\n message: sanitize(message),\n context,\n status,\n }, this, handlingStack);\n }\n log(message, messageContext, status = StatusType.info, error) {\n let handlingStack;\n if (isAuthorized(status, HandlerType.http, this)) {\n handlingStack = createHandlingStack('log');\n }\n this.logImplementation(message, messageContext, status, error, handlingStack);\n }\n setContext(context) {\n this.contextManager.setContext(context);\n }\n getContext() {\n return this.contextManager.getContext();\n }\n setContextProperty(key, value) {\n this.contextManager.setContextProperty(key, value);\n }\n removeContextProperty(key) {\n this.contextManager.removeContextProperty(key);\n }\n clearContext() {\n this.contextManager.clearContext();\n }\n addTag(key, value) {\n this.tags.push(buildTag(key, value));\n }\n removeTagsWithKey(key) {\n const sanitizedKey = sanitizeTag(key);\n this.tags = this.tags.filter((tag) => tag !== sanitizedKey && !tag.startsWith(`${sanitizedKey}:`));\n }\n getTags() {\n return this.tags.slice();\n }\n setHandler(handler) {\n this.handlerType = handler;\n }\n getHandler() {\n return this.handlerType;\n }\n setLevel(level) {\n this.level = level;\n }\n getLevel() {\n return this.level;\n }\n}\n__decorate([\n monitored\n], Logger.prototype, \"logImplementation\", null);\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 let handlingStack;\n if (isAuthorized(status, HandlerType.http, this)) {\n handlingStack = createHandlingStack('log');\n }\n this.logImplementation(message, messageContext, status, error, handlingStack);\n };\n}\n//# sourceMappingURL=logger.js.map","import { isWorkerEnvironment } from '@datadog/browser-core';\nexport function buildCommonContext() {\n if (isWorkerEnvironment) {\n return {};\n }\n return {\n view: {\n referrer: document.referrer,\n url: window.location.href,\n },\n };\n}\n//# sourceMappingURL=commonContext.js.map","import { serializeConfiguration, ONE_KIBI_BYTE, validateAndBuildConfiguration, display, removeDuplicates, ConsoleApiName, RawReportType, objectValues, } from '@datadog/browser-core';\n/**\n * arbitrary value, byte precision not needed\n */\nexport const DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT = 32 * ONE_KIBI_BYTE;\nexport function validateAndBuildLogsConfiguration(initConfiguration, errorStack) {\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 const baseConfiguration = validateAndBuildConfiguration(initConfiguration, errorStack);\n const forwardConsoleLogs = validateAndBuildForwardOption(initConfiguration.forwardConsoleLogs, objectValues(ConsoleApiName), 'Forward Console Logs');\n const forwardReports = validateAndBuildForwardOption(initConfiguration.forwardReports, objectValues(RawReportType), 'Forward Reports');\n if (!baseConfiguration || !forwardConsoleLogs || !forwardReports) {\n return;\n }\n if (initConfiguration.forwardErrorsToLogs && !forwardConsoleLogs.includes(ConsoleApiName.error)) {\n forwardConsoleLogs.push(ConsoleApiName.error);\n }\n return {\n forwardErrorsToLogs: initConfiguration.forwardErrorsToLogs !== false,\n forwardConsoleLogs,\n forwardReports,\n requestErrorResponseLengthLimit: DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT,\n ...baseConfiguration,\n };\n}\nexport function validateAndBuildForwardOption(option, allowedValues, label) {\n if (option === undefined) {\n return [];\n }\n if (!(option === 'all' || (Array.isArray(option) && option.every((api) => allowedValues.includes(api))))) {\n display.error(`${label} should be \"all\" or an array with allowed values \"${allowedValues.join('\", \"')}\"`);\n return;\n }\n return option === 'all' ? allowedValues : removeDuplicates(option);\n}\nexport function serializeLogsConfiguration(configuration) {\n const baseSerializedInitConfiguration = serializeConfiguration(configuration);\n return {\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 ...baseSerializedInitConfiguration,\n };\n}\n//# sourceMappingURL=configuration.js.map","import { createBoundedBuffer, canUseEventBridge, display, displayAlreadyInitializedError, initFeatureFlags, initFetchObservable, noop, timeStampNow, buildAccountContextManager, CustomerContextKey, bufferContextCalls, addTelemetryConfiguration, buildGlobalContextManager, buildUserContextManager, } from '@datadog/browser-core';\nimport { serializeLogsConfiguration, validateAndBuildLogsConfiguration } from '../domain/configuration';\nexport function createPreStartStrategy(getCommonContext, trackingConsentState, doStartLogs) {\n const bufferApiCalls = createBoundedBuffer();\n // TODO next major: remove the globalContext, accountContextManager, userContext from preStartStrategy and use an empty context instead\n const globalContext = buildGlobalContextManager();\n bufferContextCalls(globalContext, CustomerContextKey.globalContext, bufferApiCalls);\n const accountContext = buildAccountContextManager();\n bufferContextCalls(accountContext, CustomerContextKey.accountContext, bufferApiCalls);\n const userContext = buildUserContextManager();\n bufferContextCalls(userContext, CustomerContextKey.userContext, bufferApiCalls);\n let cachedInitConfiguration;\n let cachedConfiguration;\n const trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartLogs);\n function tryStartLogs() {\n if (!cachedConfiguration || !cachedInitConfiguration || !trackingConsentState.isGranted()) {\n return;\n }\n trackingConsentStateSubscription.unsubscribe();\n const startLogsResult = doStartLogs(cachedInitConfiguration, cachedConfiguration);\n bufferApiCalls.drain(startLogsResult);\n }\n return {\n init(initConfiguration, errorStack) {\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 addTelemetryConfiguration(serializeLogsConfiguration(initConfiguration));\n if (cachedConfiguration) {\n displayAlreadyInitializedError('DD_LOGS', initConfiguration);\n return;\n }\n const configuration = validateAndBuildLogsConfiguration(initConfiguration, errorStack);\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 globalContext,\n accountContext,\n userContext,\n getInternalContext: noop,\n handleLog(message, statusType, handlingStack, context = getCommonContext(), date = timeStampNow()) {\n bufferApiCalls.add((startLogsResult) => startLogsResult.handleLog(message, statusType, handlingStack, context, date));\n },\n };\n}\nfunction overrideInitConfigurationForBridge(initConfiguration) {\n return { ...initConfiguration, clientToken: 'empty' };\n}\n//# sourceMappingURL=preStartLogs.js.map","import { ContextManagerMethod, CustomerContextKey, addTelemetryUsage, makePublicApi, monitor, sanitize, displayAlreadyInitializedError, deepClone, createTrackingConsentState, defineContextMethod, startBufferingData, callMonitored, } from '@datadog/browser-core';\nimport { Logger } from '../domain/logger';\nimport { buildCommonContext } from '../domain/contexts/commonContext';\nimport { createPreStartStrategy } from './preStartLogs';\nexport function makeLogsPublicApi(startLogsImpl) {\n const trackingConsentState = createTrackingConsentState();\n const bufferedDataObservable = startBufferingData().observable;\n let strategy = createPreStartStrategy(buildCommonContext, trackingConsentState, (initConfiguration, configuration) => {\n const startLogsResult = startLogsImpl(configuration, buildCommonContext, trackingConsentState, bufferedDataObservable);\n strategy = createPostStartStrategy(initConfiguration, startLogsResult);\n return startLogsResult;\n });\n const getStrategy = () => strategy;\n const customLoggers = {};\n const mainLogger = new Logger((...params) => strategy.handleLog(...params));\n return makePublicApi({\n logger: mainLogger,\n init: (initConfiguration) => {\n const errorStack = new Error().stack;\n callMonitored(() => strategy.init(initConfiguration, errorStack));\n },\n setTrackingConsent: monitor((trackingConsent) => {\n trackingConsentState.update(trackingConsent);\n addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent });\n }),\n getGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.getContext),\n setGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.setContext),\n setGlobalContextProperty: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.setContextProperty),\n removeGlobalContextProperty: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.removeContextProperty),\n clearGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.clearContext),\n createLogger: monitor((name, conf = {}) => {\n customLoggers[name] = new Logger((...params) => strategy.handleLog(...params), sanitize(name), conf.handler, conf.level, sanitize(conf.context));\n return customLoggers[name];\n }),\n getLogger: monitor((name) => customLoggers[name]),\n getInitConfiguration: monitor(() => deepClone(strategy.initConfiguration)),\n getInternalContext: monitor((startTime) => strategy.getInternalContext(startTime)),\n setUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.setContext),\n getUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.getContext),\n setUserProperty: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.setContextProperty),\n removeUserProperty: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.removeContextProperty),\n clearUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.clearContext),\n setAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.setContext),\n getAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.getContext),\n setAccountProperty: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.setContextProperty),\n removeAccountProperty: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.removeContextProperty),\n clearAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.clearContext),\n });\n}\nfunction createPostStartStrategy(initConfiguration, startLogsResult) {\n return {\n init: (initConfiguration) => {\n displayAlreadyInitializedError('DD_LOGS', initConfiguration);\n },\n initConfiguration,\n ...startLogsResult,\n };\n}\n//# sourceMappingURL=logsPublicApi.js.map","import { Observable, performDraw, SESSION_NOT_TRACKED, startSessionManager } from '@datadog/browser-core';\nexport const LOGS_SESSION_KEY = 'logs';\nexport function startLogsSessionManager(configuration, trackingConsentState) {\n const sessionManager = startSessionManager(configuration, LOGS_SESSION_KEY, (rawTrackingType) => computeTrackingType(configuration, rawTrackingType), trackingConsentState);\n return {\n findTrackedSession: (startTime, options = { returnInactive: false }) => {\n const session = sessionManager.findSession(startTime, options);\n return session && session.trackingType === \"1\" /* LoggerTrackingType.TRACKED */\n ? {\n id: session.id,\n anonymousId: session.anonymousId,\n }\n : undefined;\n },\n expireObservable: sessionManager.expireObservable,\n };\n}\nexport function startLogsSessionManagerStub(configuration) {\n const isTracked = computeTrackingType(configuration) === \"1\" /* LoggerTrackingType.TRACKED */;\n const session = isTracked ? {} : undefined;\n return {\n findTrackedSession: () => session,\n expireObservable: new Observable(),\n };\n}\nfunction computeTrackingType(configuration, rawTrackingType) {\n if (hasValidLoggerSession(rawTrackingType)) {\n return rawTrackingType;\n }\n if (!performDraw(configuration.sessionSampleRate)) {\n return \"0\" /* LoggerTrackingType.NOT_TRACKED */;\n }\n return \"1\" /* LoggerTrackingType.TRACKED */;\n}\nfunction hasValidLoggerSession(trackingType) {\n return trackingType === \"0\" /* LoggerTrackingType.NOT_TRACKED */ || trackingType === \"1\" /* LoggerTrackingType.TRACKED */;\n}\n//# sourceMappingURL=logsSessionManager.js.map","import { DISCARDED, ErrorSource, buildTags, combine, createEventRateLimiter, getRelativeTime, } from '@datadog/browser-core';\nimport { STATUSES } from './logger';\nexport function startLogsAssembly(configuration, lifeCycle, hooks, getCommonContext, reportError) {\n const statusWithCustom = STATUSES.concat(['custom']);\n const logRateLimiters = {};\n statusWithCustom.forEach((status) => {\n logRateLimiters[status] = createEventRateLimiter(status, configuration.eventRateLimiterThreshold, reportError);\n });\n lifeCycle.subscribe(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, ({ rawLogsEvent, messageContext = undefined, savedCommonContext = undefined, domainContext, ddtags = [] }) => {\n var _a, _b;\n const startTime = getRelativeTime(rawLogsEvent.date);\n const commonContext = savedCommonContext || getCommonContext();\n const defaultLogsEventAttributes = hooks.triggerHook(0 /* HookNames.Assemble */, {\n startTime,\n });\n if (defaultLogsEventAttributes === DISCARDED) {\n return;\n }\n const defaultDdtags = buildTags(configuration);\n const log = combine({\n view: commonContext.view,\n }, defaultLogsEventAttributes, rawLogsEvent, messageContext, {\n ddtags: defaultDdtags.concat(ddtags).join(','),\n });\n if (((_a = configuration.beforeSend) === null || _a === void 0 ? void 0 : _a.call(configuration, log, domainContext)) === false ||\n (log.origin !== ErrorSource.AGENT &&\n ((_b = logRateLimiters[log.status]) !== null && _b !== void 0 ? _b : logRateLimiters['custom']).isLimitReached())) {\n return;\n }\n lifeCycle.notify(1 /* LifeCycleEventType.LOG_COLLECTED */, log);\n });\n}\n//# sourceMappingURL=assembly.js.map","import { timeStampNow, ConsoleApiName, ErrorSource, initConsoleObservable } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nimport { createErrorFieldFromRawError } from '../createErrorFieldFromRawError';\nexport const LogStatusForApi = {\n [ConsoleApiName.log]: StatusType.info,\n [ConsoleApiName.debug]: StatusType.debug,\n [ConsoleApiName.info]: StatusType.info,\n [ConsoleApiName.warn]: StatusType.warn,\n [ConsoleApiName.error]: StatusType.error,\n};\nexport function startConsoleCollection(configuration, lifeCycle) {\n const consoleSubscription = initConsoleObservable(configuration.forwardConsoleLogs).subscribe((log) => {\n var _a;\n const 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 messageContext: (_a = log.error) === null || _a === void 0 ? void 0 : _a.context,\n domainContext: {\n handlingStack: log.handlingStack,\n },\n };\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, collectedData);\n });\n return {\n stop: () => {\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 const reportSubscription = initReportObservable(configuration, configuration.forwardReports).subscribe((rawError) => {\n let message = rawError.message;\n let error;\n const 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 ${getFileFromStackTraceString(rawError.stack)}`;\n }\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n rawLogsEvent: {\n date: timeStampNow(),\n message,\n origin: ErrorSource.REPORT,\n error,\n status,\n },\n });\n });\n return {\n stop: () => {\n reportSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=reportCollection.js.map","import { isWorkerEnvironment, Observable, ErrorSource, initXhrObservable, RequestType, 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 // XHR is not available in web workers, so we use an empty observable that never emits\n const xhrSubscription = (isWorkerEnvironment ? new Observable() : initXhrObservable(configuration)).subscribe((context) => {\n if (context.state === 'complete') {\n handleResponse(RequestType.XHR, context);\n }\n });\n const fetchSubscription = initFetchObservable().subscribe((context) => {\n if (context.state === 'resolve') {\n handleResponse(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 const domainContext = {\n isAborted: request.isAborted,\n handlingStack: request.handlingStack,\n };\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n rawLogsEvent: {\n message: `${format(type)} error ${request.method} ${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,\n });\n }\n }\n return {\n stop: () => {\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 const 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((text) => callback(truncateResponseText(text, configuration))), monitor((error) => callback(`Unable to retrieve response: ${error}`)));\n }\n else {\n truncateResponseStream(clonedResponse.body, configuration.requestErrorResponseLengthLimit, (error, responseText) => {\n if (error) {\n callback(`Unable to retrieve response: ${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 `${responseText.substring(0, configuration.requestErrorResponseLengthLimit)}...`;\n }\n return responseText;\n}\nfunction format(type) {\n if (RequestType.XHR === type) {\n return 'XHR';\n }\n return 'Fetch';\n}\nfunction truncateResponseStream(stream, bytesLimit, callback) {\n readBytesFromStream(stream, (error, bytes, limitExceeded) => {\n if (error) {\n callback(error);\n }\n else {\n let responseText = new TextDecoder().decode(bytes);\n if (limitExceeded) {\n responseText += '...';\n }\n callback(undefined, responseText);\n }\n }, {\n bytesLimit,\n collectStreamBody: true,\n });\n}\n//# sourceMappingURL=networkErrorCollection.js.map","import { noop, ErrorSource } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nimport { createErrorFieldFromRawError } from '../createErrorFieldFromRawError';\nexport function startRuntimeErrorCollection(configuration, lifeCycle, bufferedDataObservable) {\n if (!configuration.forwardErrorsToLogs) {\n return { stop: noop };\n }\n const rawErrorSubscription = bufferedDataObservable.subscribe((bufferedData) => {\n if (bufferedData.type === 0 /* BufferedDataType.RUNTIME_ERROR */) {\n const error = bufferedData.error;\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n rawLogsEvent: {\n message: error.message,\n date: error.startClocks.timeStamp,\n error: createErrorFieldFromRawError(error),\n origin: ErrorSource.SOURCE,\n status: StatusType.error,\n },\n messageContext: error.context,\n });\n }\n });\n return {\n stop: () => {\n rawErrorSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=runtimeErrorCollection.js.map","import { AbstractLifeCycle } from '@datadog/browser-core';\nexport const LifeCycle = (AbstractLifeCycle);\n//# sourceMappingURL=lifeCycle.js.map","import { 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 const 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 const rawLogEventData = {\n rawLogsEvent: {\n date: savedDate || timeStampNow(),\n message: logsMessage.message,\n status: logsMessage.status,\n origin: ErrorSource.LOGGER,\n },\n messageContext,\n savedCommonContext,\n ddtags: logger.getTags(),\n };\n if (handlingStack) {\n rawLogEventData.domainContext = { handlingStack };\n }\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, rawLogEventData);\n }\n }\n return {\n handleLog,\n };\n}\nconst loggerToConsoleApiName = {\n [StatusType.ok]: ConsoleApiName.debug,\n [StatusType.debug]: ConsoleApiName.debug,\n [StatusType.info]: ConsoleApiName.info,\n [StatusType.notice]: ConsoleApiName.info,\n [StatusType.warn]: ConsoleApiName.warn,\n [StatusType.error]: ConsoleApiName.error,\n [StatusType.critical]: ConsoleApiName.error,\n [StatusType.alert]: ConsoleApiName.error,\n [StatusType.emerg]: ConsoleApiName.error,\n};\nfunction displayInConsole({ status, message }, messageContext) {\n originalConsoleMethods[loggerToConsoleApiName[status]].call(globalConsole, message, messageContext);\n}\n//# sourceMappingURL=loggerCollection.js.map","import { createBatch, createFlushController, createHttpRequest, createIdentityEncoder } from '@datadog/browser-core';\nexport function startLogsBatch(configuration, lifeCycle, reportError, pageMayExitObservable, session) {\n const endpoints = [configuration.logsEndpointBuilder];\n if (configuration.replica) {\n endpoints.push(configuration.replica.logsEndpointBuilder);\n }\n const batch = createBatch({\n encoder: createIdentityEncoder(),\n request: createHttpRequest(endpoints, configuration.batchBytesLimit, reportError),\n flushController: createFlushController({\n messagesLimit: configuration.batchMessagesLimit,\n bytesLimit: configuration.batchBytesLimit,\n durationLimit: configuration.flushTimeout,\n pageMayExitObservable,\n sessionExpireObservable: session.expireObservable,\n }),\n messageBytesLimit: configuration.messageBytesLimit,\n });\n lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, (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 const bridge = getEventBridge();\n lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, (serverLogsEvent) => {\n bridge.send('log', serverLogsEvent);\n });\n}\n//# sourceMappingURL=startLogsBridge.js.map","export function startInternalContext(sessionManager) {\n return {\n get: (startTime) => {\n const 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 (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 // monitor-until: forever, to keep an eye on the errors reported to customers\n addTelemetryDebug('Error reported to customer', { 'error.message': error.message });\n };\n}\n//# sourceMappingURL=reportError.js.map","import { abstractHooks } from '@datadog/browser-core';\nexport const createHooks = (abstractHooks);\n//# sourceMappingURL=hooks.js.map","import { globalObject, willSyntheticsInjectRum, SKIPPED } from '@datadog/browser-core';\nexport function startRUMInternalContext(hooks) {\n const browserWindow = globalObject;\n hooks.register(0 /* HookNames.Assemble */, ({ startTime }) => {\n const internalContext = getRUMInternalContext(startTime);\n if (!internalContext) {\n return SKIPPED;\n }\n return internalContext;\n });\n hooks.register(1 /* HookNames.AssembleTelemetry */, ({ startTime }) => {\n var _a, _b;\n const internalContext = getRUMInternalContext(startTime);\n if (!internalContext) {\n return SKIPPED;\n }\n return {\n application: { id: internalContext.application_id },\n view: { id: (_a = internalContext.view) === null || _a === void 0 ? void 0 : _a.id },\n action: { id: (_b = internalContext.user_action) === null || _b === void 0 ? void 0 : _b.id },\n };\n });\n function getRUMInternalContext(startTime) {\n const willSyntheticsInjectRumResult = willSyntheticsInjectRum();\n const rumSource = willSyntheticsInjectRumResult ? browserWindow.DD_RUM_SYNTHETICS : browserWindow.DD_RUM;\n const rumContext = getInternalContextFromRumGlobal(startTime, rumSource);\n if (rumContext) {\n return rumContext;\n }\n }\n function getInternalContextFromRumGlobal(startTime, rumGlobal) {\n if (rumGlobal && rumGlobal.getInternalContext) {\n return rumGlobal.getInternalContext(startTime);\n }\n }\n}\n//# sourceMappingURL=rumInternalContext.js.map","import { DISCARDED, SKIPPED } from '@datadog/browser-core';\nexport function startSessionContext(hooks, configuration, sessionManager) {\n hooks.register(0 /* HookNames.Assemble */, ({ startTime }) => {\n const session = sessionManager.findTrackedSession(startTime);\n const isSessionTracked = sessionManager.findTrackedSession(startTime, { returnInactive: true });\n if (!isSessionTracked) {\n return DISCARDED;\n }\n return {\n service: configuration.service,\n session_id: session ? session.id : undefined,\n session: session ? { id: session.id } : undefined,\n };\n });\n hooks.register(1 /* HookNames.AssembleTelemetry */, ({ startTime }) => {\n const session = sessionManager.findTrackedSession(startTime);\n if (!session || !session.id) {\n return SKIPPED;\n }\n return {\n session: { id: session.id },\n };\n });\n}\n//# sourceMappingURL=sessionContext.js.map","import { DISCARDED, SKIPPED } from '@datadog/browser-core';\nexport function startTrackingConsentContext(hooks, trackingConsentState) {\n function isConsented() {\n const wasConsented = trackingConsentState.isGranted();\n if (!wasConsented) {\n return DISCARDED;\n }\n return SKIPPED;\n }\n hooks.register(0 /* HookNames.Assemble */, isConsented);\n hooks.register(1 /* HookNames.AssembleTelemetry */, isConsented);\n}\n//# sourceMappingURL=trackingConsentContext.js.map","import { Observable, sendToExtension, createPageMayExitObservable, willSyntheticsInjectRum, canUseEventBridge, startAccountContext, startGlobalContext, startTelemetry, createIdentityEncoder, startUserContext, isWorkerEnvironment, } 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 { createHooks } from '../domain/hooks';\nimport { startRUMInternalContext } from '../domain/contexts/rumInternalContext';\nimport { startSessionContext } from '../domain/contexts/sessionContext';\nimport { startTrackingConsentContext } from '../domain/contexts/trackingConsentContext';\nconst LOGS_STORAGE_KEY = 'logs';\nexport function startLogs(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, bufferedDataObservable) {\n const lifeCycle = new LifeCycle();\n const hooks = createHooks();\n const cleanupTasks = [];\n lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, (log) => sendToExtension('logs', log));\n const reportError = startReportError(lifeCycle);\n // Page exit is not observable in worker environments (no window/document events)\n const pageMayExitObservable = isWorkerEnvironment\n ? new Observable()\n : createPageMayExitObservable(configuration);\n const telemetry = startTelemetry(\"browser-logs-sdk\" /* TelemetryService.LOGS */, configuration, hooks, reportError, pageMayExitObservable, createIdentityEncoder);\n cleanupTasks.push(telemetry.stop);\n const session = configuration.sessionStoreStrategyType && !canUseEventBridge() && !willSyntheticsInjectRum()\n ? startLogsSessionManager(configuration, trackingConsentState)\n : startLogsSessionManagerStub(configuration);\n startTrackingConsentContext(hooks, trackingConsentState);\n // Start user and account context first to allow overrides from global context\n startSessionContext(hooks, configuration, session);\n const accountContext = startAccountContext(hooks, configuration, LOGS_STORAGE_KEY);\n const userContext = startUserContext(hooks, configuration, session, LOGS_STORAGE_KEY);\n const globalContext = startGlobalContext(hooks, configuration, LOGS_STORAGE_KEY, false);\n startRUMInternalContext(hooks);\n startNetworkErrorCollection(configuration, lifeCycle);\n startRuntimeErrorCollection(configuration, lifeCycle, bufferedDataObservable);\n bufferedDataObservable.unbuffer();\n startConsoleCollection(configuration, lifeCycle);\n startReportCollection(configuration, lifeCycle);\n const { handleLog } = startLoggerCollection(lifeCycle);\n startLogsAssembly(configuration, lifeCycle, hooks, getCommonContext, reportError);\n if (!canUseEventBridge()) {\n const { stop: stopLogsBatch } = startLogsBatch(configuration, lifeCycle, reportError, pageMayExitObservable, session);\n cleanupTasks.push(() => stopLogsBatch());\n }\n else {\n startLogsBridge(lifeCycle);\n }\n const internalContext = startInternalContext(session);\n return {\n handleLog,\n getInternalContext: internalContext.get,\n accountContext,\n globalContext,\n userContext,\n stop: () => {\n cleanupTasks.forEach((task) => task());\n },\n };\n}\n//# sourceMappingURL=startLogs.js.map","/**\n *\n * Datadog Browser Logs SDK for collecting and forwarding browser logs to Datadog.\n * Provides comprehensive logging capabilities with automatic error tracking and custom log collection.\n *\n * @packageDocumentation\n * @see [Browser Log Collection](https://docs.datadoghq.com/logs/log_collection/javascript/)\n */\nimport { 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';\n/**\n * The global Logs instance. Use this to call Logs methods.\n *\n * @see [Browser Log Collection](https://docs.datadoghq.com/logs/log_collection/javascript/)\n */\nexport const datadogLogs = makeLogsPublicApi(startLogs);\ndefineGlobal(getGlobalObject(), 'DD_LOGS', datadogLogs);\n//# sourceMappingURL=main.js.map",null,null,null,null,null,null,null,null,null],"names":["ErrorEnum","MontonioCheckoutNotInitializedError","message","ValidationError","PaymentFailedError","paymentFailedMessageData","FailedToFetchReturnUrlError","attempts","CheckoutOptionsValidationError","errors","errorList","error","index","MessageTypeEnum","ConfigService","name","environment","config","HTTPService","url","data","method","controller","timeoutId","headers","options","response","MessagingService","messageType","handler","iframe","windowSource","subscription","timeout","resolve","reject","messageData","targetOrigin","except","key","source","event","ConsoleApiName","globalConsole","originalConsoleMethods","PREFIX","display","DOCS_ORIGIN","DOCS_TROUBLESHOOTING","MORE_DETAILS","catchUserErrors","fn","errorMsg","args","err","performDraw","threshold","isPercentage","value","isNumber","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","ONE_YEAR","dateNow","timeStampNow","relativeNow","clocksNow","clocksOrigin","getNavigationStart","elapsed","start","end","addDuration","a","b","getRelativeTime","timestamp","navigationStart","_a","_b","ONE_KIBI_BYTE","ONE_MEBI_BYTE","HAS_MULTI_BYTES_CHARACTERS","computeBytesCount","candidate","shallowClone","object","objectHasValue","isEmptyObject","getGlobalObject","globalObject","isWorkerEnvironment","getZoneJsOriginalValue","target","browserWindow","original","onMonitorErrorCollected","debugMode","startMonitorErrorCollection","newOnMonitorErrorCollected","setDebugMode","newDebugMode","monitored","_","__","descriptor","originalMethod","monitor","callMonitored","context","e","monitorError","displayIfDebugEnabled","setTimeout","callback","delay","clearTimeout","setInterval","clearInterval","queueMicrotask","nativeImplementation","Observable","onFirstSubscribe","observer","other","mergeObservables","observables","globalObservable","subscriptions","observable","BufferedObservable","maxBufferSize","closed","throttle","wait","inWaitPeriod","pendingExecutionWithParameters","pendingTimeoutId","parameters","noop","generateUUID","placeholder","COMMA_SEPARATED_KEY_VALUE","findCommaSeparatedValue","rawString","match","findCommaSeparatedValues","result","safeTruncate","length","suffix","lastChar","correctedLength","isChromium","detectBrowserCached","browserCache","detectBrowser","userAgent","normalizeUrl","buildUrl","base","URL","getPristineWindow","getPristineGlobalObjectCache","pristineWindow","setCookie","expireDelay","date","expires","sameSite","domain","secure","partitioned","getCookie","initCookieParsed","getInitCookie","deleteCookie","areCookiesAuthorized","testCookieName","testCookieValue","isCookieCorrectlySet","getCurrentSiteCache","getCurrentSite","hostname","referrer","defaultHostName","getCookieDefaultHostName","domainLevels","candidateDomain","SESSION_STORE_KEY","findLast","array","predicate","i","item","objectValues","objectEntries","SESSION_TIME_OUT_DELAY","SESSION_EXPIRATION_DELAY","SESSION_COOKIE_EXPIRATION_DELAY","SESSION_NOT_TRACKED","SessionPersistence","SESSION_ENTRY_REGEXP","SESSION_ENTRY_SEPARATOR","isValidSessionString","sessionString","EXPIRED","getExpiredSessionState","previousSessionState","configuration","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","storeSessionCookie","retrieveSessionCookie","defaultTimeout","currentSite","LOCAL_STORAGE_TEST_KEY","selectLocalStorageStrategy","id","testKey","retrievedId","initLocalStorageStrategy","persistInLocalStorage","retrieveSessionFromLocalStorage","expireSessionFromLocalStorage","LOCK_RETRY_DELAY","LOCK_MAX_TRIES","LOCK_EXPIRATION_DELAY","LOCK_SEPARATOR","bufferedOperations","ongoingOperations","processSessionStoreOperations","operations","sessionStoreStrategy","numberOfRetries","isLockEnabled","persistSession","expireSession","persistWithLock","currentLock","retrieveStore","lock","isLockExpired","next","currentStore","retryLater","createLock","processedSession","sessionStore","currentNumberOfRetries","nextOperations","timeStamp","STORAGE_POLL_DELAY","selectSessionStoreStrategyType","sessionStoreStrategyType","getSessionStoreStrategy","startSessionStore","productKey","computeTrackingType","renewObservable","expireObservable","sessionStateUpdateObservable","watchSessionTimeoutId","watchSession","sessionCache","startSession","throttledExpandOrRenewSession","cancelExpandOrRenewSession","synchronizedSession","synchronizeSession","expandOrRenewSessionState","hasSessionInCache","renewSessionInCache","expandSession","isSessionInCacheOutdated","expireSessionInCache","trackingType","updateSessionState","partialSessionState","TrackingConsent","createTrackingConsentState","currentConsent","trackingConsent","getType","matchList","list","useStartsWith","EXTENSION_PREFIXES","containsExtensionUrl","str","prefix","isUnsupportedExtensionEnvironment","windowLocation","stack","line","trimmedLine","ERROR_DOES_NOT_HAVE_ALLOWED_TRACKING_ORIGIN","ERROR_NOT_ALLOWED_TRACKING_ORIGIN","isAllowedTrackingOrigins","errorStack","windowOrigin","allowedTrackingOrigins","isAllowed","INTAKE_SITE_STAGING","INTAKE_SITE_FED_STAGING","INTAKE_SITE_US1","INTAKE_SITE_US1_FED","PCI_INTAKE_HOST_US1","INTAKE_URL_PARAMETERS","createEndpointBuilder","trackType","extraParameters","buildUrlWithParameters","createEndpointUrlWithParametersBuilder","api","payload","buildEndpointParameters","path","proxy","normalizedProxyUrl","host","buildEndpointHost","site","internalAnalyticsSubdomain","domainParts","extension","clientToken","retry","encoding","computeTransportConfiguration","validateSource","endpointBuilders","computeEndpointBuilders","computeReplicaConfiguration","replicaConfiguration","isIntakeUrl","param","isString","tag","tagName","isDatadogSite","isSampleRate","sampleRate","validateAndBuildConfiguration","_c","_d","_e","_f","_g","_h","_j","_k","serializeConfiguration","ExperimentalFeature","enabledExperimentalFeatures","initFeatureFlags","enableExperimentalFeatures","addExperimentalFeatures","flag","enabledFeatures","isExperimentalFeatureEnabled","featureName","getExperimentalFeatures","UNKNOWN_FUNCTION","computeStackTrace","ex","stackProperty","tryToGetString","exString","stackFrame","parseChromeLine","parseChromeAnonymousLine","parseWinLine","parseGeckoLine","isWronglyReportingCustomErrors","constructors","currentPrototype","isNonNativeClassPrototype","constructorName","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","ERROR_TYPES_RE","prototype","isWronglyReportingCustomErrorsCache","DatadogTestCustomError","customError","nativeError","errConstructor","createHandlingStack","type","formattedStack","stackTrace","toStackTraceString","formatErrorMessage","frame","func","instrumentMethod","targetPrototype","onPreCall","computeHandlingStack","stopped","instrumentation","postCallCallback","jsonStringify","replacer","space","restoreObjectPrototypeToJson","detachToJsonMethod","restoreArrayPrototypeToJson","restoreValuePrototypeToJson","restoreValueToJson","objectToJson","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","sanitizeEvent","changeType","NO_ERROR_STACK_PRESENT_MESSAGE","computeRawError","originalError","handlingStack","componentStack","startClocks","nonErrorPrefix","useFallbackStack","handling","isErrorInstance","isError","computeMessage","flattenErrorCauses","tryToGetFingerprint","tryToGetErrorContext","getFileFromStackTraceString","parentSource","currentError","causes","ErrorSource","trackRuntimeError","handleRuntimeError","rawError","stopInstrumentingOnError","instrumentOnError","stopInstrumentingOnUnhandledRejection","instrumentUnhandledRejection","errorObj","makePublicApi","stub","publicApi","defineGlobal","global","existingGlobalVariable","displayAlreadyInitializedError","sdkName","addEventListener","eventTarget","eventName","listener","addEventListeners","eventNames","once","capture","passive","listenerWithMonitor","stop","listenerTarget","add","remove","RawReportType","initReportObservable","apis","createCspViolationReportObservable","reportTypes","createReportObservable","handleReports","reports","report","buildRawReportErrorFromReport","buildRawReportErrorFromCspViolation","body","buildRawReportError","buildStack","partial","sourceFile","lineNumber","columnNumber","TAG_SIZE_LIMIT","buildTags","env","service","version","datacenter","sdkVersion","variant","tags","buildTag","rawValue","hasForbiddenCharacters","sanitizeTag","supportUnicodePropertyEscapes","sendToExtension","mergeInto","destination","circularReferenceChecker","createCircularReferenceChecker","flags","merged","deepClone","combine","sources","set","has","getConnectivity","navigator","isServerError","status","tryToClone","MAX_ONGOING_BYTES_COUNT","MAX_ONGOING_REQUESTS","MAX_QUEUE_BYTES_COUNT","MAX_BACKOFF_TIME","INITIAL_BACKOFF_TIME","sendWithRetryStrategy","state","sendStrategy","reportError","requestObservable","send","retryQueuedPayloads","scheduleRetry","onSuccess","onFailure","shouldRetryRequest","reason","previousQueue","newPayloadQueue","newRetryState","newBandwidthMonitor","createHttpRequest","bytesLimit","retryState","endpointBuilder","onResponse","fetchKeepAliveStrategy","sendBeaconStrategy","beaconUrl","reportBeaconError","fetchStrategy","hasReportedBeaconError","isKeepAliveSupported","fetchUrl","getEventBridge","eventBridgeGlobal","getEventBridgeGlobal","eventType","viewId","view","canUseEventBridge","currentHost","bridge","allowedHost","PageExitReason","createPageMayExitObservable","stopListeners","stopBeforeUnloadListener","isPageExitReason","createBatch","encoder","request","flushController","messageBytesLimit","upsertBuffer","flushSubscription","flush","push","serializedMessage","estimatedMessageBytesCount","realMessageBytesCount","hasMessageFor","removedMessage","messageBytesCount","addOrUpdate","upsertMessages","pageMightExit","encoderResult","formatPayloadFromEncoder","pendingMessages","createFlushController","messagesLimit","durationLimit","pageMayExitObservable","sessionExpireObservable","pageMayExitSubscription","sessionExpireSubscription","flushObservable","currentBytesCount","currentMessagesCount","flushReason","messagesCount","bytesCount","cancelDurationLimitTimeout","durationLimitTimeoutId","scheduleDurationLimitTimeout","messageBytesCountDiff","DISCARDED","SKIPPED","abstractHooks","callbacks","hookName","cb","hookCallbacks","results","TelemetryType","ALLOWED_FRAME_URLS","METRIC_SAMPLE_RATE","TELEMETRY_EXCLUDED_SITES","telemetryObservable","getTelemetryObservable","startTelemetry","telemetryService","hooks","createEncoder","startTelemetryTransport","enabled","metricsEnabled","startTelemetryCollection","metricSampleRate","alreadySentEventsByKind","telemetryEnabled","telemetryEnabledPerType","runtimeEnvInfo","getRuntimeEnvInfo","rawEvent","metricName","kind","alreadySentEvents","stringifiedEvent","defaultTelemetryEventAttributes","toTelemetryEvent","addTelemetryError","cleanupTasks","telemetrySubscription","endpoints","isTelemetryReplicationAllowed","telemetryBatch","task","addTelemetryDebug","formatError","addTelemetryConfiguration","addTelemetryUsage","usage","scrubCustomerFrames","allowedFrameUrl","removeDuplicates","removeItem","END_OF_TIMES","CLEAR_OLD_VALUES_INTERVAL","cleanupHistoriesInterval","cleanupHistories","createValueHistory","maxEntries","entries","clearExpiredValues","oldTimeThreshold","startTime","endTime","find","closeActive","latestEntry","findAll","duration","reset","SYNTHETICS_TEST_ID_COOKIE_NAME","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","getSyntheticsTestId","getSyntheticsResultId","isSyntheticsTest","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","startSessionManager","trackingConsentState","sessionContextHistory","buildSessionContext","detectSessionIdChange","trackActivity","trackVisibility","trackResume","reportUnexpectedSessionState","expandOrRenewSession","expandSessionWhenVisible","rawSession","getSessionCookies","initialSessionState","sessionCreatedTime","sdkInitTime","changed","change","sessionAge","newSessionState","time","cookie","sessionCookies","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","BUFFER_LIMIT","createBoundedBuffer","buffer","arg","checkContext","maybeContext","isValid","ensureProperties","propertiesConfig","newContext","required","isDefined","createContextManager","changeObservable","contextManager","defineContextMethod","getStrategy","contextName","methodName","bufferContextCalls","preStartContextManager","bufferApiCalls","startResult","CONTEXT_STORE_KEY_PREFIX","storageListeners","storeContextManager","customerDataType","storageKey","buildStorageKey","synchronizeWithStorage","dumpToStorage","contextFromStorage","getFromStorage","rawContext","startAccountContext","accountContextManager","buildAccountContextManager","account","startGlobalContext","useContextNamespace","globalContextManager","buildGlobalContextManager","startUserContext","sessionManager","userContextManager","buildUserContextManager","user","CustomerContextKey","ContextManagerMethod","readBytesFromStream","stream","reader","chunks","readBytesCount","readMore","onDone","bytes","limitExceeded","completeBuffer","offset","chunk","ResourceType","RequestType","startBufferingData","trackRuntimeErrorImpl","runtimeErrorSubscription","isAuthorized","handlerType","logger","loggerHandler","sanitizedHandlerType","STATUS_PRIORITIES","StatusType","createErrorFieldFromRawError","includeMessage","__decorate","decorators","desc","c","r","d","HandlerType","STATUSES","Logger","handleLogStrategy","level","loggerContext","messageContext","sanitizedMessageContext","sanitizedKey","createLoggerMethod","buildCommonContext","DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT","validateAndBuildLogsConfiguration","baseConfiguration","forwardConsoleLogs","validateAndBuildForwardOption","forwardReports","option","allowedValues","label","serializeLogsConfiguration","baseSerializedInitConfiguration","createPreStartStrategy","getCommonContext","doStartLogs","globalContext","accountContext","userContext","cachedInitConfiguration","cachedConfiguration","trackingConsentStateSubscription","tryStartLogs","startLogsResult","overrideInitConfigurationForBridge","statusType","makeLogsPublicApi","startLogsImpl","bufferedDataObservable","strategy","createPostStartStrategy","customLoggers","mainLogger","conf","startLogsSessionManager","rawTrackingType","startLogsSessionManagerStub","hasValidLoggerSession","startLogsAssembly","lifeCycle","statusWithCustom","logRateLimiters","rawLogsEvent","savedCommonContext","domainContext","ddtags","commonContext","defaultLogsEventAttributes","defaultDdtags","log","LogStatusForApi","startConsoleCollection","consoleSubscription","collectedData","startReportCollection","reportSubscription","startNetworkErrorCollection","xhrSubscription","handleResponse","fetchSubscription","isRejected","computeXhrResponseData","onResponseDataAvailable","computeFetchResponseText","computeFetchErrorText","responseData","format","truncateResponseText","clonedResponse","truncateResponseStream","responseText","text","startRuntimeErrorCollection","rawErrorSubscription","bufferedData","LifeCycle","startLoggerCollection","handleLog","logsMessage","savedDate","displayInConsole","rawLogEventData","loggerToConsoleApiName","startLogsBatch","batch","serverLogsEvent","startLogsBridge","startInternalContext","trackedSession","startReportError","createHooks","startRUMInternalContext","internalContext","getRUMInternalContext","rumSource","rumContext","getInternalContextFromRumGlobal","rumGlobal","startSessionContext","startTrackingConsentContext","isConsented","LOGS_STORAGE_KEY","startLogs","telemetry","stopLogsBatch","datadogLogs","Environment","LoggingService","sessionUuid","Iframe","element","src","allow","styles","combinedStyles","BaseComponent","getElement","selector","disableBodyScroll","originalOverflow","restoreBodyOverflow","ActionRequiredActionEnum","LocaleEnum","PaymentStatusEnum","UUID_PATTERN","validateCheckoutOptions","validLocales","validateUpdatableCheckoutOptions","PaymentAuth","paymentAuthData","form","MontonioCheckout","mountTo","sessionData","completedMessage","failedMessage","res","paymentAuthIframe","paymentIntentUuid","MAX_ATTEMPTS","DELAY_BETWEEN_ATTEMPTS_IN_MS"],"mappings":"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","x_google_ignoreList":[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,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114]}
|