{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/timeUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/observable.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/byteUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/browserDetection.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/serialisation/heavyCustomerDataWarning.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/valueHistory.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/sendToExtension.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/responseUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/pageExitObservable.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/functionUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/serialisation/jsonStringify.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/cookie.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/stringUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/batch.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/flushController.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/httpRequest.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/addEventListener.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/error/error.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/experimentalFeatures.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/polyfills.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/numberUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/getGlobalObject.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionConstants.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/serialisation/sanitize.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/getZoneJsOriginalValue.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/intakeSites.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/typeUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/urlPolyfill.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/tracekit/computeStackTrace.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/display.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/objectUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/error/error.types.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/monitor.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/serialisation/contextManager.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","webpack:///./node_modules/@datadog/browser-core/esm/boot/init.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/eventBridge.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/user/user.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/eventRateLimiter/createEventRateLimiter.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/readBytesFromStream.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/abstractLifeCycle.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/matchOption.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/tracing/tracer.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/configuration.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/commonContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/boot/rumPublicApi.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/domMutationObservable.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/runOnReadyState.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/resource/resourceUtils.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/htmlDomUtils.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/tracing/getDocumentTraceId.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/performanceCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/viewportObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/displayContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/limitModification.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/assembly.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/syntheticsContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/ciTestContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/lifeCycle.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/viewContexts.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/requestCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/trackEventCounts.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/waitPageActivityEnd.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/clickChain.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/getActionNameFromElement.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/getSelectorFromElement.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/listenActionEvents.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/computeFrustration.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/trackClickActions.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/action/actionCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/error/errorCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/error/trackConsoleError.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/error/trackReportError.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/trackFirstHidden.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/resource/matchRequestTiming.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/resource/resourceCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/foregroundContexts.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/trackInitialViewTimings.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/scroll.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/trackViewMetrics.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/trackViewEventCounts.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/trackViews.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/viewCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumSessionManager.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/transport/startRumBatch.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/urlContexts.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/locationChangeObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/featureFlagContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/startCustomerDataTelemetry.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/pageStateHistory.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/getSessionReplayUrl.js","webpack:///./node_modules/@datadog/browser-rum/esm/types/sessionReplayConstants.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/assembly.js","webpack:///./node_modules/@datadog/browser-rum/esm/constants.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/privacy.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializationUtils.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeStyleSheets.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeAttribute.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeAttributes.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeNode.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeDocument.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/eventsUtils.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/viewports.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/observers/moveObserver.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/observers/scrollObserver.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/observers/mouseInteractionObserver.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/observers/inputObserver.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/observers/styleSheetObserver.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/mutationBatch.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/observers/mutationObserver.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/observers/observers.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/observers/recordIds.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/observers/viewportResizeObserver.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/observers/mediaInteractionObserver.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/observers/focusObserver.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/observers/frustrationObserver.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/record.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/elementsScrollPositions.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/shadowRootsController.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/replayStats.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segment.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segmentCollection.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/buildReplayPayload.js","webpack:///./node_modules/@datadog/browser-worker/esm/entries/string.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/startDeflateWorker.js","webpack:///./node_modules/@datadog/browser-rum/esm/boot/isBrowserSupported.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/getSessionReplayLink.js","webpack:///./node_modules/@datadog/browser-rum/esm/entries/main.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/boot/startRum.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/transport/startRumEventBridge.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/longTask/longTaskCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumEventsCollection/view/startWebVitalTelemetryDebug.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/internalContext.js","webpack:///./node_modules/@datadog/browser-rum/esm/boot/recorderApi.js","webpack:///./node_modules/@datadog/browser-rum/esm/boot/startRecording.js","webpack:///./app/javascript/packs/datadog-rum.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/tags.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/tracekit/tracekit.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/mergeInto.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionStoreStrategy.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionState.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInCookie.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInLocalStorage.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionStoreOperations.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/timer.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","navigationStart","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_YEAR","relativeToClocks","relative","timeStamp","getCorrectedTimeStamp","relativeTime","correctedOrigin","dateNow","performance","now","getNavigationStart","Math","round","addDuration","getTimeStamp","currentDrift","toServerDuration","duration","Date","getTime","timeStampNow","relativeNow","clocksNow","clocksOrigin","elapsed","start","end","a","b","getRelativeTime","timestamp","looksLikeRelativeTime","time","undefined","timing","Observable","onFirstSubscribe","this","observers","subscribe","f","_this","length","onLastUnsubscribe","push","unsubscribe","filter","other","notify","data","forEach","observer","mergeObservables","observables","_i","arguments","globalObservable","subscriptions","map","observable","subscription","ONE_KIBI_BYTE","ONE_MEBI_BYTE","HAS_MULTI_BYTES_CHARACTERS","computeBytesCount","candidate","test","window","TextEncoder","encode","Blob","size","concatBuffers","buffers","reduce","total","buffer","result","Uint8Array","offset","buffers_1","set","isIE","Boolean","document","documentMode","isChromium","chrome","navigator","userAgent","CUSTOMER_DATA_BYTES_LIMIT","warnIfCustomerDataLimitReached","bytesCount","customerDataType","warn","concat","END_OF_TIMES","Infinity","CLEAR_OLD_VALUES_INTERVAL","ValueHistory","expireDelay","maxEntries","entries","clearOldValuesInterval","clearOldValues","add","startTime","entry","endTime","remove","index","indexOf","splice","close","pop","unshift","find","_a","closeActive","latestEntry","findAll","reset","stop","oldTimeThreshold","sendToExtension","type","payload","callback","__ddBrowserSdkExtensionCallback","isServerError","status","tryToClone","response","clone","e","PageExitReason","HIDDEN","UNLOADING","PAGEHIDE","FROZEN","createPageExitObservable","configuration","pagehideEnabled","stopListeners","event","reason","visibilityState","capture","stopBeforeUnloadListener","isPageExitReason","throttle","fn","wait","options","pendingExecutionWithParameters","pendingTimeoutId","needLeadingExecution","leading","needTrailingExecution","trailing","inWaitPeriod","throttled","parameters","apply","cancel","noop","_typeof","iterator","constructor","jsonStringify","replacer","space","JSON","stringify","restoreObjectPrototypeToJson","detachToJsonMethod","restoreArrayPrototypeToJson","Array","restoreValuePrototypeToJson","getPrototypeOf","restoreValueToJson","objectToJson","toJSON","getCurrentSiteCache","setCookie","date","setTime","expires","toUTCString","sameSite","crossSite","domain","secure","cookie","getCookie","deleteCookie","areCookiesAuthorized","testCookieName","testCookieValue","isCookieCorrectlySet","error","getCurrentSite","domainLevels","location","hostname","split","candidateDomain","generateUUID","placeholder","parseInt","random","toString","replace","findCommaSeparatedValue","rawString","matches","RegExp","exec","safeTruncate","suffix","lastChar","charCodeAt","correctedLength","slice","Batch","request","flushController","messageBytesLimit","pushOnlyBuffer","upsertBuffer","flushObservable","flush","message","addOrUpdate","upsert","messages","join","flushReason","sendOnExit","send","process","processedMessage","messageBytesCount","hasMessageFor","separatorBytesCount","messagesCount","notifyBeforeAddMessage","notifyAfterAddMessage","removedMessage","notifyAfterRemoveMessage","createFlushController","messagesLimit","bytesLimit","durationLimit","pageExitObservable","sessionExpireObservable","durationLimitTimeoutId","currentBytesCount","currentMessagesCount","cancelDurationLimitTimeout","MAX_ONGOING_BYTES_COUNT","MAX_ONGOING_REQUESTS","MAX_QUEUE_BYTES_COUNT","MAX_BACKOFF_TIME","INITIAL_BACKOFF_TIME","sendWithRetryStrategy","state","sendStrategy","endpointType","reportError","transportStatus","queuedPayloads","bandwidthMonitor","canHandle","onSuccess","retryQueuedPayloads","onFailure","enqueue","scheduleRetry","first","dequeue","currentBackoffTime","min","onLine","shouldRetryRequest","ongoingRequestCount","retry","count","lastFailureStatus","isFull","queueFullReported","source","AGENT","startClocks","previousQueue","newPayloadQueue","queue","shift","createHttpRequest","endpointBuilder","retryState","ongoingByteCount","sendStrategyForRetry","onResponse","canUseKeepAlive","Request","isKeepAliveSupported","fetchUrl","build","fetch","method","body","keepalive","then","monitor","xhrUrl","sendXHR","fetchKeepAliveStrategy","canUseBeacon","sendBeacon","beaconUrl","hasReportedBeaconError","reportBeaconError","sendBeaconStrategy","url","XMLHttpRequest","open","addEventListener","once","eventTarget","eventName","listener","addEventListeners","_","eventNames","_b","passive","wrappedListener","NO_ERROR_STACK_PRESENT_MESSAGE","computeRawError","stackTrace","originalError","handlingStack","nonErrorPrefix","handling","isErrorInstance","Error","computeMessage","stack","hasUsableStack","toStackTraceString","causes","parentSource","currentError","cause","flattenErrorCauses","fingerprint","tryToGetFingerprint","String","dd_fingerprint","formatErrorMessage","frame","func","args","line","column","getFileFromStackTraceString","createHandlingStack","formattedStack","ExperimentalFeature","enabledExperimentalFeatures","Set","addExperimentalFeatures","enabledFeatures","flag","isExperimentalFeatureEnabled","featureName","has","getExperimentalFeatures","includes","search","arrayFrom","arrayLike","from","array","item","predicate","findLast","list","objectValues","keys","objectEntries","startsWith","endsWith","elementMatches","element","selector","msMatchesSelector","cssEscape","str","CSS","escape","ch","asCodePoint","assign","target","toAssign","performDraw","threshold","num","decimals","toFixed","isPercentage","isNumber","getGlobalObject","globalThis","configurable","globalObject","_dd_temp_","self","instrumentMethod","instrumentationFactory","original","instrumentation","instrumentationWrapper","instrumentMethodAndCallOriginal","before","after","instrumentSetter","originalDescriptor","getOwnPropertyDescriptor","thisObject","SESSION_TIME_OUT_DELAY","SESSION_EXPIRATION_DELAY","SANITIZE_DEFAULT_MAX_CHARACTER_COUNT","JSON_PATH_ROOT_ELEMENT","KEY_DECORATION_LENGTH","sanitize","maxCharacterCount","containerQueue","visitedObjectsWithPath","WeakMap","sanitizedData","sanitizeProcessor","accumulatedCharacterCount","containerToProcess","separatorLength","isArray","targetData","path","warnOverCharacterLimit","parentPath","sourceToSanitize","tryToApplyToJSON","description","sanitizePrimitivesAndFunctions","sanitizedSource","Event","isTrusted","match","sanitizeObjects","sourceAsObject","currentPath","changeType","getZoneJsOriginalValue","browserWindow","Zone","__symbol__","INTAKE_SITE_STAGING","INTAKE_SITE_US1","INTAKE_SITE_EU1","INTAKE_SITE_AP1","INTAKE_SITE_US1_FED","getType","normalizeUrl","buildUrl","getLinkElementOrigin","href","isValidUrl","getOrigin","getPathName","pathname","base","supportedURL","isURLSupported","originalURL","getSupportedUrl","doc","anchorElement","createElement","baseElement","implementation","createHTMLDocument","head","appendChild","URL","origin","sanitizedHost","host","protocol","UNKNOWN_FUNCTION","computeStackTrace","ex","stackProperty","tryToGetString","exString","stackFrame","parts","CHROME_LINE_RE","isNative","isEval","submatch","CHROME_EVAL_RE","parseChromeLine","CHROME_ANONYMOUS_FUNCTION_RE","parseChromeAnonymousLine","WINJS_LINE_RE","parseWinLine","GECKO_LINE_RE","GECKO_EVAL_RE","parseGeckoLine","fileUrl","filePosition","ConsoleApiName","log","debug","info","display","api","globalConsole","console","shallowClone","objectHasValue","some","isEmptyObject","mapValues","newObject","ErrorSource","CONSOLE","CUSTOM","LOGGER","NETWORK","SOURCE","REPORT","onMonitorErrorCollected","__spreadArray","to","pack","ar","debugMode","startMonitorErrorCollection","newOnMonitorErrorCollected","setDebugMode","newDebugMode","monitored","__","descriptor","originalMethod","callMonitored","context","displayIfDebugEnabled","RawReportType","intervention","deprecation","cspViolation","initReportObservable","apis","blockedURI","effectiveDirective","subtype","buildStack","originalPolicy","sourceFile","lineNumber","columnNumber","buildRawReportFromCspViolation","createCspViolationReportObservable","reportTypes","ReportingObserver","handleReports","reports","report","id","types","buffered","observe","disconnect","createReportObservable","BYTES_COMPUTATION_THROTTLING_DELAY","createContextManager","computeBytesCountImpl","bytesCountCache","alreadyWarned","computeBytesCountThrottled","contextManager","getBytesCount","newContext","getContext","setContext","clearContext","setContextProperty","removeContextProperty","BoundedBuffer","drain","makePublicApi","stub","publicApi","version","onReady","defineGlobal","global","existingGlobalVariable","q","getEventBridge","eventBridgeGlobal","DatadogEventBridge","getAllowedWebViewHosts","parse","eventType","canUseEventBridge","currentHost","bridge","allowedHost","sanitizeUser","newUser","user","checkUser","isValid","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","stopCallbacks","startSessionManager","productKey","computeSessionState","sessionStore","sessionStoreStrategyType","sessionContextHistory","buildSessionContext","getSession","trackingType","renewObservable","expireObservable","expandOrRenewSession","trackActivity","expandSession","expandSessionWhenVisible","visibilityCheckInterval","trackVisibility","findActiveSession","expire","createEventRateLimiter","limit","onLimitReached","eventCount","allowNextEvent","isLimitReached","SYNTHETICS_TEST_ID_COOKIE_NAME","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","_DATADOG_SYNTHETICS_INJECTS_RUM","getSyntheticsTestId","_DATADOG_SYNTHETICS_PUBLIC_ID","getSyntheticsResultId","_DATADOG_SYNTHETICS_RESULT_ID","consoleObservablesByApi","initConsoleObservable","consoleObservables","originalConsoleApi","params","param","formatConsoleParameters","firstErrorParam","buildConsoleLog","createConsoleObservable","xhrObservable","xhrContexts","initXhrObservable","stopInstrumentingStart","openXhr","stopInstrumentingSend","sendXhr","stopInstrumentingAbort","abortXhr","createXhrObservable","startContext","isAborted","xhr","hasBeenReported","stopInstrumentingOnReadyStateChange","readyState","DONE","onEnd","unsubscribeLoadEndListener","completeContext","fetchObservable","initFetchObservable","originalFetch","input","init","responsePromise","beforeSend","afterSend","reportFetch","DOMException","code","ABORT_ERR","responseType","readBytesFromStream","stream","reader","getReader","chunks","readBytesCount","onDone","bytes","limitExceeded","collectStreamBody","completeBuffer_1","offset_1","chunk","readMore","read","done","AbstractLifeCycle","callbacks","eventCallbacks","isMatchOption","itemType","matchList","useStartsWith","clearTracingIfNeeded","traceId","spanId","traceSampled","injectHeadersIfTracingAllowed","sessionManager","inject","getCrypto","findTrackedSession","propagatorTypes","tracingHeaders","tracingOption","allowedTracingUrls","TraceIdentifier","traceSampleRate","propagatorType","toDecimalString","traceparent","toPaddedHexadecimalString","b3","crypto","msCrypto","getRandomValues","radix","high","readInt32","low","mod","floor","validateAndBuildRumConfiguration","initConfiguration","_c","_d","_e","_f","applicationId","sessionReplaySampleRate","premiumSampleRate","replaySampleRate","tracingSampleRate","excludedActivityUrls","allowedTracingOrigins","service","tracingOptions_1","option","expectedItem","tracingOptions_2","legacyMatchOption","convertLegacyMatchOptionToTracingOption","validateAndBuildTracingOptions","baseConfiguration","trackUserInteractions","trackInteractions","trackFrustrations","actionNameAttribute","oldPlansBehavior","workerUrl","trackViewsManually","trackResources","trackLongTasks","subdomain","defaultPrivacyLevel","MASK_USER_INPUT","customerDataTelemetrySampleRate","getSelectedTracingPropagators","usedTracingPropagators","globalContextManager","userContextManager","recorderApi","hasReplay","isRecording","getMutationObserverConstructor","MutationObserver","patchedInstance","originalInstance","runOnReadyState","expectedReadyState","FAKE_INITIAL_DOCUMENT","RESOURCE_TYPES","initiatorType","areInOrder","numbers","computePerformanceResourceDetails","validEntry","toValidEntry","fetchStart","redirectStart","redirectEnd","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseStart","details","download","formatTiming","responseEnd","first_byte","connect","ssl","dns","hasRedirection","redirect","computeSize","decodedBodySize","isAllowedRequestUrl","isIntakeUrl","isTextNode","node","nodeType","Node","TEXT_NODE","isElementNode","ELEMENT_NODE","isNodeShadowHost","shadowRoot","isNodeShadowRoot","DOCUMENT_FRAGMENT_NODE","getParentNode","parentNode","INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD","getDocumentTraceId","traceIdMeta","querySelector","traceTimeMeta","createDocumentTraceData","content","getDocumentTraceDataFromMeta","comment","childNodes","getTraceCommentFromNode","findTraceComment","getDocumentTraceDataFromComment","traceTime","rawTraceTime","Number","COMMENT_NODE","isCommentNode","supportPerformanceObject","supportPerformanceTimingEvent","entryType","PerformanceObserver","supportedEntryTypes","startPerformanceCollection","lifeCycle","forcedAttributes","getEntriesByType","navigationEntry","relativePerformanceTiming","computeRelativePerformanceTiming","retrieveInitialDocumentResourceTiming","handleRumPerformanceEntries","performanceEntries_1","getEntries","handlePerformanceEntryList_1","mainEntries","experimentalEntries","entryTypes","clearResourceTimings","sendFakeTiming","retrieveNavigationTiming","startTimeStamp","timingSent","removeEventListeners","evt","cancelable","processingStart","sendTimingIfPointerIsNotCancelled","sendTiming","delay","retrieveFirstInputTiming","numberKey","timingElement","rumAllowedPerformanceEntries","loadEventEnd","isIncompleteNavigation","isForbiddenResource","viewportObservable","viewport","initViewportObservable","updateDimension","getViewportDimension","createViewportObservable","visual","visualViewport","width","scale","height","innerWidth","innerHeight","getDisplayContext","viewportDimension","limitModification","modifiableFieldPaths","modifier","fieldPath","fieldType","newValue","current","field","isValidObjectContaining","newType","fields","isValidObject","modifiableFieldPathsByEvent","VIEW_MODIFIABLE_FIELD_PATHS","USER_CUSTOMIZABLE_FIELD_PATHS","startRumAssembly","viewContexts","urlContexts","actionContexts","buildCommonContext","eventRateLimiters","eventRateLimiterThreshold","syntheticsContext","testId","resultId","test_id","result_id","injected","getSyntheticsContext","ciTestContext","testExecutionId","Cypress","env","test_execution_id","getCiTestContext","rawRumEvent","domainContext","savedCommonContext","customerContext","viewContext","findView","urlContext","findUrl","session","commonContext","actionId","findActionId","rumContext","_dd","format_version","drift","plan","session_sample_rate","sessionSampleRate","session_replay_sample_rate","browser_sdk_version","application","view","referrer","action","synthetics","ci_test","serverRumEvent","has_replay","usr","rateLimitReached","shouldSend","LifeCycle","VIEW_CONTEXT_TIME_OUT_DELAY","nextRequestIndex","startRequestCollection","tracer","traceFetch","headers","append","headers_1","Headers","header","traceXhr","setRequestHeader","startTracer","rawContext","requestIndex","getNextRequestIndex","trackXhr","clonedResponse","POSITIVE_INFINITY","waitForResponseToComplete","trackFetch","trackEventCounts","isChildEvent","onChange","eventCounts","errorCount","longTaskCount","resourceCount","actionCount","frustrationCount","frustration","PAGE_ACTIVITY_VALIDATION_DELAY","waitPageActivityEnd","domMutationObservable","pageActivityEndCallback","maxDuration","pageActivityObservable","firstRequestIndex","pendingRequestsCount","notifyPageActivity","isExcludedUrl","startEvent","stopTrackingWindowOpen","isBusy","createPageActivityObservable","pageActivityEndTimeoutId","hasCompleted","validationTimeoutId","complete","hadActivity","maxDurationTimeoutId","pageActivitySubscription","lastChangeTime","doWaitPageActivityEnd","requestUrl","MAX_DURATION_BETWEEN_CLICKS","createClickChain","firstClick","onFinalize","maxDurationBetweenClicksTimeoutId","bufferedClicks","appendClick","click","stopObservable","tryFinalize","dontAcceptMoreClick","every","isStopped","tryAppend","second","sqrt","pow","clientX","clientY","DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE","getActionNameFromElement","userProgrammaticAttribute","getActionNameFromElementProgrammatically","getActionNameFromElementForStrategies","priorityStrategies","fallbackStrategies","targetElement","programmaticAttribute","elementWithAttribute","supportsElementClosestResult","HTMLElement","supportsElementClosest","closest","hasAttribute","parentElement","truncate","normalizeWhitespace","getAttribute","trim","supportsLabelPropertyResult","HTMLInputElement","supportsLabelProperty","labels","getTextualContent","label","ownerDocument","querySelectorAll","htmlFor","nodeName","labelledByAttribute","refElement","getElementById","MAX_PARENTS_TO_CONSIDER","strategies","recursionCounter","strategies_1","name_1","strategy","trimmedName","isContentEditable","text_1","innerText","removeTextFromElements","query","element_1","textToReplace","textContent","supportScopeSelectorCache","STABLE_ATTRIBUTES","GLOBALLY_UNIQUE_SELECTOR_GETTERS","getStableAttributeSelector","isGeneratedValue","UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS","tagName","classList","className","getSelectorFromElement","targetElementSelector","globallyUniqueSelector","findSelector","isSelectorUniqueGlobally","isSelectorUniqueAmongSiblings","combineSelector","getPositionSelector","getAttributeSelector","STABLE_ATTRIBUTES_1","attributeName","sibling","firstElementChild","elementIndex","nextElementSibling","selectorGetters","childSelector","selectorGetters_1","elementSelector","selectorGetter","fullSelector","supportScopeSelector","parent","child","isSelectionEmpty","selection","getSelection","isCollapsed","isValidPointerEvent","Element","isPrimary","computeFrustration","clicks","rageClick","getUserActivity","addFrustration","isDead","hasError","isRage","hasSelectionChanged","DEAD_CLICK_EXCLUDE_SELECTOR","hasPageActivity","CLICK_ACTION_MAX_DURATION","ACTION_CONTEXT_TIME_OUT_DELAY","trackClickActions","currentClickChain","history","stopClickChain","stopActionEventsListener","selectionEmptyAtPointerDown","clickContext","onPointerDown","onPointerUp","userActivity","listeners","localUserActivity_1","listenActionEvents","pointerDownEvent","clickActionBase","rect","getBoundingClientRect","position","x","left","y","top","_hadActivityOnPointerDown","pageActivityEndEvent","hadActivityOnPointerDown","processPointerDown","appendClickToClickChain","newClick","stopWaitPageActivityEnd","discard","validate","viewEndedSubscription","endClocks","stopSubscription","startClickAction","rageClick_1","finalizeClicks","activityEndTime","historyEntry","eventCountsSubscription","frustrationTypes","newActivityEndTime","frustrationType","domEvents","clickAction","counts","events","processAction","pageStateHistory","autoActionProperties","isAutoAction","loading_time","long_task","resource","in_foreground","isInActivePageStateAt","startErrorCollection","featureFlagContexts","errorObservable","consoleError","trackConsoleError","trackRuntimeError","trackReportError","handling_stack","source_type","featureFlagContext","findFeatureFlagEvaluations","feature_flags","processError","addError","rawError","doStartErrorCollection","trackFirstHiddenSingleton","matchRequestTiming","sameNameEntries","getEntriesByName","candidates","errorMargin","startResourceCollection","matchingTiming","correspondingTimingOverrides","computePerformanceEntryMetrics","tracingInfo","hasBeenTraced","span_id","trace_id","rule_psr","getRulePsr","computeRequestTracingInfo","indexingInfo","computeIndexingInfo","NO_RESOURCE_DURATION_FROZEN_STATE","requestCrossedFrozenState","pageState","computeRequestDuration","pageStateInfo","computePageStateInfo","resourceEvent","status_code","performanceEntry","requestInput","requestInit","processRequest","entries_1","processResourceEntry","RESOURCE_TYPES_1","isType","computeResourceKind","entryMetrics","computeEntryTracingInfo","resourceStart","discarded","resourceAllowed","RESOURCE_PAGE_STATES","page_states","page_was_discarded","wasDiscarded","mapToForegroundPeriods","pageStateServerEntries","foregroundPeriods","next","trackFirstHidden","TIMING_MAXIMUM_DELAY","KEEP_TRACKING_TIMINGS_AFTER_VIEW_DELAY","trackInitialViewTimings","webVitalTelemetryDebug","setLoadEvent","scheduleViewUpdate","timings","setTimings","newTimings","stopNavigationTracking","domComplete","domContentLoaded","domContentLoadedEventEnd","domInteractive","loadEvent","firstByte","trackNavigationTimings","stopFCPTracking","firstHidden","fcpEntry","trackFirstContentfulPaintTiming","firstContentfulPaint","stopLCPTracking","firstInteractionTimestamp","stopEventListener","unsubscribeLifeCycle","lcpEntry","trackLargestContentfulPaintTiming","largestContentfulPaint","lcpElement","addWebVitalTelemetryDebug","stopFIDTracking","firstInputEntry","firstInputDelay","firstInputTime","firstInputTarget","trackFirstInputTimings","scheduleStop","getScrollX","scrollX","pageLeft","offsetLeft","pageXOffset","getScrollY","scrollY","pageTop","offsetTop","pageYOffset","THROTTLE_SCROLL_DURATION","trackViewMetrics","loadingType","viewStart","scrollMetrics","stopCLSTracking","viewMetrics","loadType","isWaitingForLoadEvent","isWaitingForActivityLoadingTime","loadingTimeCandidates","invokeCallbackIfAllCandidatesAreReceived","max","trackLoadingTime","newLoadingTime","loadingTime","computeScrollValues","scrollHeight","scrollDepth","scrollTop","maxDepth","maxDepthScrollHeight","maxDepthTime","maxDepthScrollTop","stopLoadingTimeTracking","stopScrollMetricsTracking","getScrollValues","handleScrollEvent","_stop","trackScrollMetrics","newScrollMetrics","clsAttributionCollected","cumulativeLayoutShift","maxClsValue","_value","largestLayoutShift","update","_largestLayoutShiftNode","_largestLayoutShiftTime","sources","largestLayoutShiftSource","largestLayoutShiftNode","largestLayoutShiftTime","hadRecentInput","trackCumulativeLayoutShift","getScrollMetrics","scrollingElement","documentElement","KEEP_TRACKING_EVENT_COUNTS_AFTER_VIEW_DELAY","SESSION_KEEP_ALIVE_INTERVAL","trackViews","locationChangeObservable","areViewsTrackedAutomatically","initialViewOptions","locationChangeSubscription","currentView","startNewView","viewOptions","initialLocation","customTimings","documentVersion","sessionIsActive","triggerViewUpdate","cancelScheduleViewUpdate","stopViewMetricsTracking","scheduleStopInitialViewTimingsTracking","viewId","trackViewEventCounts","scheduleStopEventCountsTracking","keepAliveIntervalId","currentEnd","isActive","addTiming","sanitized","sanitizeTiming","newView","pageExitEvent","currentLocation","otherLocation","hash","correspondingId","oldLocation","newLocation","substr","getPathFromHash","renewViewOnLocationChange","startView","startViewCollection","replayStats","getReplayStats","pageStatesEnabled","PAGE_STATES","pageStates","viewEvent","document_version","replay_stats","cumulative_layout_shift","dom_complete","dom_content_loaded","dom_interactive","first_contentful_paint","first_input_delay","first_input_time","is_active","largest_contentful_paint","load_event","discardNegativeDuration","loading_type","time_spent","in_foreground_periods","scroll","max_depth","max_depth_scroll_height","max_depth_scroll_top","max_depth_time","privacy","replay_level","custom_timings","processViewUpdate","startRumSessionManager","rawTrackingType","hasValidRumSession","isTracked","isTypeTracked","sessionReplayAllowed","longTaskAllowed","rumSessionType","startRumBatch","telemetryEventObservable","batch","replicaBatch","createRumBatch","rumEndpointBuilder","primaryBatch","primaryFlushController","replica","batchMessagesLimit","batchBytesLimit","flushTimeout","withReplicaApplicationId","replicated","makeRumBatch","URL_CONTEXT_TIME_OUT_DELAY","createLocationChangeObservable","stopHistoryTracking","onHistoryChange","stopInstrumentingPushState","stopInstrumentingReplaceState","removeListener","trackHistory","onLocationChange","stopHashTracking","onHashChange","trackHash","FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY","currentPeriodMeasures","currentBatchMeasures","batchHasRumEvent","MEASURES_PERIOD_DURATION","sendCurrentPeriodMeasures","batchCount","initCurrentPeriodMeasures","updateMeasure","measure","sum","mergeMeasure","batchBytesCount","batchMessagesCount","globalContextBytes","userContextBytes","featureFlagBytes","initCurrentBatchMeasures","PAGE_STATE_CONTEXT_TIME_OUT_DELAY","startPageStateHistory","maxPageStateEntriesSelectable","currentPageState","addPageState","getPageState","stopEventListeners","persisted","computePageState","nextPageState","eventStartTime","pageStateEntries","relativeStartTime","pageStateEntry","hasFocus","getSessionReplayUrl","errorType","sessionId","rumConfiguration","site","getSiteDefaultSubdomain","RecordType","NodeType","IncrementalSource","MouseInteractionType","MediaInteractionType","assembleIncrementalSnapshot","NodePrivacyLevel","IGNORE","ALLOW","MASK","PRIVACY_ATTR_NAME","PRIVACY_ATTR_VALUE_HIDDEN","CENSORED_STRING_MARK","FORM_PRIVATE_TAG_NAMES","INPUT","OUTPUT","TEXTAREA","SELECT","OPTION","DATALIST","OPTGROUP","getNodePrivacyLevel","parentNodePrivacyLevel","reducePrivacyLevel","getNodeSelfPrivacyLevel","childPrivacyLevel","privAttr","inputElement","autocomplete","contains","relAttribute","getLowerCaseAttribute","nameAttribute","propertyAttribute","toLowerCase","shouldIgnoreElement","shouldMaskNode","privacyLevel","isFormElement","getTextContent","textNode","ignoreWhiteSpace","parentTagName","isStyle","hasSerializedNode","getSerializedNodeId","getElementInputValue","nodePrivacyLevel","URL_IN_CSS_REF","ABSOLUTE_URL","DATA_URI","switchToAbsoluteUrl","cssText","cssHref","matchingSubstring","singleQuote","urlWrappedInSingleQuotes","doubleQuote","urlWrappedInDoubleQuotes","urlNotWrappedInQuotes","quote","baseUrl","makeUrlAbsolute","TAG_NAME_REGEX","getValidTagName","processedTagName","serializeStyleSheets","cssStyleSheets","cssStyleSheet","rules","cssRules","cssRule","disabled","media","serializeAttribute","attributeValue","getCssRulesString","getCssRuleString","rule","isCSSImportRule","styleSheet","serializeNodeWithId","serializedNode","DOCUMENT_NODE","serializeChildNodes","adoptedStyleSheets","serializeDocumentNode","isShadowRoot","serializationContext","shadowRootsController","addShadowRoot","serializeDocumentFragmentNode","DOCUMENT_TYPE_NODE","documentType","publicId","systemId","isSVG","el","SVGElement","attributes","rr_width","rr_height","safeAttrs","formValue","optionElement","selected","stylesheet","styleSheets","DISABLE_REPLAY_INLINE_CSS","_cssText","sheet","scrollLeft","checked","mediaElement","rr_mediaState","paused","elementsScrollPositions","rr_scrollLeft","rr_scrollTop","serializeAttributes","serializeElementNode","serializeTextNode","CDATA_SECTION_NODE","serializeNode","_nextId","serializedNodeWithId","serializeNodeId","setSerializedNodeId","serializedNodeIds","childNode","serializedChildNode","serializeDocument","isTouchEvent","changedTouches","getEventTarget","composed","composedPath","convertMouseEventToLayoutCoordinates","normalized","layoutViewportX","layoutViewportY","visualViewportX","visualViewportY","abs","isVisualViewportFactoredIn","getVisualViewport","tryToComputeCoordinates","isFinite","eventTypeToMouseInteraction","initInputObserver","cb","stopPropertySetterInstrumentation","lastInputStateMap","HTMLTextAreaElement","HTMLSelectElement","onElementChange","instrumentationStoppers_1","stopper","inputState","isChecked","text","cbWithDedup","lastInputState","getPathToNestedCSSRule","currentRule","parentRule","index_1","parentStyleSheet","createMutationBatch","processMutationBatch","cancelScheduledFlush","pendingMutations","addMutations","mutations","opts","requestIdleCallback","cancelIdleCallback","id_1","requestAnimationFrame","cancelAnimationFrame","timeout","initMutationObserver","mutationCallback","mutationBatch","mutation","removedNodes","removedNode","traverseRemovedShadowDom","removeShadowRoot","filteredMutations","nodeAndAncestorsHaveSerializedNode","addedAndMovedNodes","Map","_loop_1","addedNodes","mutations_1","sortedAddedAndMovedNodes","nodes","sort","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","addedNodeMutations","sortedAddedAndMovedNodes_1","hasBeenSerialized","nextId","getNextSibling","parentId","removedNodeMutations","adds","removes","nextSibling","processChildListMutations","texts","textMutations","handledNodes","filteredMutations_1","oldValue","processCharacterDataMutations","attributeMutations","handledElements","handledAttributes","emittedMutations","filteredMutations_2","transformedValue","inputValue","emittedMutation","processAttributesMutations","processMutations","takeRecords","attributeOldValue","characterData","characterDataOldValue","childList","subtree","shadowDomRemovedCallback","initObservers","recordIds","getIdForEvent","initRecordIds","mutationHandler","mutationCb","mousemoveHandler","updatePosition","coordinates","timeOffset","initMoveObserver","mousemoveCb","mouseInteractionHandler","interaction","record","initMouseInteractionObserver","mouseInteractionCb","scrollHandler","scrollPositions","initScrollObserver","scrollCb","viewportResizeHandler","initViewportResizeObserver","viewportResizeCb","inputHandler","inputCb","mediaInteractionHandler","mediaInteractionCb","initMediaInteractionObserver","styleSheetObserver","checkStyleSheetAndCallback","ownerNode","instrumentationStoppers","CSSStyleSheet","instrumentGroupingCSSRuleClass","cls","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","initStyleSheetObserver","styleSheetCb","focusHandler","focusCb","has_focus","initFocusObserver","visualViewportResizeHandler","cancelThrottle","initVisualViewportResizeObserver","visualViewportResizeCb","frustrationHandler","frustrationCb","initFrustrationObserver","emit","scrollPositionsByElement","controllerByShadowRoot","stopMutationObserver","stopInputObserver","takeFullSnapshot","initialOffset","mouseInteractionRecord","positions","frustrationRecord","stopObservers","flushMutationsFromObservers","flushMutations","takeSubsequentFullSnapshot","statsPerView","getSegmentsCount","getOrCreateReplayStats","segments_count","records_count","segments_total_raw_size","isFirst_1","deleteOldestStats","Segment","worker","creationReason","initialRecord","onWrote","onFlushed","pendingWriteCount","metadata","creation_reason","has_full_snapshot","index_in_view","rawBytesCount","compressedBytesCount","compressedData","removeMessageListener","additionalBytesCount","trailer","segment","write","addRecord","postMessage","streamId","SEGMENT_DURATION_LIMIT","SEGMENT_BYTES_LIMIT","startSegmentCollection","httpRequest","getSegmentContext","nextSegmentCreationReason","unsubscribeViewCreated","flushSegment","unsubscribePageExited","expirationTimeoutId","createNewSegment","compressedSegmentBytesCount","rawSegmentBytesCount","formData","FormData","metadataAndSegmentSizes","raw_segment_size","compressed_segment_size","byteLength","serializedMetadataAndSegmentSizes","buildReplayPayload","doStartSegmentCollection","computeSegmentContext","workerBlobUrl","INITIALIZATION_TIME_OUT_DELAY","createDeflateWorker","Worker","createObjectURL","startDeflateWorker","createDeflateWorkerImpl","worker_1","onError","onTimeout","doStartDeflateWorker","baseMessage","worker_version","stream_id","isBrowserSupported","NodeList","isRecordingStarted","getErrorType","datadogRum","startRumImpl","ignoreInitIfSyntheticsWillInjectRum","isAlreadyInitialized","getInternalContextStrategy","getInitConfigurationStrategy","stopSessionStrategy","getSessionReplayLinkStrategy","bufferApiCalls","_addTimingStrategy","_startViewStrategy","_addActionStrategy","_addErrorStrategy","providedError","_addFeatureFlagEvaluationStrategy","doStartRum","startRumResults","getSessionReplayLink","addAction","addFeatureFlagEvaluation","getInternalContext","stopSession","onRumStart","sanitizedOptions","eventBridgeAvailable","clientToken","overrideInitConfigurationForBridge","silentMultipleInit","canInitRum","beforeInitCalls","addRumGlobalContext","setGlobalContextProperty","removeRumGlobalContext","removeGlobalContextProperty","getRumGlobalContext","getGlobalContext","setRumGlobalContext","setGlobalContext","clearGlobalContext","getInitConfiguration","setUser","getUser","setUserProperty","sanitizedProperty","removeUserProperty","removeUser","clearUser","startSessionReplayRecording","stopSessionReplayRecording","makeRumPublicApi","telemetry","bridge_1","startRumTelemetry","setContextProvider","FEATURE_FLAGS","getFeatureFlagBytesCount","currentContext","startFeatureFlagContexts","startRumSessionManagerStub","startRumEventBridge","batchFlushObservable","enabled","hasFeatureFlagContext","startCustomerDataTelemetry","viewContextHistory","buildViewContext","startViewContexts","previousViewUrl","urlContextHistory","viewUrl","buildUrlContext","changeTime","startUrlContexts","startActionCollection","startRumEventCollection","baseSerializedConfiguration","premium_sample_rate","replay_sample_rate","trace_sample_rate","action_name_attribute","use_allowed_tracing_origins","use_allowed_tracing_urls","selected_tracing_propagators","default_privacy_level","use_excluded_activity_urls","use_worker_url","track_frustrations","track_views_manually","track_user_interactions","serializeRumConfiguration","startLongTaskCollection","webVitalName","webVitalNode","webVitalTime","computationTime","recorderStartObservable","recordingStartTime","computationDelay","recordingDelay","hasNode","serializedDomNode","replayRecording","replaySampled","startWebVitalTelemetryDebug","internalContext","application_id","session_id","user_action","startInternalContext","startRecordingImpl","startDeflateWorkerImpl","startStrategy","stopStrategy","stopRecording","makeRecorderApi","replayRequest","sessionReplayEndpointBuilder","stopSegmentCollection","unsubscribeViewEnded","APP_VERSION","ENV","useSecureSessionCookie","ENDPOINTS","logs","rum","sessionReplay","INTAKE_TRACKS","createEndpointBuilder","configurationTags","buildUrlWithParameters","proxy","proxyUrl","normalizedProxyUrl_1","encodeURIComponent","internalAnalyticsSubdomain","domainParts","extension","buildEndpointHost","normalizedProxyUrl_2","createEndpointUrlWithParametersBuilder","tags","COLLECT_FLUSH_REASON","reverse","buildEndpointParameters","urlPrefix","TAG_SIZE_LIMIT","FORBIDDEN_CHARACTERS","buildTag","rawValue","valueSizeLimit","sanitizedValue","computeTransportConfiguration","datacenter","buildTags","endpointBuilders","logsEndpointBuilder","computeEndpointBuilders","intakeUrlPrefixes","builder","replicaConfiguration","replicaEndpointBuilders","computeReplicaConfiguration","intakeEndpoint","DefaultPrivacyLevel","validateAndBuildConfiguration","sampleRate","telemetrySampleRate","telemetryConfigurationSampleRate","enableExperimentalFeatures","catchUserErrors","maxTelemetryEventsPerPage","serializeConfiguration","telemetry_sample_rate","telemetry_configuration_sample_rate","use_before_send","use_cross_site_session_cookie","useCrossSiteSessionCookie","use_secure_session_cookie","use_proxy","silent_multiple_init","track_session_across_subdomains","trackSessionAcrossSubdomains","track_resources","track_long_task","allow_fallback_to_local_storage","allowFallbackToLocalStorage","ERROR_TYPES_RE","startUnhandledErrorCollection","stopInstrumentingOnError","messageObj","errorObj","tryToParseMessage","instrumentOnError","stopInstrumentingOnUnhandledRejection","instrumentUnhandledRejection","TelemetryType","ALLOWED_FRAME_URLS","TELEMETRY_EXCLUDED_SITES","telemetryConfiguration","maxEventsPerPage","sentEventCount","telemetryEnabled","telemetryConfigurationEnabled","startTelemetry","telemetryService","contextProvider","rawEvent","event_1","experimental_features","toTelemetryEvent","addTelemetryError","provider","isTelemetryReplicationAllowed","addTelemetryDebug","addTelemetry","kind","scrubCustomerFrames","formatError","addTelemetryConfiguration","allowedFrameUrl","errorMsg","err","mergeInto","destination","circularReferenceChecker","WeakSet","set_1","hasAlreadyBeenSeen","createCircularReferenceChecker","flags","ignoreCase","multiline","sticky","unicode","merged_1","merged","deepClone","combine","sources_1","SESSION_STORE_KEY","SESSION_ENTRY_REGEXP","SESSION_ENTRY_SEPARATOR","isSessionInExpiredState","expandSessionState","toSessionString","toSessionState","sessionString","isValidSessionString","OLD_SESSION_COOKIE_NAME","OLD_RUM_COOKIE_NAME","OLD_LOGS_COOKIE_NAME","RUM_SESSION_KEY","LOGS_SESSION_KEY","selectCookieStrategy","cookieOptions","buildCookieOptions","initCookieStrategy","cookieStore","persistSession","retrieveSession","retrieveSessionCookie","clearSession","deleteSessionCookie","cookieStoreStrategy","oldSessionId","oldRumType","oldLogsType","tryOldCookiesMigration","LOCAL_STORAGE_TEST_KEY","persistInLocalStorage","sessionState","localStorage","setItem","retrieveSessionFromLocalStorage","getItem","clearSessionFromLocalStorage","removeItem","ongoingOperations","LOCK_RETRY_DELAY","LOCK_MAX_TRIES","bufferedOperations","processSessionStoreOperations","operations","sessionStoreStrategy","numberOfRetries","lockEnabled","currentLock","currentSession","lock","retryLater","processedSession","currentNumberOfRetries","nextOperations","STORAGE_POLL_DELAY","selectSessionStoreStrategyType","testKey","retrievedId","selectLocalStorageStrategy","startSessionStore","watchSessionTimeoutId","isActiveSession","synchronizeSession","sessionCache","retrieveActiveSession","hasSessionInCache","isSessionInCacheOutdated","created","synchronizedSession","expandOrRenewSessionState","renewSessionInCache","setTimeout","clearTimeout","timeoutId","setInterval","clearInterval"],"mappings":"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","file":"js/datadog-rum-9585b0d453e832923250.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 631);\n","import { isNumber, round } from './numberUtils';\nexport var ONE_SECOND = 1000;\nexport var ONE_MINUTE = 60 * ONE_SECOND;\nexport var ONE_HOUR = 60 * ONE_MINUTE;\nexport var ONE_DAY = 24 * ONE_HOUR;\nexport var ONE_YEAR = 365 * ONE_DAY;\nexport function relativeToClocks(relative) {\n return {\n relative: relative,\n timeStamp: getCorrectedTimeStamp(relative)\n };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n var correctedOrigin = dateNow() - performance.now();\n // apply correction only for positive drift\n if (correctedOrigin > getNavigationStart()) {\n return Math.round(addDuration(correctedOrigin, relativeTime));\n }\n return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n if (!isNumber(duration)) {\n return duration;\n }\n return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n // case ourselves.\n // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n return new Date().getTime();\n}\nexport function timeStampNow() {\n return dateNow();\n}\nexport function relativeNow() {\n return performance.now();\n}\nexport function clocksNow() {\n return {\n relative: relativeNow(),\n timeStamp: timeStampNow()\n };\n}\nexport function clocksOrigin() {\n return {\n relative: 0,\n timeStamp: getNavigationStart()\n };\n}\nexport function elapsed(start, end) {\n return end - start;\n}\nexport function addDuration(a, b) {\n return a + b;\n}\n/**\n * Get the time since the navigation was started.\n *\n * Note: this does not use `performance.timeOrigin` because it doesn't seem to reflect the actual\n * time on which the navigation has started: it may be much farther in the past, at least in Firefox 71.\n * Related issue in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926\n */\nexport function getRelativeTime(timestamp) {\n return timestamp - getNavigationStart();\n}\nexport function getTimeStamp(relativeTime) {\n return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nvar navigationStart;\nfunction getNavigationStart() {\n if (navigationStart === undefined) {\n navigationStart = performance.timing.navigationStart;\n }\n return navigationStart;\n}\nexport function resetNavigationStart() {\n navigationStart = undefined;\n}","var Observable = /** @class */function () {\n function Observable(onFirstSubscribe) {\n this.onFirstSubscribe = onFirstSubscribe;\n this.observers = [];\n }\n Observable.prototype.subscribe = function (f) {\n var _this = this;\n if (!this.observers.length && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe() || undefined;\n }\n this.observers.push(f);\n return {\n unsubscribe: function unsubscribe() {\n _this.observers = _this.observers.filter(function (other) {\n return f !== other;\n });\n if (!_this.observers.length && _this.onLastUnsubscribe) {\n _this.onLastUnsubscribe();\n }\n }\n };\n };\n Observable.prototype.notify = function (data) {\n this.observers.forEach(function (observer) {\n return observer(data);\n });\n };\n return Observable;\n}();\nexport { Observable };\nexport function mergeObservables() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var globalObservable = new Observable(function () {\n var subscriptions = observables.map(function (observable) {\n return observable.subscribe(function (data) {\n return globalObservable.notify(data);\n });\n });\n return function () {\n return subscriptions.forEach(function (subscription) {\n return subscription.unsubscribe();\n });\n };\n });\n return globalObservable;\n}","export var ONE_KIBI_BYTE = 1024;\nexport var ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// eslint-disable-next-line no-control-regex\nvar HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nexport function computeBytesCount(candidate) {\n // Accurate bytes count computations can degrade performances when there is a lot of events to process\n if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n return candidate.length;\n }\n if (window.TextEncoder !== undefined) {\n return new TextEncoder().encode(candidate).length;\n }\n return new Blob([candidate]).size;\n}\nexport function concatBuffers(buffers) {\n var length = buffers.reduce(function (total, buffer) {\n return total + buffer.length;\n }, 0);\n var result = new Uint8Array(length);\n var offset = 0;\n for (var _i = 0, buffers_1 = buffers; _i < buffers_1.length; _i++) {\n var buffer = buffers_1[_i];\n result.set(buffer, offset);\n offset += buffer.length;\n }\n return result;\n}","export function isIE() {\n return Boolean(document.documentMode);\n}\nexport function isChromium() {\n return !!window.chrome || /HeadlessChrome/.test(window.navigator.userAgent);\n}","import { ONE_KIBI_BYTE } from '../utils/byteUtils';\nimport { display } from '../display';\n// RUM and logs batch bytes limit is 16KB\n// ensure that we leave room for other event attributes and maintain a decent amount of event per batch\n// (3KB (customer data) + 1KB (other attributes)) * 4 (events per batch) = 16KB\nexport var CUSTOMER_DATA_BYTES_LIMIT = 3 * ONE_KIBI_BYTE;\nexport function warnIfCustomerDataLimitReached(bytesCount, customerDataType) {\n if (bytesCount > CUSTOMER_DATA_BYTES_LIMIT) {\n display.warn(\"The \".concat(customerDataType, \" data exceeds the recommended \").concat(CUSTOMER_DATA_BYTES_LIMIT / ONE_KIBI_BYTE, \"KiB threshold. More details: https://docs.datadoghq.com/real_user_monitoring/browser/troubleshooting/#customer-data-exceeds-the-recommended-3kib-warning\"));\n return true;\n }\n return false;\n}","import { setInterval, clearInterval } from './timer';\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils';\nvar END_OF_TIMES = Infinity;\nexport var CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE;\n/**\n * Store and keep track of values spans. This whole class assumes that values are added in\n * chronological order (i.e. all entries have an increasing start time).\n */\nvar ValueHistory = /** @class */function () {\n function ValueHistory(expireDelay, maxEntries) {\n var _this = this;\n this.expireDelay = expireDelay;\n this.maxEntries = maxEntries;\n this.entries = [];\n this.clearOldValuesInterval = setInterval(function () {\n return _this.clearOldValues();\n }, CLEAR_OLD_VALUES_INTERVAL);\n }\n /**\n * Add a value to the history associated with a start time. Returns a reference to this newly\n * added entry that can be removed or closed.\n */\n ValueHistory.prototype.add = function (value, startTime) {\n var _this = this;\n var entry = {\n value: value,\n startTime: startTime,\n endTime: END_OF_TIMES,\n remove: function remove() {\n var index = _this.entries.indexOf(entry);\n if (index >= 0) {\n _this.entries.splice(index, 1);\n }\n },\n close: function close(endTime) {\n entry.endTime = endTime;\n }\n };\n if (this.maxEntries && this.entries.length >= this.maxEntries) {\n this.entries.pop();\n }\n this.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 ValueHistory.prototype.find = function (startTime) {\n if (startTime === void 0) {\n startTime = END_OF_TIMES;\n }\n for (var _i = 0, _a = this.entries; _i < _a.length; _i++) {\n var entry = _a[_i];\n if (entry.startTime <= startTime) {\n if (startTime <= entry.endTime) {\n return entry.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 ValueHistory.prototype.closeActive = function (endTime) {\n var latestEntry = this.entries[0];\n if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n latestEntry.close(endTime);\n }\n };\n /**\n * Return all 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 ValueHistory.prototype.findAll = function (startTime, duration) {\n if (startTime === void 0) {\n startTime = END_OF_TIMES;\n }\n if (duration === void 0) {\n duration = 0;\n }\n var endTime = addDuration(startTime, duration);\n return this.entries.filter(function (entry) {\n return entry.startTime <= endTime && startTime <= entry.endTime;\n }).map(function (entry) {\n return entry.value;\n });\n };\n /**\n * Remove all entries from this collection.\n */\n ValueHistory.prototype.reset = function () {\n this.entries = [];\n };\n /**\n * Stop internal garbage collection of past entries.\n */\n ValueHistory.prototype.stop = function () {\n clearInterval(this.clearOldValuesInterval);\n };\n ValueHistory.prototype.clearOldValues = function () {\n var oldTimeThreshold = relativeNow() - this.expireDelay;\n while (this.entries.length > 0 && this.entries[this.entries.length - 1].endTime < oldTimeThreshold) {\n this.entries.pop();\n }\n };\n return ValueHistory;\n}();\nexport { ValueHistory };","export function sendToExtension(type, payload) {\n var callback = window.__ddBrowserSdkExtensionCallback;\n if (callback) {\n callback({\n type: type,\n payload: payload\n });\n }\n}","export function isServerError(status) {\n return status >= 500;\n}\nexport function tryToClone(response) {\n try {\n return response.clone();\n } catch (e) {\n // clone can throw if the response has already been used by another instrumentation or is disturbed\n return;\n }\n}","import { isExperimentalFeatureEnabled, ExperimentalFeature } from '../tools/experimentalFeatures';\nimport { Observable } from '../tools/observable';\nimport { objectValues, includes } from '../tools/utils/polyfills';\nimport { noop } from '../tools/utils/functionUtils';\nimport { addEventListeners, addEventListener } from './addEventListener';\nexport var PageExitReason = {\n HIDDEN: 'visibility_hidden',\n UNLOADING: 'before_unload',\n PAGEHIDE: 'page_hide',\n FROZEN: 'page_frozen'\n};\nexport function createPageExitObservable(configuration) {\n var observable = new Observable(function () {\n var pagehideEnabled = isExperimentalFeatureEnabled(ExperimentalFeature.PAGEHIDE);\n var stopListeners = addEventListeners(configuration, window, [\"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, \"freeze\" /* DOM_EVENT.FREEZE */, \"pagehide\" /* DOM_EVENT.PAGE_HIDE */], function (event) {\n if (event.type === \"pagehide\" /* DOM_EVENT.PAGE_HIDE */ && pagehideEnabled) {\n /**\n * Only event that detect page unload events while being compatible with the back/forward cache (bfcache)\n */\n observable.notify({\n reason: PageExitReason.PAGEHIDE\n });\n } else 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({\n 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({\n reason: PageExitReason.FROZEN\n });\n }\n }, {\n capture: true\n }).stop;\n var stopBeforeUnloadListener = noop;\n if (!pagehideEnabled) {\n stopBeforeUnloadListener = addEventListener(configuration, window, \"beforeunload\" /* DOM_EVENT.BEFORE_UNLOAD */, function () {\n observable.notify({\n reason: PageExitReason.UNLOADING\n });\n }).stop;\n }\n return function () {\n stopListeners();\n stopBeforeUnloadListener();\n };\n });\n return observable;\n}\nexport function isPageExitReason(reason) {\n return includes(objectValues(PageExitReason), reason);\n}","import { setTimeout, clearTimeout } from '../timer';\n// use lodash API\nexport function throttle(fn, wait, options) {\n var needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n var needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n var inWaitPeriod = false;\n var pendingExecutionWithParameters;\n var pendingTimeoutId;\n return {\n throttled: function throttled() {\n var parameters = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n parameters[_i] = arguments[_i];\n }\n if (inWaitPeriod) {\n pendingExecutionWithParameters = parameters;\n return;\n }\n if (needLeadingExecution) {\n fn.apply(void 0, parameters);\n } else {\n pendingExecutionWithParameters = parameters;\n }\n inWaitPeriod = true;\n pendingTimeoutId = setTimeout(function () {\n if (needTrailingExecution && pendingExecutionWithParameters) {\n fn.apply(void 0, pendingExecutionWithParameters);\n }\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n }, wait);\n },\n cancel: function 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() {}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport { noop } from '../utils/functionUtils';\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n if (_typeof(value) !== 'object' || value === null) {\n return JSON.stringify(value);\n }\n // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n // subclasses.\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n var restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n var restoreValueToJson = detachToJsonMethod(value);\n try {\n return JSON.stringify(value, replacer, space);\n } catch (_a) {\n return '';\n } finally {\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n restoreValuePrototypeToJson();\n restoreValueToJson();\n }\n}\nexport function detachToJsonMethod(value) {\n var object = value;\n var objectToJson = object.toJSON;\n if (objectToJson) {\n delete object.toJSON;\n return function () {\n object.toJSON = objectToJson;\n };\n }\n return noop;\n}","import { display } from '../tools/display';\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { findCommaSeparatedValue, generateUUID } from '../tools/utils/stringUtils';\nexport function setCookie(name, value, expireDelay, options) {\n var date = new Date();\n date.setTime(date.getTime() + expireDelay);\n var expires = \"expires=\".concat(date.toUTCString());\n var sameSite = options && options.crossSite ? 'none' : 'strict';\n var domain = options && options.domain ? \";domain=\".concat(options.domain) : '';\n var secure = options && options.secure ? ';secure' : '';\n document.cookie = \"\".concat(name, \"=\").concat(value, \";\").concat(expires, \";path=/;samesite=\").concat(sameSite).concat(domain).concat(secure);\n}\nexport function getCookie(name) {\n return findCommaSeparatedValue(document.cookie, name);\n}\nexport function deleteCookie(name, options) {\n setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n if (document.cookie === undefined || document.cookie === null) {\n return false;\n }\n try {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n var testCookieName = \"dd_cookie_test_\".concat(generateUUID());\n var testCookieValue = 'test';\n setCookie(testCookieName, testCookieValue, ONE_MINUTE, options);\n var isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n deleteCookie(testCookieName, options);\n return isCookieCorrectlySet;\n } catch (error) {\n display.error(error);\n return false;\n }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nvar getCurrentSiteCache;\nexport function getCurrentSite() {\n if (getCurrentSiteCache === undefined) {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n var testCookieName = \"dd_site_test_\".concat(generateUUID());\n var testCookieValue = 'test';\n var domainLevels = window.location.hostname.split('.');\n var candidateDomain = domainLevels.pop();\n while (domainLevels.length && !getCookie(testCookieName)) {\n candidateDomain = \"\".concat(domainLevels.pop(), \".\").concat(candidateDomain);\n setCookie(testCookieName, testCookieValue, ONE_SECOND, {\n domain: candidateDomain\n });\n }\n deleteCookie(testCookieName, {\n domain: candidateDomain\n });\n getCurrentSiteCache = candidateDomain;\n }\n return getCurrentSiteCache;\n}","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n return placeholder ?\n // eslint-disable-next-line no-bitwise\n (parseInt(placeholder, 10) ^ Math.random() * 16 >> parseInt(placeholder, 10) / 4).toString(16) : \"\".concat(1e7, \"-\").concat(1e3, \"-\").concat(4e3, \"-\").concat(8e3, \"-\").concat(1e11).replace(/[018]/g, generateUUID);\n}\nexport function findCommaSeparatedValue(rawString, name) {\n var regex = new RegExp(\"(?:^|;)\\\\s*\".concat(name, \"\\\\s*=\\\\s*([^;]+)\"));\n var matches = regex.exec(rawString);\n return matches ? matches[1] : undefined;\n}\nexport function safeTruncate(candidate, length, suffix) {\n if (suffix === void 0) {\n suffix = '';\n }\n var lastChar = candidate.charCodeAt(length - 1);\n var isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n var correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n if (candidate.length <= correctedLength) {\n return candidate;\n }\n return \"\".concat(candidate.slice(0, correctedLength)).concat(suffix);\n}","import { display } from '../tools/display';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { isPageExitReason } from '../browser/pageExitObservable';\nimport { computeBytesCount } from '../tools/utils/byteUtils';\nimport { jsonStringify } from '../tools/serialisation/jsonStringify';\nvar Batch = /** @class */function () {\n function Batch(request, flushController, messageBytesLimit) {\n var _this = this;\n this.request = request;\n this.flushController = flushController;\n this.messageBytesLimit = messageBytesLimit;\n this.pushOnlyBuffer = [];\n this.upsertBuffer = {};\n this.flushController.flushObservable.subscribe(function (event) {\n return _this.flush(event);\n });\n }\n Batch.prototype.add = function (message) {\n this.addOrUpdate(message);\n };\n Batch.prototype.upsert = function (message, key) {\n this.addOrUpdate(message, key);\n };\n Batch.prototype.flush = function (event) {\n var messages = this.pushOnlyBuffer.concat(objectValues(this.upsertBuffer));\n this.pushOnlyBuffer = [];\n this.upsertBuffer = {};\n var payload = {\n data: messages.join('\\n'),\n bytesCount: event.bytesCount,\n flushReason: event.reason\n };\n if (isPageExitReason(event.reason)) {\n this.request.sendOnExit(payload);\n } else {\n this.request.send(payload);\n }\n };\n Batch.prototype.addOrUpdate = function (message, key) {\n var _a = this.process(message),\n processedMessage = _a.processedMessage,\n messageBytesCount = _a.messageBytesCount;\n if (messageBytesCount >= this.messageBytesLimit) {\n display.warn(\"Discarded a message whose size was bigger than the maximum allowed size \".concat(this.messageBytesLimit, \"KB.\"));\n return;\n }\n if (this.hasMessageFor(key)) {\n this.remove(key);\n }\n this.push(processedMessage, messageBytesCount, key);\n };\n Batch.prototype.process = function (message) {\n var processedMessage = jsonStringify(message);\n var messageBytesCount = computeBytesCount(processedMessage);\n return {\n processedMessage: processedMessage,\n messageBytesCount: messageBytesCount\n };\n };\n Batch.prototype.push = function (processedMessage, messageBytesCount, key) {\n // If there are other messages, a '\\n' will be added at serialization\n var separatorBytesCount = this.flushController.messagesCount > 0 ? 1 : 0;\n this.flushController.notifyBeforeAddMessage(messageBytesCount + separatorBytesCount);\n if (key !== undefined) {\n this.upsertBuffer[key] = processedMessage;\n } else {\n this.pushOnlyBuffer.push(processedMessage);\n }\n this.flushController.notifyAfterAddMessage();\n };\n Batch.prototype.remove = function (key) {\n var removedMessage = this.upsertBuffer[key];\n delete this.upsertBuffer[key];\n var messageBytesCount = computeBytesCount(removedMessage);\n // If there are other messages, a '\\n' will be added at serialization\n var separatorBytesCount = this.flushController.messagesCount > 1 ? 1 : 0;\n this.flushController.notifyAfterRemoveMessage(messageBytesCount + separatorBytesCount);\n };\n Batch.prototype.hasMessageFor = function (key) {\n return key !== undefined && this.upsertBuffer[key] !== undefined;\n };\n return Batch;\n}();\nexport { Batch };","import { Observable } from '../tools/observable';\nimport { clearTimeout, setTimeout } from '../tools/timer';\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController(_a) {\n var messagesLimit = _a.messagesLimit,\n bytesLimit = _a.bytesLimit,\n durationLimit = _a.durationLimit,\n pageExitObservable = _a.pageExitObservable,\n sessionExpireObservable = _a.sessionExpireObservable;\n var flushObservable = new Observable();\n pageExitObservable.subscribe(function (event) {\n return flush(event.reason);\n });\n sessionExpireObservable.subscribe(function () {\n return flush('session_expire');\n });\n var currentBytesCount = 0;\n var currentMessagesCount = 0;\n function flush(flushReason) {\n if (currentMessagesCount === 0) {\n return;\n }\n var messagesCount = currentMessagesCount;\n var bytesCount = currentBytesCount;\n currentMessagesCount = 0;\n currentBytesCount = 0;\n cancelDurationLimitTimeout();\n flushObservable.notify({\n reason: flushReason,\n messagesCount: messagesCount,\n bytesCount: bytesCount\n });\n }\n var durationLimitTimeoutId;\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(function () {\n flush('duration_limit');\n }, durationLimit);\n }\n }\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId);\n durationLimitTimeoutId = undefined;\n }\n return {\n flushObservable: flushObservable,\n get messagesCount() {\n return currentMessagesCount;\n },\n /**\n * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right before adding the message, so no flush\n * event can happen after `notifyBeforeAddMessage` and before adding the message.\n */\n notifyBeforeAddMessage: function notifyBeforeAddMessage(messageBytesCount) {\n if (currentBytesCount + messageBytesCount >= 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 += messageBytesCount;\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 notifyAfterAddMessage: function notifyAfterAddMessage() {\n if (currentMessagesCount >= messagesLimit) {\n flush('messages_limit');\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 notifyAfterRemoveMessage: function notifyAfterRemoveMessage(messageBytesCount) {\n currentBytesCount -= messageBytesCount;\n currentMessagesCount -= 1;\n if (currentMessagesCount === 0) {\n cancelDurationLimitTimeout();\n }\n }\n };\n}","import { setTimeout } from '../tools/timer';\nimport { clocksNow, ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils';\nimport { isServerError } from '../tools/utils/responseUtils';\nimport { ErrorSource } from '../domain/error/error.types';\nexport var MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport var MAX_ONGOING_REQUESTS = 32;\nexport var MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE;\nexport var MAX_BACKOFF_TIME = ONE_MINUTE;\nexport var INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, endpointType, reportError) {\n if (state.transportStatus === 0 /* TransportStatus.UP */ && state.queuedPayloads.size() === 0 && state.bandwidthMonitor.canHandle(payload)) {\n send(payload, state, sendStrategy, {\n onSuccess: function onSuccess() {\n return retryQueuedPayloads(0 /* RetryReason.AFTER_SUCCESS */, state, sendStrategy, endpointType, reportError);\n },\n onFailure: function onFailure() {\n state.queuedPayloads.enqueue(payload);\n scheduleRetry(state, sendStrategy, endpointType, reportError);\n }\n });\n } else {\n state.queuedPayloads.enqueue(payload);\n }\n}\nfunction scheduleRetry(state, sendStrategy, endpointType, reportError) {\n if (state.transportStatus !== 2 /* TransportStatus.DOWN */) {\n return;\n }\n setTimeout(function () {\n var payload = state.queuedPayloads.first();\n send(payload, state, sendStrategy, {\n onSuccess: function onSuccess() {\n state.queuedPayloads.dequeue();\n state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n retryQueuedPayloads(1 /* RetryReason.AFTER_RESUME */, state, sendStrategy, endpointType, reportError);\n },\n onFailure: function onFailure() {\n state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n scheduleRetry(state, sendStrategy, endpointType, reportError);\n }\n });\n }, state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, _a) {\n var onSuccess = _a.onSuccess,\n onFailure = _a.onFailure;\n state.bandwidthMonitor.add(payload);\n sendStrategy(payload, function (response) {\n state.bandwidthMonitor.remove(payload);\n if (!shouldRetryRequest(response)) {\n state.transportStatus = 0 /* TransportStatus.UP */;\n onSuccess();\n } else {\n // do not consider transport down if another ongoing request could succeed\n state.transportStatus = state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 /* TransportStatus.FAILURE_DETECTED */ : 2 /* TransportStatus.DOWN */;\n payload.retry = {\n count: payload.retry ? payload.retry.count + 1 : 1,\n lastFailureStatus: response.status\n };\n onFailure();\n }\n });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, endpointType, reportError) {\n if (reason === 0 /* RetryReason.AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n reportError({\n message: \"Reached max \".concat(endpointType, \" events size queued for upload: \").concat(MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE, \"MiB\"),\n source: ErrorSource.AGENT,\n startClocks: clocksNow()\n });\n state.queueFullReported = true;\n }\n var previousQueue = state.queuedPayloads;\n state.queuedPayloads = newPayloadQueue();\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, endpointType, reportError);\n }\n}\nfunction shouldRetryRequest(response) {\n return response.type !== 'opaque' && (response.status === 0 && !navigator.onLine || response.status === 408 || response.status === 429 || isServerError(response.status));\n}\nexport function newRetryState() {\n return {\n transportStatus: 0 /* TransportStatus.UP */,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false\n };\n}\nfunction newPayloadQueue() {\n var queue = [];\n return {\n bytesCount: 0,\n enqueue: function enqueue(payload) {\n if (this.isFull()) {\n return;\n }\n queue.push(payload);\n this.bytesCount += payload.bytesCount;\n },\n first: function first() {\n return queue[0];\n },\n dequeue: function dequeue() {\n var payload = queue.shift();\n if (payload) {\n this.bytesCount -= payload.bytesCount;\n }\n return payload;\n },\n size: function size() {\n return queue.length;\n },\n isFull: function isFull() {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n }\n };\n}\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle: function canHandle(payload) {\n return this.ongoingRequestCount === 0 || this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT && this.ongoingRequestCount < MAX_ONGOING_REQUESTS;\n },\n add: function add(payload) {\n this.ongoingRequestCount += 1;\n this.ongoingByteCount += payload.bytesCount;\n },\n remove: function remove(payload) {\n this.ongoingRequestCount -= 1;\n this.ongoingByteCount -= payload.bytesCount;\n }\n };\n}","import { addTelemetryError } from '../domain/telemetry';\nimport { monitor } from '../tools/monitor';\nimport { addEventListener } from '../browser/addEventListener';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(configuration, endpointBuilder, bytesLimit, reportError) {\n var retryState = newRetryState();\n var sendStrategyForRetry = function sendStrategyForRetry(payload, onResponse) {\n return fetchKeepAliveStrategy(configuration, endpointBuilder, bytesLimit, payload, onResponse);\n };\n return {\n send: function send(payload) {\n sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.endpointType, reportError);\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: function sendOnExit(payload) {\n sendBeaconStrategy(configuration, endpointBuilder, bytesLimit, payload);\n }\n };\n}\nfunction sendBeaconStrategy(configuration, endpointBuilder, bytesLimit, _a) {\n var data = _a.data,\n bytesCount = _a.bytesCount,\n flushReason = _a.flushReason;\n var canUseBeacon = !!navigator.sendBeacon && bytesCount < bytesLimit;\n if (canUseBeacon) {\n try {\n var beaconUrl = endpointBuilder.build('beacon', flushReason);\n var isQueued = navigator.sendBeacon(beaconUrl, data);\n if (isQueued) {\n return;\n }\n } catch (e) {\n reportBeaconError(e);\n }\n }\n var xhrUrl = endpointBuilder.build('xhr', flushReason);\n sendXHR(configuration, xhrUrl, data);\n}\nvar hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true;\n addTelemetryError(e);\n }\n}\nexport function fetchKeepAliveStrategy(configuration, endpointBuilder, bytesLimit, _a, onResponse) {\n var data = _a.data,\n bytesCount = _a.bytesCount,\n flushReason = _a.flushReason,\n retry = _a.retry;\n var canUseKeepAlive = isKeepAliveSupported() && bytesCount < bytesLimit;\n if (canUseKeepAlive) {\n var fetchUrl = endpointBuilder.build('fetch', flushReason, retry);\n fetch(fetchUrl, {\n method: 'POST',\n body: data,\n keepalive: true,\n mode: 'cors'\n }).then(monitor(function (response) {\n return onResponse === null || onResponse === void 0 ? void 0 : onResponse({\n status: response.status,\n type: response.type\n });\n }), monitor(function () {\n var xhrUrl = endpointBuilder.build('xhr', flushReason, retry);\n // failed to queue the request\n sendXHR(configuration, xhrUrl, data, onResponse);\n }));\n } else {\n var xhrUrl = endpointBuilder.build('xhr', flushReason, retry);\n sendXHR(configuration, xhrUrl, data, onResponse);\n }\n}\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a');\n } catch (_a) {\n return false;\n }\n}\nexport function sendXHR(configuration, url, data, onResponse) {\n var request = new XMLHttpRequest();\n request.open('POST', url, true);\n addEventListener(configuration, request, 'loadend', function () {\n onResponse === null || onResponse === void 0 ? void 0 : onResponse({\n status: request.status\n });\n }, {\n // prevent multiple onResponse callbacks\n // if the xhr instance is reused by a third party\n once: true\n });\n request.send(data);\n}","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(_, eventTarget, eventNames, listener, _a) {\n var _b = _a === void 0 ? {} : _a,\n once = _b.once,\n capture = _b.capture,\n passive = _b.passive;\n var wrappedListener = monitor(once ? function (event) {\n stop();\n listener(event);\n } : listener);\n var options = passive ? {\n capture: capture,\n passive: passive\n } : capture;\n var add = getZoneJsOriginalValue(eventTarget, 'addEventListener');\n eventNames.forEach(function (eventName) {\n return add.call(eventTarget, eventName, wrappedListener, options);\n });\n function stop() {\n var remove = getZoneJsOriginalValue(eventTarget, 'removeEventListener');\n eventNames.forEach(function (eventName) {\n return remove.call(eventTarget, eventName, wrappedListener, options);\n });\n }\n return {\n stop: stop\n };\n}","import { computeStackTrace } from '../tracekit';\nimport { callMonitored } from '../../tools/monitor';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { noop } from '../../tools/utils/functionUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nexport var NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error';\nexport function computeRawError(_a) {\n var stackTrace = _a.stackTrace,\n originalError = _a.originalError,\n handlingStack = _a.handlingStack,\n startClocks = _a.startClocks,\n nonErrorPrefix = _a.nonErrorPrefix,\n source = _a.source,\n handling = _a.handling;\n var isErrorInstance = originalError instanceof Error;\n var message = computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError);\n var stack = hasUsableStack(isErrorInstance, stackTrace) ? toStackTraceString(stackTrace) : NO_ERROR_STACK_PRESENT_MESSAGE;\n var causes = isErrorInstance ? flattenErrorCauses(originalError, source) : undefined;\n var type = stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name;\n var fingerprint = tryToGetFingerprint(originalError);\n return {\n startClocks: startClocks,\n source: source,\n handling: handling,\n handlingStack: handlingStack,\n originalError: originalError,\n type: type,\n message: message,\n stack: stack,\n causes: causes,\n fingerprint: fingerprint\n };\n}\nfunction computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError) {\n // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n // TODO rework tracekit integration to avoid scattering error building logic\n return (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.message) && (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name) ? stackTrace.message : !isErrorInstance ? \"\".concat(nonErrorPrefix, \" \").concat(jsonStringify(sanitize(originalError))) : 'Empty message';\n}\nfunction hasUsableStack(isErrorInstance, stackTrace) {\n if (stackTrace === undefined) {\n return false;\n }\n if (isErrorInstance) {\n return true;\n }\n // handle cases where tracekit return stack = [] or stack = [{url: undefined, line: undefined, column: undefined}]\n // TODO rework tracekit integration to avoid generating those unusable stack\n return stackTrace.stack.length > 0 && (stackTrace.stack.length > 1 || stackTrace.stack[0].url !== undefined);\n}\nexport function tryToGetFingerprint(originalError) {\n return originalError instanceof Error && 'dd_fingerprint' in originalError ? String(originalError.dd_fingerprint) : undefined;\n}\nexport function toStackTraceString(stack) {\n var result = formatErrorMessage(stack);\n stack.stack.forEach(function (frame) {\n var func = frame.func === '?' ? '' : frame.func;\n var args = frame.args && frame.args.length > 0 ? \"(\".concat(frame.args.join(', '), \")\") : '';\n var line = frame.line ? \":\".concat(frame.line) : '';\n var column = frame.line && frame.column ? \":\".concat(frame.column) : '';\n result += \"\\n at \".concat(func).concat(args, \" @ \").concat(frame.url).concat(line).concat(column);\n });\n return result;\n}\nexport function getFileFromStackTraceString(stack) {\n var _a;\n return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function formatErrorMessage(stack) {\n return \"\".concat(stack.name || 'Error', \": \").concat(stack.message);\n}\n/**\n Creates a stacktrace without SDK internal frames.\n \n Constraints:\n - Has to be called at the utmost position of the call stack.\n - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack() {\n /**\n * Skip the two internal frames:\n * - SDK API (console.error, ...)\n * - this function\n * in order to keep only the user calls\n */\n var internalFramesToSkip = 2;\n var error = new Error();\n var formattedStack;\n // IE needs to throw the error to fill in the stack trace\n if (!error.stack) {\n try {\n throw error;\n } catch (e) {\n noop();\n }\n }\n callMonitored(function () {\n var stackTrace = computeStackTrace(error);\n stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n formattedStack = toStackTraceString(stackTrace);\n });\n return formattedStack;\n}\nexport function flattenErrorCauses(error, parentSource) {\n var currentError = error;\n var causes = [];\n while ((currentError === null || currentError === void 0 ? void 0 : currentError.cause) instanceof Error && causes.length < 10) {\n var stackTrace = computeStackTrace(currentError.cause);\n causes.push({\n message: currentError.cause.message,\n source: parentSource,\n type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n stack: stackTrace && toStackTraceString(stackTrace)\n });\n currentError = currentError.cause;\n }\n return causes.length ? causes : undefined;\n}","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n *\n * FORMAT:\n * All feature flags should be snake_cased\n */\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected feature flag\n// eslint-disable-next-line no-restricted-syntax\nexport var ExperimentalFeature;\n(function (ExperimentalFeature) {\n ExperimentalFeature[\"PAGEHIDE\"] = \"pagehide\";\n ExperimentalFeature[\"FEATURE_FLAGS\"] = \"feature_flags\";\n ExperimentalFeature[\"RESOURCE_PAGE_STATES\"] = \"resource_page_states\";\n ExperimentalFeature[\"PAGE_STATES\"] = \"page_states\";\n ExperimentalFeature[\"COLLECT_FLUSH_REASON\"] = \"collect_flush_reason\";\n ExperimentalFeature[\"NO_RESOURCE_DURATION_FROZEN_STATE\"] = \"no_resource_duration_frozen_state\";\n ExperimentalFeature[\"SCROLLMAP\"] = \"scrollmap\";\n ExperimentalFeature[\"DISABLE_REPLAY_INLINE_CSS\"] = \"disable_replay_inline_css\";\n})(ExperimentalFeature || (ExperimentalFeature = {}));\nvar enabledExperimentalFeatures = new Set();\nexport function addExperimentalFeatures(enabledFeatures) {\n enabledFeatures.forEach(function (flag) {\n enabledExperimentalFeatures.add(flag);\n });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n return enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n enabledExperimentalFeatures.clear();\n}\nexport function getExperimentalFeatures() {\n return enabledExperimentalFeatures;\n}","export function includes(candidate, search) {\n return candidate.indexOf(search) !== -1;\n}\nexport function arrayFrom(arrayLike) {\n if (Array.from) {\n return Array.from(arrayLike);\n }\n var array = [];\n if (arrayLike instanceof Set) {\n arrayLike.forEach(function (item) {\n return array.push(item);\n });\n } else {\n for (var i = 0; i < arrayLike.length; i++) {\n array.push(arrayLike[i]);\n }\n }\n return array;\n}\nexport function find(array, predicate) {\n for (var i = 0; i < array.length; i += 1) {\n var item = array[i];\n if (predicate(item, i)) {\n return item;\n }\n }\n return undefined;\n}\nexport function findLast(array, predicate) {\n for (var i = array.length - 1; i >= 0; i -= 1) {\n var item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n return undefined;\n}\nexport function forEach(list, callback) {\n Array.prototype.forEach.call(list, callback);\n}\nexport function objectValues(object) {\n return Object.keys(object).map(function (key) {\n return object[key];\n });\n}\nexport function objectEntries(object) {\n return Object.keys(object).map(function (key) {\n return [key, object[key]];\n });\n}\nexport function startsWith(candidate, search) {\n return candidate.slice(0, search.length) === search;\n}\nexport function endsWith(candidate, search) {\n return candidate.slice(-search.length) === search;\n}\nexport function elementMatches(element, selector) {\n if (element.matches) {\n return element.matches(selector);\n }\n // IE11 support\n if (element.msMatchesSelector) {\n return element.msMatchesSelector(selector);\n }\n return false;\n}\n// https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/selector/escapeSelector.js\nexport function cssEscape(str) {\n if (window.CSS && window.CSS.escape) {\n return window.CSS.escape(str);\n }\n // eslint-disable-next-line no-control-regex\n return str.replace(/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g, function (ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === '\\0') {\n return \"\\uFFFD\";\n }\n // Control characters and (dependent upon position) numbers get escaped as code points\n return \"\".concat(ch.slice(0, -1), \"\\\\\").concat(ch.charCodeAt(ch.length - 1).toString(16), \" \");\n }\n // Other potentially-special ASCII characters get backslash-escaped\n return \"\\\\\".concat(ch);\n });\n}\nexport function assign(target) {\n var toAssign = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n toAssign[_i - 1] = arguments[_i];\n }\n toAssign.forEach(function (source) {\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n });\n return target;\n}","/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n return +num.toFixed(decimals);\n}\nexport function isPercentage(value) {\n return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n return typeof value === 'number';\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n if ((typeof globalThis === \"undefined\" ? \"undefined\" : _typeof(globalThis)) === 'object') {\n return globalThis;\n }\n Object.defineProperty(Object.prototype, '_dd_temp_', {\n get: function get() {\n return this;\n },\n configurable: true\n });\n // @ts-ignore _dd_temp is defined using defineProperty\n var globalObject = _dd_temp_;\n // @ts-ignore _dd_temp is defined using defineProperty\n delete Object.prototype._dd_temp_;\n if (_typeof(globalObject) !== 'object') {\n // on safari _dd_temp_ is available on window but not globally\n // fallback on other browser globals check\n if ((typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) === 'object') {\n globalObject = self;\n } else if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === 'object') {\n globalObject = window;\n } else {\n globalObject = {};\n }\n }\n return globalObject;\n}","import { setTimeout } from './timer';\nimport { callMonitored } from './monitor';\nimport { noop } from './utils/functionUtils';\nexport function instrumentMethod(object, method, instrumentationFactory) {\n var original = object[method];\n var instrumentation = instrumentationFactory(original);\n var instrumentationWrapper = function instrumentationWrapper() {\n if (typeof instrumentation !== 'function') {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return instrumentation.apply(this, arguments);\n };\n object[method] = instrumentationWrapper;\n return {\n stop: function stop() {\n if (object[method] === instrumentationWrapper) {\n object[method] = original;\n } else {\n instrumentation = original;\n }\n }\n };\n}\nexport function instrumentMethodAndCallOriginal(object, method, _a) {\n var before = _a.before,\n after = _a.after;\n return instrumentMethod(object, method, function (original) {\n return function () {\n var args = arguments;\n var result;\n if (before) {\n callMonitored(before, this, args);\n }\n if (typeof original === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n result = original.apply(this, args);\n }\n if (after) {\n callMonitored(after, this, args);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result;\n };\n });\n}\nexport function instrumentSetter(object, property, after) {\n var originalDescriptor = Object.getOwnPropertyDescriptor(object, property);\n if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n return {\n stop: noop\n };\n }\n var instrumentation = function instrumentation(thisObject, value) {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(function () {\n after(thisObject, value);\n }, 0);\n };\n var instrumentationWrapper = function instrumentationWrapper(value) {\n originalDescriptor.set.call(this, value);\n instrumentation(this, value);\n };\n Object.defineProperty(object, property, {\n set: instrumentationWrapper\n });\n return {\n stop: function stop() {\n var _a;\n if (((_a = Object.getOwnPropertyDescriptor(object, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n Object.defineProperty(object, property, originalDescriptor);\n } else {\n instrumentation = noop;\n }\n }\n };\n}","import { ONE_HOUR, ONE_MINUTE } from '../../tools/utils/timeUtils';\nexport var SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport var SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport { display } from '../display';\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils';\nimport { detachToJsonMethod } from './jsonStringify';\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nvar SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE;\n// Symbol for the root element of the JSONPath used for visited objects\nvar JSON_PATH_ROOT_ELEMENT = '$';\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nvar KEY_DECORATION_LENGTH = 3;\nexport function sanitize(source, maxCharacterCount) {\n var _a;\n if (maxCharacterCount === void 0) {\n maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT;\n }\n // Unbind any toJSON function we may have on [] or {} prototypes\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n var containerQueue = [];\n var visitedObjectsWithPath = new WeakMap();\n var sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);\n var accumulatedCharacterCount = ((_a = JSON.stringify(sanitizedData)) === null || _a === void 0 ? void 0 : _a.length) || 0;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source);\n return undefined;\n }\n while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n var containerToProcess = containerQueue.shift();\n var separatorLength = 0; // 0 for the first element, 1 for subsequent elements\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (var key = 0; key < containerToProcess.source.length; key++) {\n var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length;\n } 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 } else {\n for (var key in containerToProcess.source) {\n if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;\n separatorLength = 1;\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n }\n }\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n return sanitizedData;\n}\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {\n // Start by handling toJSON, as we want to sanitize its output\n var sourceToSanitize = tryToApplyToJSON(source);\n if (!sourceToSanitize || _typeof(sourceToSanitize) !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize);\n }\n var sanitizedSource = sanitizeObjects(sourceToSanitize);\n if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n return sanitizedSource;\n }\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n var sourceAsObject = source;\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return \"[Reference seen at \".concat(visitedObjectsWithPath.get(sourceAsObject), \"]\");\n }\n // Add processed source to queue\n var currentPath = key !== undefined ? \"\".concat(parentPath, \".\").concat(key) : parentPath;\n var target = Array.isArray(sourceToSanitize) ? [] : {};\n visitedObjectsWithPath.set(sourceAsObject, currentPath);\n queue.push({\n source: sourceToSanitize,\n target: target,\n path: currentPath\n });\n return target;\n}\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return \"[BigInt] \".concat(value.toString());\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return \"[Function] \".concat(value.name || 'unknown');\n }\n // JSON.stringify() does not serialize symbols.\n if (_typeof(value) === 'symbol') {\n return \"[Symbol] \".concat(value.description || value.toString());\n }\n return value;\n}\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value) {\n try {\n // Handle events - Keep a simple implementation to avoid breaking changes\n if (value instanceof Event) {\n return {\n isTrusted: value.isTrusted\n };\n }\n // Handle all remaining object types in a generic way\n var result = Object.prototype.toString.call(value);\n var match = result.match(/\\[object (.*)\\]/);\n if (match && match[1]) {\n return \"[\".concat(match[1], \"]\");\n }\n } catch (_a) {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]';\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n var object = value;\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON();\n } catch (_a) {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n return value;\n}\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n display.warn(\"The data provided has been \".concat(changeType, \" as it is over the limit of \").concat(maxCharacterCount, \" characters:\"), source);\n}","import { getGlobalObject } from './getGlobalObject';\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue(target, name) {\n var browserWindow = getGlobalObject();\n var original;\n if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n original = target[browserWindow.Zone.__symbol__(name)];\n }\n if (!original) {\n original = target[name];\n }\n return original;\n}","export var INTAKE_SITE_STAGING = 'datad0g.com';\nexport var INTAKE_SITE_US1 = 'datadoghq.com';\nexport var INTAKE_SITE_EU1 = 'datadoghq.eu';\nexport var INTAKE_SITE_AP1 = 'ap1.datadoghq.com';\nexport var INTAKE_SITE_US1_FED = 'ddog-gov.com';","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return 'array';\n }\n return _typeof(value);\n}","import { jsonStringify } from '../serialisation/jsonStringify';\nexport function normalizeUrl(url) {\n return buildUrl(url, getLocationOrigin()).href;\n}\nexport function isValidUrl(url) {\n try {\n return !!buildUrl(url);\n } catch (_a) {\n return false;\n }\n}\nexport function getOrigin(url) {\n return getLinkElementOrigin(buildUrl(url));\n}\nexport function getPathName(url) {\n var pathname = buildUrl(url).pathname;\n return pathname[0] === '/' ? pathname : \"/\".concat(pathname);\n}\nexport function getSearch(url) {\n return buildUrl(url).search;\n}\nexport function getHash(url) {\n return buildUrl(url).hash;\n}\nexport function buildUrl(url, base) {\n var supportedURL = getSupportedUrl();\n if (supportedURL) {\n try {\n return base !== undefined ? new supportedURL(url, base) : new supportedURL(url);\n } catch (error) {\n throw new Error(\"Failed to construct URL: \".concat(String(error), \" \").concat(jsonStringify({\n url: url,\n base: base\n })));\n }\n }\n if (base === undefined && !/:/.test(url)) {\n throw new Error(\"Invalid URL: '\".concat(url, \"'\"));\n }\n var doc = document;\n var anchorElement = doc.createElement('a');\n if (base !== undefined) {\n doc = document.implementation.createHTMLDocument('');\n var baseElement = doc.createElement('base');\n baseElement.href = base;\n doc.head.appendChild(baseElement);\n doc.body.appendChild(anchorElement);\n }\n anchorElement.href = url;\n return anchorElement;\n}\nvar originalURL = URL;\nvar isURLSupported;\nfunction getSupportedUrl() {\n if (isURLSupported === undefined) {\n try {\n var url = new originalURL('http://test/path');\n isURLSupported = url.href === 'http://test/path';\n } catch (_a) {\n isURLSupported = false;\n }\n }\n return isURLSupported ? originalURL : undefined;\n}\nexport function getLocationOrigin() {\n return getLinkElementOrigin(window.location);\n}\n/**\n * Fallback\n * On IE HTMLAnchorElement origin is not supported: https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/origin\n * On Firefox window.location.origin is \"null\" for file: URIs: https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n */\nexport function getLinkElementOrigin(element) {\n if (element.origin && element.origin !== 'null') {\n return element.origin;\n }\n var sanitizedHost = element.host.replace(/(:80|:443)$/, '');\n return \"\".concat(element.protocol, \"//\").concat(sanitizedHost);\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport { startsWith } from '../../tools/utils/polyfills';\nvar UNKNOWN_FUNCTION = '?';\n/**\n * Computes a stack trace for an exception.\n */\nexport function computeStackTrace(ex) {\n var stack = [];\n var stackProperty = tryToGetString(ex, 'stack');\n var exString = String(ex);\n if (stackProperty && startsWith(stackProperty, exString)) {\n stackProperty = stackProperty.slice(exString.length);\n }\n if (stackProperty) {\n stackProperty.split('\\n').forEach(function (line) {\n var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION;\n }\n stack.push(stackFrame);\n }\n });\n }\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack: stack\n };\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|snippet||\\\\w+\\\\.|\\\\/).*?)';\nvar filePosition = '(?::(\\\\d+))';\nvar CHROME_LINE_RE = new RegExp(\"^\\\\s*at (.*?) ?\\\\(\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"?\\\\)?\\\\s*$\"), 'i');\nvar CHROME_EVAL_RE = new RegExp(\"\\\\((\\\\S*)\".concat(filePosition).concat(filePosition, \"\\\\)\"));\nfunction parseChromeLine(line) {\n var parts = CHROME_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n var submatch = CHROME_EVAL_RE.exec(parts[2]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined\n };\n}\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(\"^\\\\s*at ?\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"??\\\\s*$\"), 'i');\nfunction parseChromeAnonymousLine(line) {\n var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1]\n };\n}\nvar WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n var parts = WINJS_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2]\n };\n}\nvar GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n var parts = GECKO_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n var submatch = GECKO_EVAL_RE.exec(parts[3]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = undefined; // no column when eval\n }\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3]\n };\n}\nfunction tryToGetString(candidate, property) {\n if (_typeof(candidate) !== 'object' || !candidate || !(property in candidate)) {\n return undefined;\n }\n var value = candidate[property];\n return typeof value === 'string' ? value : undefined;\n}","/* eslint-disable local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport var ConsoleApiName = {\n log: 'log',\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error'\n};\nexport var display = function display(api) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!Object.prototype.hasOwnProperty.call(ConsoleApiName, api)) {\n api = ConsoleApiName.log;\n }\n display[api].apply(display, args);\n};\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport var globalConsole = console;\ndisplay.debug = globalConsole.debug.bind(globalConsole);\ndisplay.log = globalConsole.log.bind(globalConsole);\ndisplay.info = globalConsole.info.bind(globalConsole);\ndisplay.warn = globalConsole.warn.bind(globalConsole);\ndisplay.error = globalConsole.error.bind(globalConsole);","import { assign } from './polyfills';\nexport function shallowClone(object) {\n return assign({}, object);\n}\nexport function objectHasValue(object, value) {\n return Object.keys(object).some(function (key) {\n return object[key] === value;\n });\n}\nexport function isEmptyObject(object) {\n return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n var newObject = {};\n for (var _i = 0, _a = Object.keys(object); _i < _a.length; _i++) {\n var key = _a[_i];\n newObject[key] = fn(object[key]);\n }\n return newObject;\n}","export var ErrorSource = {\n AGENT: 'agent',\n CONSOLE: 'console',\n CUSTOM: 'custom',\n LOGGER: 'logger',\n NETWORK: 'network',\n SOURCE: 'source',\n REPORT: 'report'\n};","var __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { ConsoleApiName, display } from './display';\nvar onMonitorErrorCollected;\nvar debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n onMonitorErrorCollected = undefined;\n debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n var originalMethod = descriptor.value;\n descriptor.value = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n return decorated.apply(this, args);\n };\n}\nexport function monitor(fn) {\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return callMonitored(fn, this, arguments);\n }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return fn.apply(context, args);\n } catch (e) {\n displayIfDebugEnabled(ConsoleApiName.error, e);\n if (onMonitorErrorCollected) {\n try {\n onMonitorErrorCollected(e);\n } catch (e) {\n displayIfDebugEnabled(ConsoleApiName.error, e);\n }\n }\n }\n}\nexport function displayIfDebugEnabled(api) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (debugMode) {\n display.apply(void 0, __spreadArray([api, '[MONITOR]'], args, false));\n }\n}","import { toStackTraceString } from '../error/error';\nimport { monitor } from '../../tools/monitor';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { addEventListener } from '../../browser/addEventListener';\nimport { includes } from '../../tools/utils/polyfills';\nimport { safeTruncate } from '../../tools/utils/stringUtils';\nexport var RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation'\n};\nexport function initReportObservable(configuration, apis) {\n var observables = [];\n if (includes(apis, RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration));\n }\n var reportTypes = apis.filter(function (api) {\n return api !== RawReportType.cspViolation;\n });\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes));\n }\n return mergeObservables.apply(void 0, observables);\n}\nfunction createReportObservable(reportTypes) {\n var observable = new Observable(function () {\n if (!window.ReportingObserver) {\n return;\n }\n var handleReports = monitor(function (reports, _) {\n return reports.forEach(function (report) {\n observable.notify(buildRawReportFromReport(report));\n });\n });\n var observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true\n });\n observer.observe();\n return function () {\n observer.disconnect();\n };\n });\n return observable;\n}\nfunction createCspViolationReportObservable(configuration) {\n var observable = new Observable(function () {\n var stop = addEventListener(configuration, document, \"securitypolicyviolation\" /* DOM_EVENT.SECURITY_POLICY_VIOLATION */, function (event) {\n observable.notify(buildRawReportFromCspViolation(event));\n }).stop;\n return stop;\n });\n return observable;\n}\nfunction buildRawReportFromReport(_a) {\n var type = _a.type,\n body = _a.body;\n return {\n type: type,\n subtype: body.id,\n message: \"\".concat(type, \": \").concat(body.message),\n stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber)\n };\n}\nfunction buildRawReportFromCspViolation(event) {\n var type = RawReportType.cspViolation;\n var message = \"'\".concat(event.blockedURI, \"' blocked by '\").concat(event.effectiveDirective, \"' directive\");\n return {\n type: RawReportType.cspViolation,\n subtype: event.effectiveDirective,\n message: \"\".concat(type, \": \").concat(message),\n stack: buildStack(event.effectiveDirective, event.originalPolicy ? \"\".concat(message, \" of the policy \\\"\").concat(safeTruncate(event.originalPolicy, 100, '...'), \"\\\"\") : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber)\n };\n}\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n return sourceFile ? toStackTraceString({\n name: name,\n message: message,\n stack: [{\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 }) : undefined;\n}","import { computeBytesCount } from '../utils/byteUtils';\nimport { throttle } from '../utils/functionUtils';\nimport { deepClone } from '../mergeInto';\nimport { getType } from '../utils/typeUtils';\nimport { jsonStringify } from './jsonStringify';\nimport { sanitize } from './sanitize';\nimport { warnIfCustomerDataLimitReached } from './heavyCustomerDataWarning';\nexport var BYTES_COMPUTATION_THROTTLING_DELAY = 200;\nexport function createContextManager(customerDataType, computeBytesCountImpl) {\n if (computeBytesCountImpl === void 0) {\n computeBytesCountImpl = computeBytesCount;\n }\n var context = {};\n var bytesCountCache;\n var alreadyWarned = false;\n // Throttle the bytes computation to minimize the impact on performance.\n // Especially useful if the user call context APIs synchronously multiple times in a row\n var computeBytesCountThrottled = throttle(function (context) {\n bytesCountCache = computeBytesCountImpl(jsonStringify(context));\n if (!alreadyWarned) {\n alreadyWarned = warnIfCustomerDataLimitReached(bytesCountCache, customerDataType);\n }\n }, BYTES_COMPUTATION_THROTTLING_DELAY).throttled;\n var contextManager = {\n getBytesCount: function getBytesCount() {\n return bytesCountCache;\n },\n /** @deprecated use getContext instead */\n get: function get() {\n return context;\n },\n /** @deprecated use setContextProperty instead */\n add: function add(key, value) {\n context[key] = value;\n computeBytesCountThrottled(context);\n },\n /** @deprecated renamed to removeContextProperty */\n remove: function remove(key) {\n delete context[key];\n computeBytesCountThrottled(context);\n },\n /** @deprecated use setContext instead */\n set: function set(newContext) {\n context = newContext;\n computeBytesCountThrottled(context);\n },\n getContext: function getContext() {\n return deepClone(context);\n },\n setContext: function setContext(newContext) {\n if (getType(newContext) === 'object') {\n context = sanitize(newContext);\n computeBytesCountThrottled(context);\n } else {\n contextManager.clearContext();\n }\n },\n setContextProperty: function setContextProperty(key, property) {\n context[key] = sanitize(property);\n computeBytesCountThrottled(context);\n },\n removeContextProperty: function removeContextProperty(key) {\n delete context[key];\n computeBytesCountThrottled(context);\n },\n clearContext: function clearContext() {\n context = {};\n bytesCountCache = 0;\n }\n };\n return contextManager;\n}","var BUFFER_LIMIT = 500;\nvar BoundedBuffer = /** @class */function () {\n function BoundedBuffer() {\n this.buffer = [];\n }\n BoundedBuffer.prototype.add = function (callback) {\n var length = this.buffer.push(callback);\n if (length > BUFFER_LIMIT) {\n this.buffer.splice(0, 1);\n }\n };\n BoundedBuffer.prototype.drain = function () {\n this.buffer.forEach(function (callback) {\n return callback();\n });\n this.buffer.length = 0;\n };\n return BoundedBuffer;\n}();\nexport { BoundedBuffer };","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { assign } from '../tools/utils/polyfills';\nexport function makePublicApi(stub) {\n var publicApi = assign({\n version: \"4.47.0\",\n // This API method is intentionally not monitored, since the only thing executed is the\n // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and\n // we don't want to interfere with the user uncaught exceptions.\n onReady: function onReady(callback) {\n callback();\n }\n }, stub);\n // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n // as much as possible but of course it's not a real protection.\n Object.defineProperty(publicApi, '_setDebug', {\n get: function get() {\n return setDebugMode;\n },\n enumerable: false\n });\n return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n var existingGlobalVariable = global[name];\n global[name] = api;\n if (existingGlobalVariable && existingGlobalVariable.q) {\n existingGlobalVariable.q.forEach(function (fn) {\n return catchUserErrors(fn, 'onReady callback threw an error:')();\n });\n }\n}","import { endsWith } from '../tools/utils/polyfills';\nimport { getGlobalObject } from '../tools/getGlobalObject';\nexport function getEventBridge() {\n var eventBridgeGlobal = getEventBridgeGlobal();\n if (!eventBridgeGlobal) {\n return;\n }\n return {\n getAllowedWebViewHosts: function getAllowedWebViewHosts() {\n return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n },\n send: function send(eventType, event) {\n eventBridgeGlobal.send(JSON.stringify({\n eventType: eventType,\n event: event\n }));\n }\n };\n}\nexport function canUseEventBridge(currentHost) {\n var _a;\n if (currentHost === void 0) {\n currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname;\n }\n var bridge = getEventBridge();\n return !!bridge && bridge.getAllowedWebViewHosts().some(function (allowedHost) {\n return currentHost === allowedHost || endsWith(currentHost, \".\".concat(allowedHost));\n });\n}\nfunction getEventBridgeGlobal() {\n return getGlobalObject().DatadogEventBridge;\n}","import { display } from '../../tools/display';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { assign } from '../../tools/utils/polyfills';\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\nexport function sanitizeUser(newUser) {\n // We shallow clone only to prevent mutation of user data.\n var user = assign({}, newUser);\n var keys = ['id', 'name', 'email'];\n keys.forEach(function (key) {\n if (key in user) {\n user[key] = String(user[key]);\n }\n });\n return user;\n}\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser) {\n var isValid = getType(newUser) === 'object';\n if (!isValid) {\n display.error('Unsupported user:', newUser);\n }\n return isValid;\n}","import { ValueHistory } from '../../tools/valueHistory';\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { addEventListener, addEventListeners } from '../../browser/addEventListener';\nimport { clearInterval, setInterval } from '../../tools/timer';\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { startSessionStore } from './sessionStore';\nexport var VISIBILITY_CHECK_DELAY = ONE_MINUTE;\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nvar stopCallbacks = [];\nexport function startSessionManager(configuration, productKey, computeSessionState) {\n // TODO - Improve configuration type and remove assertion\n var sessionStore = startSessionStore(configuration.sessionStoreStrategyType, productKey, computeSessionState);\n stopCallbacks.push(function () {\n return sessionStore.stop();\n });\n var sessionContextHistory = new ValueHistory(SESSION_CONTEXT_TIMEOUT_DELAY);\n stopCallbacks.push(function () {\n return sessionContextHistory.stop();\n });\n sessionStore.renewObservable.subscribe(function () {\n sessionContextHistory.add(buildSessionContext(), relativeNow());\n });\n sessionStore.expireObservable.subscribe(function () {\n sessionContextHistory.closeActive(relativeNow());\n });\n sessionStore.expandOrRenewSession();\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);\n trackActivity(configuration, function () {\n return sessionStore.expandOrRenewSession();\n });\n trackVisibility(configuration, function () {\n return sessionStore.expandSession();\n });\n function buildSessionContext() {\n return {\n id: sessionStore.getSession().id,\n trackingType: sessionStore.getSession()[productKey]\n };\n }\n return {\n findActiveSession: function findActiveSession(startTime) {\n return sessionContextHistory.find(startTime);\n },\n renewObservable: sessionStore.renewObservable,\n expireObservable: sessionStore.expireObservable,\n expire: sessionStore.expire\n };\n}\nexport function stopSessionManager() {\n stopCallbacks.forEach(function (e) {\n return e();\n });\n stopCallbacks = [];\n}\nfunction trackActivity(configuration, expandOrRenewSession) {\n var stop = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"scroll\" /* DOM_EVENT.SCROLL */], expandOrRenewSession, {\n capture: true,\n passive: true\n }).stop;\n stopCallbacks.push(stop);\n}\nfunction trackVisibility(configuration, expandSession) {\n var expandSessionWhenVisible = function expandSessionWhenVisible() {\n if (document.visibilityState === 'visible') {\n expandSession();\n }\n };\n var stop = addEventListener(configuration, document, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, expandSessionWhenVisible).stop;\n stopCallbacks.push(stop);\n var visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);\n stopCallbacks.push(function () {\n clearInterval(visibilityCheckInterval);\n });\n}","import { setTimeout } from '../../tools/timer';\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { ErrorSource } from '../error/error.types';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n var eventCount = 0;\n var allowNextEvent = false;\n return {\n isLimitReached: function isLimitReached() {\n if (eventCount === 0) {\n setTimeout(function () {\n eventCount = 0;\n }, ONE_MINUTE);\n }\n eventCount += 1;\n if (eventCount <= limit || allowNextEvent) {\n allowNextEvent = false;\n return false;\n }\n if (eventCount === limit + 1) {\n allowNextEvent = true;\n try {\n onLimitReached({\n message: \"Reached max number of \".concat(eventType, \"s by minute: \").concat(limit),\n source: ErrorSource.AGENT,\n startClocks: clocksNow()\n });\n } finally {\n allowNextEvent = false;\n }\n }\n return true;\n }\n };\n}","import { getCookie } from '../../browser/cookie';\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function willSyntheticsInjectRum() {\n return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM || getCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n var value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n var value = window._DATADOG_SYNTHETICS_RESULT_ID || getCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}","import { computeStackTrace } from '../tracekit';\nimport { createHandlingStack, formatErrorMessage, toStackTraceString, tryToGetFingerprint } from '../error/error';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { ConsoleApiName, globalConsole } from '../../tools/display';\nimport { callMonitored } from '../../tools/monitor';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { find } from '../../tools/utils/polyfills';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nvar consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n var consoleObservables = apis.map(function (api) {\n if (!consoleObservablesByApi[api]) {\n consoleObservablesByApi[api] = createConsoleObservable(api);\n }\n return consoleObservablesByApi[api];\n });\n return mergeObservables.apply(void 0, consoleObservables);\n}\nexport function resetConsoleObservable() {\n consoleObservablesByApi = {};\n}\nfunction createConsoleObservable(api) {\n var observable = new Observable(function () {\n var originalConsoleApi = globalConsole[api];\n globalConsole[api] = function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n originalConsoleApi.apply(console, params);\n var handlingStack = createHandlingStack();\n callMonitored(function () {\n observable.notify(buildConsoleLog(params, api, handlingStack));\n });\n };\n return function () {\n globalConsole[api] = originalConsoleApi;\n };\n });\n return observable;\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n // Todo: remove console error prefix in the next major version\n var message = params.map(function (param) {\n return formatConsoleParameters(param);\n }).join(' ');\n var stack;\n var fingerprint;\n if (api === ConsoleApiName.error) {\n var firstErrorParam = find(params, function (param) {\n return param instanceof Error;\n });\n stack = firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined;\n fingerprint = tryToGetFingerprint(firstErrorParam);\n message = \"console error: \".concat(message);\n }\n return {\n api: api,\n message: message,\n stack: stack,\n handlingStack: handlingStack,\n fingerprint: fingerprint\n };\n}\nfunction formatConsoleParameters(param) {\n if (typeof param === 'string') {\n return sanitize(param);\n }\n if (param instanceof Error) {\n return formatErrorMessage(computeStackTrace(param));\n }\n return jsonStringify(sanitize(param), undefined, 2);\n}","import { instrumentMethodAndCallOriginal } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, relativeNow, clocksNow, timeStampNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { shallowClone } from '../tools/utils/objectUtils';\nimport { addEventListener } from './addEventListener';\nvar xhrObservable;\nvar xhrContexts = new WeakMap();\nexport function initXhrObservable(configuration) {\n if (!xhrObservable) {\n xhrObservable = createXhrObservable(configuration);\n }\n return xhrObservable;\n}\nfunction createXhrObservable(configuration) {\n var observable = new Observable(function () {\n var stopInstrumentingStart = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'open', {\n before: openXhr\n }).stop;\n var stopInstrumentingSend = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'send', {\n before: function before() {\n sendXhr.call(this, configuration, observable);\n }\n }).stop;\n var stopInstrumentingAbort = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'abort', {\n before: abortXhr\n }).stop;\n return function () {\n stopInstrumentingStart();\n stopInstrumentingSend();\n stopInstrumentingAbort();\n };\n });\n return observable;\n}\nfunction openXhr(method, url) {\n xhrContexts.set(this, {\n state: 'open',\n method: method,\n url: normalizeUrl(String(url))\n });\n}\nfunction sendXhr(configuration, observable) {\n var _this = this;\n var context = xhrContexts.get(this);\n if (!context) {\n return;\n }\n var startContext = context;\n startContext.state = 'start';\n startContext.startTime = relativeNow();\n startContext.startClocks = clocksNow();\n startContext.isAborted = false;\n startContext.xhr = this;\n var hasBeenReported = false;\n var stopInstrumentingOnReadyStateChange = instrumentMethodAndCallOriginal(this, 'onreadystatechange', {\n before: function before() {\n if (this.readyState === XMLHttpRequest.DONE) {\n // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n // application during a future event. For example, Angular is calling .abort() on\n // completed requests during a onreadystatechange event, so the status becomes '0'\n // before the request is collected.\n onEnd();\n }\n }\n }).stop;\n var onEnd = function onEnd() {\n unsubscribeLoadEndListener();\n stopInstrumentingOnReadyStateChange();\n if (hasBeenReported) {\n return;\n }\n hasBeenReported = true;\n var completeContext = context;\n completeContext.state = 'complete';\n completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n completeContext.status = _this.status;\n observable.notify(shallowClone(completeContext));\n };\n var unsubscribeLoadEndListener = addEventListener(configuration, this, 'loadend', onEnd).stop;\n observable.notify(startContext);\n}\nfunction abortXhr() {\n var context = xhrContexts.get(this);\n if (context) {\n context.isAborted = true;\n }\n}","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { callMonitored, monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { clocksNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nvar fetchObservable;\nexport function initFetchObservable() {\n if (!fetchObservable) {\n fetchObservable = createFetchObservable();\n }\n return fetchObservable;\n}\nfunction createFetchObservable() {\n var observable = new Observable(function () {\n if (!window.fetch) {\n return;\n }\n var stop = instrumentMethod(window, 'fetch', function (originalFetch) {\n return function (input, init) {\n var responsePromise;\n var context = callMonitored(beforeSend, null, [observable, input, init]);\n if (context) {\n responsePromise = originalFetch.call(this, context.input, context.init);\n callMonitored(afterSend, null, [observable, responsePromise, context]);\n } else {\n responsePromise = originalFetch.call(this, input, init);\n }\n return responsePromise;\n };\n }).stop;\n return stop;\n });\n return observable;\n}\nfunction beforeSend(observable, input, init) {\n var method = init && init.method || input instanceof Request && input.method || 'GET';\n var url = input instanceof Request ? input.url : normalizeUrl(String(input));\n var startClocks = clocksNow();\n var context = {\n state: 'start',\n init: init,\n input: input,\n method: method,\n startClocks: startClocks,\n url: url\n };\n observable.notify(context);\n return context;\n}\nfunction afterSend(observable, responsePromise, startContext) {\n var reportFetch = function reportFetch(response) {\n var context = startContext;\n context.state = 'resolve';\n if ('stack' in response || response instanceof Error) {\n context.status = 0;\n context.isAborted = response instanceof DOMException && response.code === DOMException.ABORT_ERR;\n context.error = response;\n } else if ('status' in response) {\n context.response = response;\n context.responseType = response.type;\n context.status = response.status;\n context.isAborted = false;\n }\n observable.notify(context);\n };\n responsePromise.then(monitor(reportFetch), monitor(reportFetch));\n}","import { monitor } from './monitor';\nimport { noop } from './utils/functionUtils';\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nexport function readBytesFromStream(stream, callback, options) {\n var reader = stream.getReader();\n var chunks = [];\n var readBytesCount = 0;\n readMore();\n function readMore() {\n reader.read().then(monitor(function (result) {\n if (result.done) {\n onDone();\n return;\n }\n if (options.collectStreamBody) {\n chunks.push(result.value);\n }\n readBytesCount += result.value.length;\n if (readBytesCount > options.bytesLimit) {\n onDone();\n } else {\n readMore();\n }\n }), monitor(function (error) {\n return callback(error);\n }));\n }\n function onDone() {\n reader.cancel()[\"catch\"](\n // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n // as an unhandled rejection\n noop);\n var bytes;\n var limitExceeded;\n if (options.collectStreamBody) {\n var completeBuffer_1;\n if (chunks.length === 1) {\n // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just\n // use it directly.\n completeBuffer_1 = chunks[0];\n } else {\n // else, we need to copy buffers into a larger buffer to concatenate them.\n completeBuffer_1 = new Uint8Array(readBytesCount);\n var offset_1 = 0;\n chunks.forEach(function (chunk) {\n completeBuffer_1.set(chunk, offset_1);\n offset_1 += chunk.length;\n });\n }\n bytes = completeBuffer_1.slice(0, options.bytesLimit);\n limitExceeded = completeBuffer_1.length > options.bytesLimit;\n }\n callback(undefined, bytes, limitExceeded);\n }\n}","var AbstractLifeCycle = /** @class */function () {\n function AbstractLifeCycle() {\n this.callbacks = {};\n }\n AbstractLifeCycle.prototype.notify = function (eventType, data) {\n var eventCallbacks = this.callbacks[eventType];\n if (eventCallbacks) {\n eventCallbacks.forEach(function (callback) {\n return callback(data);\n });\n }\n };\n AbstractLifeCycle.prototype.subscribe = function (eventType, callback) {\n var _this = this;\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = [];\n }\n this.callbacks[eventType].push(callback);\n return {\n unsubscribe: function unsubscribe() {\n _this.callbacks[eventType] = _this.callbacks[eventType].filter(function (other) {\n return callback !== other;\n });\n }\n };\n };\n return AbstractLifeCycle;\n}();\nexport { AbstractLifeCycle };","import { startsWith } from './utils/polyfills';\nimport { display } from './display';\nimport { getType } from './utils/typeUtils';\nexport function isMatchOption(item) {\n var 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) {\n if (useStartsWith === void 0) {\n useStartsWith = false;\n }\n return list.some(function (item) {\n try {\n if (typeof item === 'function') {\n return item(value);\n } else if (item instanceof RegExp) {\n return item.test(value);\n } else if (typeof item === 'string') {\n return useStartsWith ? startsWith(value, item) : item === value;\n }\n } catch (e) {\n display.error(e);\n }\n return false;\n });\n}","import { objectEntries, shallowClone, performDraw, isNumber, assign, find, getType, isMatchOption, matchList } from '@datadog/browser-core';\nexport function isTracingOption(item) {\n var expectedItem = item;\n return getType(expectedItem) === 'object' && isMatchOption(expectedItem.match) && Array.isArray(expectedItem.propagatorTypes);\n}\n/**\n * Clear tracing information to avoid incomplete traces. Ideally, we should do it when the\n * request did not reach the server, but the browser does not expose this. So, we clear tracing\n * information if the request ended with status 0 without being aborted by the application.\n *\n * Reasoning:\n *\n * * Applications are usually aborting requests after a bit of time, for example when the user is\n * typing (autocompletion) or navigating away (in a SPA). With a performant device and good\n * network conditions, the request is likely to reach the server before being canceled.\n *\n * * Requests aborted otherwise (ex: lack of internet, CORS issue, blocked by a privacy extension)\n * are likely to finish quickly and without reaching the server.\n *\n * Of course, it might not be the case every time, but it should limit having incomplete traces a\n * bit.\n * */\nexport function clearTracingIfNeeded(context) {\n if (context.status === 0 && !context.isAborted) {\n context.traceId = undefined;\n context.spanId = undefined;\n context.traceSampled = undefined;\n }\n}\nexport function startTracer(configuration, sessionManager) {\n return {\n clearTracingIfNeeded: clearTracingIfNeeded,\n traceFetch: function traceFetch(context) {\n return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n var _a;\n if (context.input instanceof Request && !((_a = context.init) === null || _a === void 0 ? void 0 : _a.headers)) {\n context.input = new Request(context.input);\n Object.keys(tracingHeaders).forEach(function (key) {\n ;\n context.input.headers.append(key, tracingHeaders[key]);\n });\n } else {\n context.init = shallowClone(context.init);\n var headers_1 = [];\n if (context.init.headers instanceof Headers) {\n context.init.headers.forEach(function (value, key) {\n headers_1.push([key, value]);\n });\n } else if (Array.isArray(context.init.headers)) {\n context.init.headers.forEach(function (header) {\n headers_1.push(header);\n });\n } else if (context.init.headers) {\n Object.keys(context.init.headers).forEach(function (key) {\n headers_1.push([key, context.init.headers[key]]);\n });\n }\n context.init.headers = headers_1.concat(objectEntries(tracingHeaders));\n }\n });\n },\n traceXhr: function traceXhr(context, xhr) {\n return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n Object.keys(tracingHeaders).forEach(function (name) {\n xhr.setRequestHeader(name, tracingHeaders[name]);\n });\n });\n }\n };\n}\nfunction injectHeadersIfTracingAllowed(configuration, context, sessionManager, inject) {\n if (!isTracingSupported() || !sessionManager.findTrackedSession()) {\n return;\n }\n var tracingOption = find(configuration.allowedTracingUrls, function (tracingOption) {\n return matchList([tracingOption.match], context.url, true);\n });\n if (!tracingOption) {\n return;\n }\n context.traceId = new TraceIdentifier();\n context.spanId = new TraceIdentifier();\n context.traceSampled = !isNumber(configuration.traceSampleRate) || performDraw(configuration.traceSampleRate);\n inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled, tracingOption.propagatorTypes));\n}\nexport function isTracingSupported() {\n return getCrypto() !== undefined;\n}\nfunction getCrypto() {\n return window.crypto || window.msCrypto;\n}\n/**\n * When trace is not sampled, set priority to '0' instead of not adding the tracing headers\n * to prepare the implementation for sampling delegation.\n */\nfunction makeTracingHeaders(traceId, spanId, traceSampled, propagatorTypes) {\n var tracingHeaders = {};\n propagatorTypes.forEach(function (propagatorType) {\n switch (propagatorType) {\n case 'datadog':\n {\n assign(tracingHeaders, {\n 'x-datadog-origin': 'rum',\n 'x-datadog-parent-id': spanId.toDecimalString(),\n 'x-datadog-sampling-priority': traceSampled ? '1' : '0',\n 'x-datadog-trace-id': traceId.toDecimalString()\n });\n break;\n }\n // https://www.w3.org/TR/trace-context/\n case 'tracecontext':\n {\n assign(tracingHeaders, {\n traceparent: \"00-0000000000000000\".concat(traceId.toPaddedHexadecimalString(), \"-\").concat(spanId.toPaddedHexadecimalString(), \"-0\").concat(traceSampled ? '1' : '0')\n });\n break;\n }\n // https://github.com/openzipkin/b3-propagation\n case 'b3':\n {\n assign(tracingHeaders, {\n b3: \"\".concat(traceId.toPaddedHexadecimalString(), \"-\").concat(spanId.toPaddedHexadecimalString(), \"-\").concat(traceSampled ? '1' : '0')\n });\n break;\n }\n case 'b3multi':\n {\n assign(tracingHeaders, {\n 'X-B3-TraceId': traceId.toPaddedHexadecimalString(),\n 'X-B3-SpanId': spanId.toPaddedHexadecimalString(),\n 'X-B3-Sampled': traceSampled ? '1' : '0'\n });\n break;\n }\n }\n });\n return tracingHeaders;\n}\n/* eslint-disable no-bitwise */\nvar TraceIdentifier = /** @class */function () {\n function TraceIdentifier() {\n this.buffer = new Uint8Array(8);\n getCrypto().getRandomValues(this.buffer);\n this.buffer[0] = this.buffer[0] & 0x7f; // force 63-bit\n }\n TraceIdentifier.prototype.toString = function (radix) {\n var high = this.readInt32(0);\n var low = this.readInt32(4);\n var str = '';\n do {\n var mod = high % radix * 4294967296 + low;\n high = Math.floor(high / radix);\n low = Math.floor(mod / radix);\n str = (mod % radix).toString(radix) + str;\n } while (high || low);\n return str;\n };\n /**\n * Format used everywhere except the trace intake\n */\n TraceIdentifier.prototype.toDecimalString = function () {\n return this.toString(10);\n };\n /**\n * Format used by OTel headers\n */\n TraceIdentifier.prototype.toPaddedHexadecimalString = function () {\n var traceId = this.toString(16);\n return Array(17 - traceId.length).join('0') + traceId;\n };\n TraceIdentifier.prototype.readInt32 = function (offset) {\n return this.buffer[offset] * 16777216 + (this.buffer[offset + 1] << 16) + (this.buffer[offset + 2] << 8) + this.buffer[offset + 3];\n };\n return TraceIdentifier;\n}();\nexport { TraceIdentifier };\n/* eslint-enable no-bitwise */","import { getType, arrayFrom, getOrigin, isMatchOption, serializeConfiguration, assign, DefaultPrivacyLevel, display, isPercentage, objectHasValue, validateAndBuildConfiguration } from '@datadog/browser-core';\nimport { isTracingOption } from './tracing/tracer';\nexport function validateAndBuildRumConfiguration(initConfiguration) {\n var _a, _b, _c, _d, _e, _f;\n if (!initConfiguration.applicationId) {\n display.error('Application ID is not configured, no RUM data will be collected.');\n return;\n }\n if (initConfiguration.sessionReplaySampleRate !== undefined && !isPercentage(initConfiguration.sessionReplaySampleRate)) {\n display.error('Session Replay Sample Rate should be a number between 0 and 100');\n return;\n }\n // TODO remove fallback in next major\n var premiumSampleRate = (_a = initConfiguration.premiumSampleRate) !== null && _a !== void 0 ? _a : initConfiguration.replaySampleRate;\n if (premiumSampleRate !== undefined && initConfiguration.sessionReplaySampleRate !== undefined) {\n display.warn('Ignoring Premium Sample Rate because Session Replay Sample Rate is set');\n premiumSampleRate = undefined;\n }\n if (premiumSampleRate !== undefined && !isPercentage(premiumSampleRate)) {\n display.error('Premium Sample Rate should be a number between 0 and 100');\n return;\n }\n var traceSampleRate = (_b = initConfiguration.traceSampleRate) !== null && _b !== void 0 ? _b : initConfiguration.tracingSampleRate;\n if (traceSampleRate !== undefined && !isPercentage(traceSampleRate)) {\n display.error('Trace Sample Rate should be a number between 0 and 100');\n return;\n }\n if (initConfiguration.excludedActivityUrls !== undefined && !Array.isArray(initConfiguration.excludedActivityUrls)) {\n display.error('Excluded Activity Urls should be an array');\n return;\n }\n var allowedTracingUrls = validateAndBuildTracingOptions(initConfiguration);\n if (!allowedTracingUrls) {\n return;\n }\n var baseConfiguration = validateAndBuildConfiguration(initConfiguration);\n if (!baseConfiguration) {\n return;\n }\n var trackUserInteractions = !!((_c = initConfiguration.trackUserInteractions) !== null && _c !== void 0 ? _c : initConfiguration.trackInteractions);\n var trackFrustrations = !!initConfiguration.trackFrustrations;\n return assign({\n applicationId: initConfiguration.applicationId,\n version: initConfiguration.version,\n actionNameAttribute: initConfiguration.actionNameAttribute,\n sessionReplaySampleRate: (_e = (_d = initConfiguration.sessionReplaySampleRate) !== null && _d !== void 0 ? _d : premiumSampleRate) !== null && _e !== void 0 ? _e : 100,\n oldPlansBehavior: initConfiguration.sessionReplaySampleRate === undefined,\n traceSampleRate: traceSampleRate,\n allowedTracingUrls: allowedTracingUrls,\n excludedActivityUrls: (_f = initConfiguration.excludedActivityUrls) !== null && _f !== void 0 ? _f : [],\n workerUrl: initConfiguration.workerUrl,\n trackUserInteractions: trackUserInteractions || trackFrustrations,\n trackFrustrations: trackFrustrations,\n trackViewsManually: !!initConfiguration.trackViewsManually,\n trackResources: initConfiguration.trackResources,\n trackLongTasks: initConfiguration.trackLongTasks,\n subdomain: initConfiguration.subdomain,\n defaultPrivacyLevel: objectHasValue(DefaultPrivacyLevel, initConfiguration.defaultPrivacyLevel) ? initConfiguration.defaultPrivacyLevel : DefaultPrivacyLevel.MASK_USER_INPUT,\n customerDataTelemetrySampleRate: 1\n }, baseConfiguration);\n}\n/**\n * Handles allowedTracingUrls and processes legacy allowedTracingOrigins\n */\nfunction validateAndBuildTracingOptions(initConfiguration) {\n // Advise about parameters precedence.\n if (initConfiguration.allowedTracingUrls !== undefined && initConfiguration.allowedTracingOrigins !== undefined) {\n display.warn('Both allowedTracingUrls and allowedTracingOrigins (deprecated) have been defined. The parameter allowedTracingUrls will override allowedTracingOrigins.');\n }\n // Handle allowedTracingUrls first\n if (initConfiguration.allowedTracingUrls !== undefined) {\n if (!Array.isArray(initConfiguration.allowedTracingUrls)) {\n display.error('Allowed Tracing URLs should be an array');\n return;\n }\n if (initConfiguration.allowedTracingUrls.length !== 0 && initConfiguration.service === undefined) {\n display.error('Service needs to be configured when tracing is enabled');\n return;\n }\n // Convert from (MatchOption | TracingOption) to TracingOption, remove unknown properties\n var tracingOptions_1 = [];\n initConfiguration.allowedTracingUrls.forEach(function (option) {\n if (isMatchOption(option)) {\n tracingOptions_1.push({\n match: option,\n propagatorTypes: ['datadog']\n });\n } else if (isTracingOption(option)) {\n tracingOptions_1.push(option);\n } else {\n display.warn('Allowed Tracing Urls parameters should be a string, RegExp, function, or an object. Ignoring parameter', option);\n }\n });\n return tracingOptions_1;\n }\n // Handle conversion of allowedTracingOrigins to allowedTracingUrls\n if (initConfiguration.allowedTracingOrigins !== undefined) {\n if (!Array.isArray(initConfiguration.allowedTracingOrigins)) {\n display.error('Allowed Tracing Origins should be an array');\n return;\n }\n if (initConfiguration.allowedTracingOrigins.length !== 0 && initConfiguration.service === undefined) {\n display.error('Service needs to be configured when tracing is enabled');\n return;\n }\n var tracingOptions_2 = [];\n initConfiguration.allowedTracingOrigins.forEach(function (legacyMatchOption) {\n var tracingOption = convertLegacyMatchOptionToTracingOption(legacyMatchOption);\n if (tracingOption) {\n tracingOptions_2.push(tracingOption);\n }\n });\n return tracingOptions_2;\n }\n return [];\n}\n/**\n * Converts parameters from the deprecated allowedTracingOrigins\n * to allowedTracingUrls. Handles the change from origin to full URLs.\n */\nfunction convertLegacyMatchOptionToTracingOption(item) {\n var match;\n if (typeof item === 'string') {\n match = item;\n } else if (item instanceof RegExp) {\n match = function match(url) {\n return item.test(getOrigin(url));\n };\n } else if (typeof item === 'function') {\n match = function match(url) {\n return item(getOrigin(url));\n };\n }\n if (match === undefined) {\n display.warn('Allowed Tracing Origins parameters should be a string, RegExp or function. Ignoring parameter', item);\n return undefined;\n }\n return {\n match: match,\n propagatorTypes: ['datadog']\n };\n}\n/**\n * Combines the selected tracing propagators from the different options in allowedTracingUrls,\n * and assumes 'datadog' has been selected when using allowedTracingOrigins\n */\nfunction getSelectedTracingPropagators(configuration) {\n var usedTracingPropagators = new Set();\n if (Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0) {\n configuration.allowedTracingUrls.forEach(function (option) {\n if (isMatchOption(option)) {\n usedTracingPropagators.add('datadog');\n } else if (getType(option) === 'object' && Array.isArray(option.propagatorTypes)) {\n // Ensure we have an array, as we cannot rely on types yet (configuration is provided by users)\n option.propagatorTypes.forEach(function (propagatorType) {\n return usedTracingPropagators.add(propagatorType);\n });\n }\n });\n }\n if (Array.isArray(configuration.allowedTracingOrigins) && configuration.allowedTracingOrigins.length > 0) {\n usedTracingPropagators.add('datadog');\n }\n return arrayFrom(usedTracingPropagators);\n}\nexport function serializeRumConfiguration(configuration) {\n var _a, _b;\n var baseSerializedConfiguration = serializeConfiguration(configuration);\n return assign({\n premium_sample_rate: configuration.premiumSampleRate,\n replay_sample_rate: configuration.replaySampleRate,\n session_replay_sample_rate: configuration.sessionReplaySampleRate,\n trace_sample_rate: (_a = configuration.traceSampleRate) !== null && _a !== void 0 ? _a : configuration.tracingSampleRate,\n action_name_attribute: configuration.actionNameAttribute,\n use_allowed_tracing_origins: Array.isArray(configuration.allowedTracingOrigins) && configuration.allowedTracingOrigins.length > 0,\n use_allowed_tracing_urls: Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0,\n selected_tracing_propagators: getSelectedTracingPropagators(configuration),\n default_privacy_level: configuration.defaultPrivacyLevel,\n use_excluded_activity_urls: Array.isArray(configuration.excludedActivityUrls) && configuration.excludedActivityUrls.length > 0,\n use_worker_url: !!configuration.workerUrl,\n track_frustrations: configuration.trackFrustrations,\n track_views_manually: configuration.trackViewsManually,\n track_user_interactions: (_b = configuration.trackUserInteractions) !== null && _b !== void 0 ? _b : configuration.trackInteractions\n }, baseSerializedConfiguration);\n}","export function buildCommonContext(globalContextManager, userContextManager, recorderApi) {\n return {\n context: globalContextManager.getContext(),\n user: userContextManager.getContext(),\n hasReplay: recorderApi.isRecording() ? true : undefined\n };\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport { noop, willSyntheticsInjectRum, assign, BoundedBuffer, createContextManager, deepClone, makePublicApi, monitor, clocksNow, timeStampNow, display, callMonitored, createHandlingStack, canUseEventBridge, checkUser, sanitizeUser, sanitize } from '@datadog/browser-core';\nimport { validateAndBuildRumConfiguration } from '../domain/configuration';\nimport { buildCommonContext } from '../domain/contexts/commonContext';\nexport function makeRumPublicApi(startRumImpl, recorderApi, _a) {\n var _b = _a === void 0 ? {} : _a,\n _c = _b.ignoreInitIfSyntheticsWillInjectRum,\n ignoreInitIfSyntheticsWillInjectRum = _c === void 0 ? true : _c;\n var isAlreadyInitialized = false;\n var globalContextManager = createContextManager(\"global context\" /* CustomerDataType.GlobalContext */);\n var userContextManager = createContextManager(\"user\" /* CustomerDataType.User */);\n var getInternalContextStrategy = function getInternalContextStrategy() {\n return undefined;\n };\n var getInitConfigurationStrategy = function getInitConfigurationStrategy() {\n return undefined;\n };\n var stopSessionStrategy = noop;\n var getSessionReplayLinkStrategy = function getSessionReplayLinkStrategy() {\n return undefined;\n };\n var bufferApiCalls = new BoundedBuffer();\n var _addTimingStrategy = function addTimingStrategy(name, time) {\n if (time === void 0) {\n time = timeStampNow();\n }\n bufferApiCalls.add(function () {\n return _addTimingStrategy(name, time);\n });\n };\n var _startViewStrategy = function startViewStrategy(options, startClocks) {\n if (startClocks === void 0) {\n startClocks = clocksNow();\n }\n bufferApiCalls.add(function () {\n return _startViewStrategy(options, startClocks);\n });\n };\n var _addActionStrategy = function addActionStrategy(action, commonContext) {\n if (commonContext === void 0) {\n commonContext = buildCommonContext(globalContextManager, userContextManager, recorderApi);\n }\n bufferApiCalls.add(function () {\n return _addActionStrategy(action, commonContext);\n });\n };\n var _addErrorStrategy = function addErrorStrategy(providedError, commonContext) {\n if (commonContext === void 0) {\n commonContext = buildCommonContext(globalContextManager, userContextManager, recorderApi);\n }\n bufferApiCalls.add(function () {\n return _addErrorStrategy(providedError, commonContext);\n });\n };\n var _addFeatureFlagEvaluationStrategy = function addFeatureFlagEvaluationStrategy(key, value) {\n bufferApiCalls.add(function () {\n return _addFeatureFlagEvaluationStrategy(key, value);\n });\n };\n function initRum(initConfiguration) {\n // This function should be available, regardless of initialization success.\n getInitConfigurationStrategy = function getInitConfigurationStrategy() {\n return deepClone(initConfiguration);\n };\n // If we are in a Synthetics test configured to automatically inject a RUM instance, we want to\n // completely discard the customer application RUM instance by ignoring their init() call. But,\n // we should not ignore the init() call from the Synthetics-injected RUM instance, so the\n // internal `ignoreInitIfSyntheticsWillInjectRum` option is here to bypass this condition.\n if (ignoreInitIfSyntheticsWillInjectRum && willSyntheticsInjectRum()) {\n return;\n }\n var eventBridgeAvailable = canUseEventBridge();\n if (eventBridgeAvailable) {\n initConfiguration = overrideInitConfigurationForBridge(initConfiguration);\n }\n if (!canInitRum(initConfiguration)) {\n return;\n }\n var configuration = validateAndBuildRumConfiguration(initConfiguration);\n if (!configuration) {\n return;\n }\n if (!eventBridgeAvailable && !configuration.sessionStoreStrategyType) {\n display.warn('No storage available for session. We will not send any data.');\n return;\n }\n if (!configuration.trackViewsManually) {\n doStartRum(initConfiguration, configuration);\n } else {\n // drain beforeInitCalls by buffering them until we start RUM\n // if we get a startView, drain re-buffered calls before continuing to drain beforeInitCalls\n // in order to ensure that calls are processed in order\n var beforeInitCalls = bufferApiCalls;\n bufferApiCalls = new BoundedBuffer();\n _startViewStrategy = function _startViewStrategy(options) {\n doStartRum(initConfiguration, configuration, options);\n };\n beforeInitCalls.drain();\n }\n isAlreadyInitialized = true;\n }\n function doStartRum(initConfiguration, configuration, initialViewOptions) {\n var startRumResults = startRumImpl(initConfiguration, configuration, recorderApi, globalContextManager, userContextManager, initialViewOptions);\n getSessionReplayLinkStrategy = function getSessionReplayLinkStrategy() {\n return recorderApi.getSessionReplayLink(configuration, startRumResults.session, startRumResults.viewContexts);\n };\n _startViewStrategy = startRumResults.startView, _addActionStrategy = startRumResults.addAction, _addErrorStrategy = startRumResults.addError, _addTimingStrategy = startRumResults.addTiming, _addFeatureFlagEvaluationStrategy = startRumResults.addFeatureFlagEvaluation, getInternalContextStrategy = startRumResults.getInternalContext, stopSessionStrategy = startRumResults.stopSession;\n bufferApiCalls.drain();\n recorderApi.onRumStart(startRumResults.lifeCycle, configuration, startRumResults.session, startRumResults.viewContexts);\n }\n var startView = monitor(function (options) {\n var sanitizedOptions = _typeof(options) === 'object' ? options : {\n name: options\n };\n _startViewStrategy(sanitizedOptions);\n });\n var rumPublicApi = makePublicApi({\n init: monitor(initRum),\n /** @deprecated: use setGlobalContextProperty instead */\n addRumGlobalContext: monitor(globalContextManager.add),\n setGlobalContextProperty: monitor(globalContextManager.setContextProperty),\n /** @deprecated: use removeGlobalContextProperty instead */\n removeRumGlobalContext: monitor(globalContextManager.remove),\n removeGlobalContextProperty: monitor(globalContextManager.removeContextProperty),\n /** @deprecated: use getGlobalContext instead */\n getRumGlobalContext: monitor(globalContextManager.get),\n getGlobalContext: monitor(globalContextManager.getContext),\n /** @deprecated: use setGlobalContext instead */\n setRumGlobalContext: monitor(globalContextManager.set),\n setGlobalContext: monitor(globalContextManager.setContext),\n clearGlobalContext: monitor(globalContextManager.clearContext),\n getInternalContext: monitor(function (startTime) {\n return getInternalContextStrategy(startTime);\n }),\n getInitConfiguration: monitor(function () {\n return getInitConfigurationStrategy();\n }),\n addAction: monitor(function (name, context) {\n _addActionStrategy({\n name: sanitize(name),\n context: sanitize(context),\n startClocks: clocksNow(),\n type: \"custom\" /* ActionType.CUSTOM */\n });\n }),\n addError: function addError(error, context) {\n var handlingStack = createHandlingStack();\n callMonitored(function () {\n _addErrorStrategy({\n error: error,\n handlingStack: handlingStack,\n context: sanitize(context),\n startClocks: clocksNow()\n });\n });\n },\n addTiming: monitor(function (name, time) {\n _addTimingStrategy(sanitize(name), time);\n }),\n setUser: monitor(function (newUser) {\n if (checkUser(newUser)) {\n userContextManager.setContext(sanitizeUser(newUser));\n }\n }),\n getUser: monitor(userContextManager.getContext),\n setUserProperty: monitor(function (key, property) {\n var _a;\n var sanitizedProperty = sanitizeUser((_a = {}, _a[key] = property, _a))[key];\n userContextManager.setContextProperty(key, sanitizedProperty);\n }),\n removeUserProperty: monitor(userContextManager.removeContextProperty),\n /** @deprecated: renamed to clearUser */\n removeUser: monitor(userContextManager.clearContext),\n clearUser: monitor(userContextManager.clearContext),\n startView: startView,\n stopSession: monitor(function () {\n stopSessionStrategy();\n }),\n startSessionReplayRecording: monitor(recorderApi.start),\n stopSessionReplayRecording: monitor(recorderApi.stop),\n /**\n * This feature is currently in beta. For more information see the full [feature flag tracking guide](https://docs.datadoghq.com/real_user_monitoring/feature_flag_tracking/).\n */\n addFeatureFlagEvaluation: monitor(function (key, value) {\n _addFeatureFlagEvaluationStrategy(sanitize(key), sanitize(value));\n }),\n getSessionReplayLink: monitor(function () {\n return getSessionReplayLinkStrategy();\n })\n });\n return rumPublicApi;\n function canInitRum(initConfiguration) {\n if (isAlreadyInitialized) {\n if (!initConfiguration.silentMultipleInit) {\n display.error('DD_RUM is already initialized.');\n }\n return false;\n }\n return true;\n }\n function overrideInitConfigurationForBridge(initConfiguration) {\n return assign({}, initConfiguration, {\n applicationId: '00000000-aaaa-0000-aaaa-000000000000',\n clientToken: 'empty',\n sessionSampleRate: 100\n });\n }\n}","import { monitor, noop, Observable, getZoneJsOriginalValue } from '@datadog/browser-core';\nexport function createDOMMutationObservable() {\n var MutationObserver = getMutationObserverConstructor();\n var observable = new Observable(function () {\n if (!MutationObserver) {\n return;\n }\n var observer = new MutationObserver(monitor(function () {\n return observable.notify();\n }));\n observer.observe(document, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true\n });\n return function () {\n return observer.disconnect();\n };\n });\n return observable;\n}\nexport function getMutationObserverConstructor() {\n var constructor;\n var browserWindow = window;\n // Angular uses Zone.js to provide a context persisting across async tasks. Zone.js replaces the\n // global MutationObserver constructor with a patched version to support the context propagation.\n // There is an ongoing issue[1][2] with this setup when using a MutationObserver within a Angular\n // component: on some occasions, the callback is being called in an infinite loop, causing the\n // page to freeze (even if the callback is completely empty).\n //\n // To work around this issue, we try to get the original MutationObserver constructor stored by\n // Zone.js.\n //\n // [1] https://github.com/angular/angular/issues/26948\n // [2] https://github.com/angular/angular/issues/31712\n if (browserWindow.Zone) {\n // Zone.js 0.8.6+ is storing original class constructors into the browser 'window' object[3].\n //\n // [3] https://github.com/angular/angular/blob/6375fa79875c0fe7b815efc45940a6e6f5c9c9eb/packages/zone.js/lib/common/utils.ts#L288\n constructor = getZoneJsOriginalValue(browserWindow, 'MutationObserver');\n if (browserWindow.MutationObserver && constructor === browserWindow.MutationObserver) {\n // Anterior Zone.js versions (used in Angular 2) does not expose the original MutationObserver\n // in the 'window' object. Luckily, the patched MutationObserver class is storing an original\n // instance in its properties[4]. Let's get the original MutationObserver constructor from\n // there.\n //\n // [4] https://github.com/angular/zone.js/blob/v0.8.5/lib/common/utils.ts#L412\n var patchedInstance = new browserWindow.MutationObserver(noop);\n var originalInstance = getZoneJsOriginalValue(patchedInstance, 'originalInstance');\n constructor = originalInstance && originalInstance.constructor;\n }\n }\n if (!constructor) {\n constructor = browserWindow.MutationObserver;\n }\n return constructor;\n}","import { addEventListener } from './addEventListener';\nexport function runOnReadyState(configuration, expectedReadyState, callback) {\n if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n callback();\n } else {\n var eventName = expectedReadyState === 'complete' ? \"load\" /* DOM_EVENT.LOAD */ : \"DOMContentLoaded\" /* DOM_EVENT.DOM_CONTENT_LOADED */;\n addEventListener(configuration, window, eventName, callback, {\n once: true\n });\n }\n}","import { assign, addTelemetryDebug, elapsed, getPathName, includes, isValidUrl, toServerDuration } from '@datadog/browser-core';\nexport var FAKE_INITIAL_DOCUMENT = 'initial_document';\nvar RESOURCE_TYPES = [[\"document\" /* ResourceType.DOCUMENT */, function (initiatorType) {\n return FAKE_INITIAL_DOCUMENT === initiatorType;\n}], [\"xhr\" /* ResourceType.XHR */, function (initiatorType) {\n return 'xmlhttprequest' === initiatorType;\n}], [\"fetch\" /* ResourceType.FETCH */, function (initiatorType) {\n return 'fetch' === initiatorType;\n}], [\"beacon\" /* ResourceType.BEACON */, function (initiatorType) {\n return 'beacon' === initiatorType;\n}], [\"css\" /* ResourceType.CSS */, function (_, path) {\n return /\\.css$/i.test(path);\n}], [\"js\" /* ResourceType.JS */, function (_, path) {\n return /\\.js$/i.test(path);\n}], [\"image\" /* ResourceType.IMAGE */, function (initiatorType, path) {\n return includes(['image', 'img', 'icon'], initiatorType) || /\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i.exec(path) !== null;\n}], [\"font\" /* ResourceType.FONT */, function (_, path) {\n return /\\.(woff|eot|woff2|ttf)$/i.exec(path) !== null;\n}], [\"media\" /* ResourceType.MEDIA */, function (initiatorType, path) {\n return includes(['audio', 'video'], initiatorType) || /\\.(mp3|mp4)$/i.exec(path) !== null;\n}]];\nexport function computeResourceKind(timing) {\n var url = timing.name;\n if (!isValidUrl(url)) {\n addTelemetryDebug(\"Failed to construct URL for \\\"\".concat(timing.name, \"\\\"\"));\n return \"other\" /* ResourceType.OTHER */;\n }\n var path = getPathName(url);\n for (var _i = 0, RESOURCE_TYPES_1 = RESOURCE_TYPES; _i < RESOURCE_TYPES_1.length; _i++) {\n var _a = RESOURCE_TYPES_1[_i],\n type = _a[0],\n isType = _a[1];\n if (isType(timing.initiatorType, path)) {\n return type;\n }\n }\n return \"other\" /* ResourceType.OTHER */;\n}\nfunction areInOrder() {\n var numbers = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n numbers[_i] = arguments[_i];\n }\n for (var i = 1; i < numbers.length; i += 1) {\n if (numbers[i - 1] > numbers[i]) {\n return false;\n }\n }\n return true;\n}\nexport function isRequestKind(timing) {\n return timing.initiatorType === 'xmlhttprequest' || timing.initiatorType === 'fetch';\n}\nexport function computePerformanceResourceDuration(entry) {\n var duration = entry.duration,\n startTime = entry.startTime,\n responseEnd = entry.responseEnd;\n // Safari duration is always 0 on timings blocked by cross origin policies.\n if (duration === 0 && startTime < responseEnd) {\n return toServerDuration(elapsed(startTime, responseEnd));\n }\n return toServerDuration(duration);\n}\nexport function computePerformanceResourceDetails(entry) {\n var validEntry = toValidEntry(entry);\n if (!validEntry) {\n return undefined;\n }\n var startTime = validEntry.startTime,\n fetchStart = validEntry.fetchStart,\n redirectStart = validEntry.redirectStart,\n redirectEnd = validEntry.redirectEnd,\n domainLookupStart = validEntry.domainLookupStart,\n domainLookupEnd = validEntry.domainLookupEnd,\n connectStart = validEntry.connectStart,\n secureConnectionStart = validEntry.secureConnectionStart,\n connectEnd = validEntry.connectEnd,\n requestStart = validEntry.requestStart,\n responseStart = validEntry.responseStart,\n responseEnd = validEntry.responseEnd;\n var details = {\n download: formatTiming(startTime, responseStart, responseEnd),\n first_byte: formatTiming(startTime, requestStart, responseStart)\n };\n // Make sure a connection occurred\n if (connectEnd !== fetchStart) {\n details.connect = formatTiming(startTime, connectStart, connectEnd);\n // Make sure a secure connection occurred\n if (areInOrder(connectStart, secureConnectionStart, connectEnd)) {\n details.ssl = formatTiming(startTime, secureConnectionStart, connectEnd);\n }\n }\n // Make sure a domain lookup occurred\n if (domainLookupEnd !== fetchStart) {\n details.dns = formatTiming(startTime, domainLookupStart, domainLookupEnd);\n }\n if (hasRedirection(entry)) {\n details.redirect = formatTiming(startTime, redirectStart, redirectEnd);\n }\n return details;\n}\nexport function toValidEntry(entry) {\n // Ensure timings are in the right order. On top of filtering out potential invalid\n // RumPerformanceResourceTiming, it will ignore entries from requests where timings cannot be\n // collected, for example cross origin requests without a \"Timing-Allow-Origin\" header allowing\n // it.\n if (!areInOrder(entry.startTime, entry.fetchStart, entry.domainLookupStart, entry.domainLookupEnd, entry.connectStart, entry.connectEnd, entry.requestStart, entry.responseStart, entry.responseEnd)) {\n return undefined;\n }\n if (!hasRedirection(entry)) {\n return entry;\n }\n var redirectStart = entry.redirectStart,\n redirectEnd = entry.redirectEnd;\n // Firefox doesn't provide redirect timings on cross origin requests.\n // Provide a default for those.\n if (redirectStart < entry.startTime) {\n redirectStart = entry.startTime;\n }\n if (redirectEnd < entry.startTime) {\n redirectEnd = entry.fetchStart;\n }\n // Make sure redirect timings are in order\n if (!areInOrder(entry.startTime, redirectStart, redirectEnd, entry.fetchStart)) {\n return undefined;\n }\n return assign({}, entry, {\n redirectEnd: redirectEnd,\n redirectStart: redirectStart\n });\n}\nfunction hasRedirection(entry) {\n // The only time fetchStart is different than startTime is if a redirection occurred.\n return entry.fetchStart !== entry.startTime;\n}\nfunction formatTiming(origin, start, end) {\n return {\n duration: toServerDuration(elapsed(start, end)),\n start: toServerDuration(elapsed(origin, start))\n };\n}\nexport function computeSize(entry) {\n // Make sure a request actually occurred\n if (entry.startTime < entry.responseStart) {\n return entry.decodedBodySize;\n }\n return undefined;\n}\nexport function isAllowedRequestUrl(configuration, url) {\n return url && !configuration.isIntakeUrl(url);\n}","export function isTextNode(node) {\n return node.nodeType === Node.TEXT_NODE;\n}\nexport function isCommentNode(node) {\n return node.nodeType === Node.COMMENT_NODE;\n}\nexport function isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n}\nexport function isNodeShadowHost(node) {\n return isElementNode(node) && Boolean(node.shadowRoot);\n}\nexport function isNodeShadowRoot(node) {\n var shadowRoot = node;\n return !!shadowRoot.host && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE && isElementNode(shadowRoot.host);\n}\nexport function getChildNodes(node) {\n return isNodeShadowHost(node) ? node.shadowRoot.childNodes : node.childNodes;\n}\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node) {\n return isNodeShadowRoot(node) ? node.host : node.parentNode;\n}","import { dateNow, findCommaSeparatedValue, ONE_MINUTE } from '@datadog/browser-core';\nimport { isCommentNode, isTextNode } from '../../browser/htmlDomUtils';\nexport var INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD = 2 * ONE_MINUTE;\nexport function getDocumentTraceId(document) {\n var data = getDocumentTraceDataFromMeta(document) || getDocumentTraceDataFromComment(document);\n if (!data || data.traceTime <= dateNow() - INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD) {\n return undefined;\n }\n return data.traceId;\n}\nexport function getDocumentTraceDataFromMeta(document) {\n var traceIdMeta = document.querySelector('meta[name=dd-trace-id]');\n var traceTimeMeta = document.querySelector('meta[name=dd-trace-time]');\n return createDocumentTraceData(traceIdMeta && traceIdMeta.content, traceTimeMeta && traceTimeMeta.content);\n}\nexport function getDocumentTraceDataFromComment(document) {\n var comment = findTraceComment(document);\n if (!comment) {\n return undefined;\n }\n return createDocumentTraceData(findCommaSeparatedValue(comment, 'trace-id'), findCommaSeparatedValue(comment, 'trace-time'));\n}\nexport function createDocumentTraceData(traceId, rawTraceTime) {\n var traceTime = rawTraceTime && Number(rawTraceTime);\n if (!traceId || !traceTime) {\n return undefined;\n }\n return {\n traceId: traceId,\n traceTime: traceTime\n };\n}\nexport function findTraceComment(document) {\n // 1. Try to find the comment as a direct child of the document\n // Note: TSLint advises to use a 'for of', but TS doesn't allow to use 'for of' if the iterated\n // value is not an array or string (here, a NodeList).\n for (var i = 0; i < document.childNodes.length; i += 1) {\n var comment = getTraceCommentFromNode(document.childNodes[i]);\n if (comment) {\n return comment;\n }\n }\n // 2. If the comment is placed after the tag, but have some space or new lines before or\n // after, the DOM parser will lift it (and the surrounding text) at the end of the tag.\n // Try to look for the comment at the end of the by by iterating over its child nodes in\n // reverse order, stopping if we come across a non-text node.\n if (document.body) {\n for (var i = document.body.childNodes.length - 1; i >= 0; i -= 1) {\n var node = document.body.childNodes[i];\n var comment = getTraceCommentFromNode(node);\n if (comment) {\n return comment;\n }\n if (!isTextNode(node)) {\n break;\n }\n }\n }\n}\nfunction getTraceCommentFromNode(node) {\n if (node && isCommentNode(node)) {\n var match = /^\\s*DATADOG;(.*?)\\s*$/.exec(node.data);\n if (match) {\n return match[1];\n }\n }\n}","import { dateNow, assign, addEventListeners, getRelativeTime, isNumber, monitor, setTimeout, relativeNow, runOnReadyState, addEventListener } from '@datadog/browser-core';\nimport { FAKE_INITIAL_DOCUMENT, isAllowedRequestUrl } from '../domain/rumEventsCollection/resource/resourceUtils';\nimport { getDocumentTraceId } from '../domain/tracing/getDocumentTraceId';\nfunction supportPerformanceObject() {\n return window.performance !== undefined && 'getEntries' in performance;\n}\nexport function supportPerformanceTimingEvent(entryType) {\n return window.PerformanceObserver && PerformanceObserver.supportedEntryTypes !== undefined && PerformanceObserver.supportedEntryTypes.includes(entryType);\n}\nexport function startPerformanceCollection(lifeCycle, configuration) {\n retrieveInitialDocumentResourceTiming(configuration, function (timing) {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n });\n if (supportPerformanceObject()) {\n var performanceEntries_1 = performance.getEntries();\n // Because the performance entry list can be quite large\n // delay the computation to prevent the SDK from blocking the main thread on init\n setTimeout(function () {\n return handleRumPerformanceEntries(lifeCycle, configuration, performanceEntries_1);\n });\n }\n if (window.PerformanceObserver) {\n var handlePerformanceEntryList_1 = monitor(function (entries) {\n return handleRumPerformanceEntries(lifeCycle, configuration, entries.getEntries());\n });\n var mainEntries = ['resource', 'navigation', 'longtask', 'paint'];\n var experimentalEntries = ['largest-contentful-paint', 'first-input', 'layout-shift'];\n try {\n // Experimental entries are not retrieved by performance.getEntries()\n // use a single PerformanceObserver with buffered flag by type\n // to get values that could happen before SDK init\n experimentalEntries.forEach(function (type) {\n var observer = new PerformanceObserver(handlePerformanceEntryList_1);\n observer.observe({\n type: type,\n buffered: true\n });\n });\n } catch (e) {\n // Some old browser versions (ex: chrome 67) don't support the PerformanceObserver type and buffered options\n // In these cases, fallback to PerformanceObserver with entryTypes\n mainEntries.push.apply(mainEntries, experimentalEntries);\n }\n var mainObserver = new PerformanceObserver(handlePerformanceEntryList_1);\n mainObserver.observe({\n entryTypes: mainEntries\n });\n if (supportPerformanceObject() && 'addEventListener' in performance) {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1559377\n addEventListener(configuration, performance, 'resourcetimingbufferfull', function () {\n performance.clearResourceTimings();\n });\n }\n }\n if (!supportPerformanceTimingEvent('navigation')) {\n retrieveNavigationTiming(configuration, function (timing) {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n });\n }\n if (!supportPerformanceTimingEvent('first-input')) {\n retrieveFirstInputTiming(configuration, function (timing) {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n });\n }\n}\nexport function retrieveInitialDocumentResourceTiming(configuration, callback) {\n runOnReadyState(configuration, 'interactive', function () {\n var timing;\n var forcedAttributes = {\n entryType: 'resource',\n initiatorType: FAKE_INITIAL_DOCUMENT,\n traceId: getDocumentTraceId(document)\n };\n if (supportPerformanceTimingEvent('navigation') && performance.getEntriesByType('navigation').length > 0) {\n var navigationEntry = performance.getEntriesByType('navigation')[0];\n timing = assign(navigationEntry.toJSON(), forcedAttributes);\n } else {\n var relativePerformanceTiming = computeRelativePerformanceTiming();\n timing = assign(relativePerformanceTiming, {\n decodedBodySize: 0,\n duration: relativePerformanceTiming.responseEnd,\n name: window.location.href,\n startTime: 0\n }, forcedAttributes);\n }\n callback(timing);\n });\n}\nfunction retrieveNavigationTiming(configuration, callback) {\n function sendFakeTiming() {\n callback(assign(computeRelativePerformanceTiming(), {\n entryType: 'navigation'\n }));\n }\n runOnReadyState(configuration, 'complete', function () {\n // Send it a bit after the actual load event, so the \"loadEventEnd\" timing is accurate\n setTimeout(sendFakeTiming);\n });\n}\n/**\n * first-input timing entry polyfill based on\n * https://github.com/GoogleChrome/web-vitals/blob/master/src/lib/polyfills/firstInputPolyfill.ts\n */\nfunction retrieveFirstInputTiming(configuration, callback) {\n var startTimeStamp = dateNow();\n var timingSent = false;\n var removeEventListeners = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"mousedown\" /* DOM_EVENT.MOUSE_DOWN */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */], function (evt) {\n // Only count cancelable events, which should trigger behavior important to the user.\n if (!evt.cancelable) {\n return;\n }\n // This timing will be used to compute the \"first Input delay\", which is the delta between\n // when the system received the event (e.g. evt.timeStamp) and when it could run the callback\n // (e.g. performance.now()).\n var timing = {\n entryType: 'first-input',\n processingStart: relativeNow(),\n startTime: evt.timeStamp\n };\n if (evt.type === \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */) {\n sendTimingIfPointerIsNotCancelled(configuration, timing);\n } else {\n sendTiming(timing);\n }\n }, {\n passive: true,\n capture: true\n }).stop;\n /**\n * Pointer events are a special case, because they can trigger main or compositor thread behavior.\n * We differentiate these cases based on whether or not we see a pointercancel event, which are\n * fired when we scroll. If we're scrolling we don't need to report input delay since FID excludes\n * scrolling and pinch/zooming.\n */\n function sendTimingIfPointerIsNotCancelled(configuration, timing) {\n addEventListeners(configuration, window, [\"pointerup\" /* DOM_EVENT.POINTER_UP */, \"pointercancel\" /* DOM_EVENT.POINTER_CANCEL */], function (event) {\n if (event.type === \"pointerup\" /* DOM_EVENT.POINTER_UP */) {\n sendTiming(timing);\n }\n }, {\n once: true\n });\n }\n function sendTiming(timing) {\n if (!timingSent) {\n timingSent = true;\n removeEventListeners();\n // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than\n // the time between now and when the page was loaded.\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7\n var delay = timing.processingStart - timing.startTime;\n if (delay >= 0 && delay < dateNow() - startTimeStamp) {\n callback(timing);\n }\n }\n }\n}\nfunction computeRelativePerformanceTiming() {\n var result = {};\n var timing = performance.timing;\n for (var key in timing) {\n if (isNumber(timing[key])) {\n var numberKey = key;\n var timingElement = timing[numberKey];\n result[numberKey] = timingElement === 0 ? 0 : getRelativeTime(timingElement);\n }\n }\n return result;\n}\nfunction handleRumPerformanceEntries(lifeCycle, configuration, entries) {\n var rumPerformanceEntries = entries.filter(function (entry) {\n return entry.entryType === 'resource' || entry.entryType === 'navigation' || entry.entryType === 'paint' || entry.entryType === 'longtask' || entry.entryType === 'largest-contentful-paint' || entry.entryType === 'first-input' || entry.entryType === 'layout-shift';\n });\n var rumAllowedPerformanceEntries = rumPerformanceEntries.filter(function (entry) {\n return !isIncompleteNavigation(entry) && !isForbiddenResource(configuration, entry);\n });\n if (rumAllowedPerformanceEntries.length) {\n lifeCycle.notify(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, rumAllowedPerformanceEntries);\n }\n}\nfunction isIncompleteNavigation(entry) {\n return entry.entryType === 'navigation' && entry.loadEventEnd <= 0;\n}\nfunction isForbiddenResource(configuration, entry) {\n return entry.entryType === 'resource' && !isAllowedRequestUrl(configuration, entry.name);\n}","import { Observable, throttle, addEventListener } from '@datadog/browser-core';\nvar viewportObservable;\nexport function initViewportObservable(configuration) {\n if (!viewportObservable) {\n viewportObservable = createViewportObservable(configuration);\n }\n return viewportObservable;\n}\nexport function createViewportObservable(configuration) {\n var observable = new Observable(function () {\n var updateDimension = throttle(function () {\n observable.notify(getViewportDimension());\n }, 200).throttled;\n return addEventListener(configuration, window, \"resize\" /* DOM_EVENT.RESIZE */, updateDimension, {\n capture: true,\n passive: true\n }).stop;\n });\n return observable;\n}\n// excludes the width and height of any rendered classic scrollbar that is fixed to the visual viewport\nexport function getViewportDimension() {\n var visual = window.visualViewport;\n if (visual) {\n return {\n width: Number(visual.width * visual.scale),\n height: Number(visual.height * visual.scale)\n };\n }\n return {\n width: Number(window.innerWidth || 0),\n height: Number(window.innerHeight || 0)\n };\n}","import { getViewportDimension, initViewportObservable } from '../../browser/viewportObservable';\nvar viewport;\nvar stopListeners;\nexport function getDisplayContext(configuration) {\n if (!viewport) {\n viewport = getViewportDimension();\n stopListeners = initViewportObservable(configuration).subscribe(function (viewportDimension) {\n viewport = viewportDimension;\n }).unsubscribe;\n }\n return {\n viewport: viewport\n };\n}\nexport function resetDisplayContext() {\n if (stopListeners) {\n stopListeners();\n }\n viewport = undefined;\n}","import { sanitize, deepClone, getType, objectEntries } from '@datadog/browser-core';\n/**\n * Current limitation:\n * - field path do not support array, 'a.b.c' only\n */\nexport function limitModification(object, modifiableFieldPaths, modifier) {\n var clone = deepClone(object);\n var result = modifier(clone);\n objectEntries(modifiableFieldPaths).forEach(function (_a) {\n var fieldPath = _a[0],\n fieldType = _a[1];\n var newValue = get(clone, fieldPath);\n var newType = getType(newValue);\n if (newType === fieldType) {\n set(object, fieldPath, sanitize(newValue));\n } else if (fieldType === 'object' && (newType === 'undefined' || newType === 'null')) {\n set(object, fieldPath, {});\n }\n });\n return result;\n}\nfunction get(object, path) {\n var current = object;\n for (var _i = 0, _a = path.split('.'); _i < _a.length; _i++) {\n var field = _a[_i];\n if (!isValidObjectContaining(current, field)) {\n return;\n }\n current = current[field];\n }\n return current;\n}\nfunction set(object, path, value) {\n var current = object;\n var fields = path.split('.');\n for (var i = 0; i < fields.length; i += 1) {\n var field = fields[i];\n if (!isValidObject(current)) {\n return;\n }\n if (i !== fields.length - 1) {\n current = current[field];\n } else {\n current[field] = value;\n }\n }\n}\nfunction isValidObject(object) {\n return getType(object) === 'object';\n}\nfunction isValidObjectContaining(object, field) {\n return isValidObject(object) && Object.prototype.hasOwnProperty.call(object, field);\n}","import { combine, isEmptyObject, timeStampNow, currentDrift, display, createEventRateLimiter, canUseEventBridge, assign, round } from '@datadog/browser-core';\nimport { getSyntheticsContext } from './contexts/syntheticsContext';\nimport { getCiTestContext } from './contexts/ciTestContext';\nimport { getDisplayContext } from './contexts/displayContext';\nimport { limitModification } from './limitModification';\nvar VIEW_MODIFIABLE_FIELD_PATHS = {\n 'view.url': 'string',\n 'view.referrer': 'string'\n};\nvar USER_CUSTOMIZABLE_FIELD_PATHS = {\n context: 'object'\n};\nvar modifiableFieldPathsByEvent;\nexport function startRumAssembly(configuration, lifeCycle, sessionManager, viewContexts, urlContexts, actionContexts, buildCommonContext, reportError) {\n var _a, _b;\n modifiableFieldPathsByEvent = (_a = {}, _a[\"view\" /* RumEventType.VIEW */] = VIEW_MODIFIABLE_FIELD_PATHS, _a[\"error\" /* RumEventType.ERROR */] = assign({\n 'error.message': 'string',\n 'error.stack': 'string',\n 'error.resource.url': 'string',\n 'error.fingerprint': 'string'\n }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS), _a[\"resource\" /* RumEventType.RESOURCE */] = assign({\n 'resource.url': 'string'\n }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS), _a[\"action\" /* RumEventType.ACTION */] = assign({\n 'action.target.name': 'string'\n }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS), _a[\"long_task\" /* RumEventType.LONG_TASK */] = assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS), _a);\n var eventRateLimiters = (_b = {}, _b[\"error\" /* RumEventType.ERROR */] = createEventRateLimiter(\"error\" /* RumEventType.ERROR */, configuration.eventRateLimiterThreshold, reportError), _b[\"action\" /* RumEventType.ACTION */] = createEventRateLimiter(\"action\" /* RumEventType.ACTION */, configuration.eventRateLimiterThreshold, reportError), _b);\n var syntheticsContext = getSyntheticsContext();\n var ciTestContext = getCiTestContext();\n lifeCycle.subscribe(10 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, function (_a) {\n var startTime = _a.startTime,\n rawRumEvent = _a.rawRumEvent,\n domainContext = _a.domainContext,\n savedCommonContext = _a.savedCommonContext,\n customerContext = _a.customerContext;\n var viewContext = viewContexts.findView(startTime);\n var urlContext = urlContexts.findUrl(startTime);\n var session = sessionManager.findTrackedSession(startTime);\n if (session && viewContext && urlContext) {\n var commonContext = savedCommonContext || buildCommonContext();\n var actionId = actionContexts.findActionId(startTime);\n var rumContext = {\n _dd: {\n format_version: 2,\n drift: currentDrift(),\n session: {\n plan: session.plan\n },\n configuration: {\n session_sample_rate: round(configuration.sessionSampleRate, 3),\n session_replay_sample_rate: round(configuration.sessionReplaySampleRate, 3)\n },\n browser_sdk_version: canUseEventBridge() ? \"4.47.0\" : undefined\n },\n application: {\n id: configuration.applicationId\n },\n date: timeStampNow(),\n service: viewContext.service || configuration.service,\n version: viewContext.version || configuration.version,\n source: 'browser',\n session: {\n id: session.id,\n type: syntheticsContext ? \"synthetics\" /* SessionType.SYNTHETICS */ : ciTestContext ? \"ci_test\" /* SessionType.CI_TEST */ : \"user\" /* SessionType.USER */\n },\n view: {\n id: viewContext.id,\n name: viewContext.name,\n url: urlContext.url,\n referrer: urlContext.referrer\n },\n action: needToAssembleWithAction(rawRumEvent) && actionId ? {\n id: actionId\n } : undefined,\n synthetics: syntheticsContext,\n ci_test: ciTestContext,\n display: getDisplayContext(configuration)\n };\n var serverRumEvent = combine(rumContext, rawRumEvent);\n serverRumEvent.context = combine(commonContext.context, customerContext);\n if (!('has_replay' in serverRumEvent.session)) {\n ;\n serverRumEvent.session.has_replay = commonContext.hasReplay;\n }\n if (!isEmptyObject(commonContext.user)) {\n ;\n serverRumEvent.usr = commonContext.user;\n }\n if (shouldSend(serverRumEvent, configuration.beforeSend, domainContext, eventRateLimiters)) {\n if (isEmptyObject(serverRumEvent.context)) {\n delete serverRumEvent.context;\n }\n lifeCycle.notify(11 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, serverRumEvent);\n }\n }\n });\n}\nfunction shouldSend(event, beforeSend, domainContext, eventRateLimiters) {\n var _a;\n if (beforeSend) {\n var result = limitModification(event, modifiableFieldPathsByEvent[event.type], function (event) {\n return beforeSend(event, domainContext);\n });\n if (result === false && event.type !== \"view\" /* RumEventType.VIEW */) {\n return false;\n }\n if (result === false) {\n display.warn(\"Can't dismiss view events using beforeSend!\");\n }\n }\n var rateLimitReached = (_a = eventRateLimiters[event.type]) === null || _a === void 0 ? void 0 : _a.isLimitReached();\n return !rateLimitReached;\n}\nfunction needToAssembleWithAction(event) {\n return [\"error\" /* RumEventType.ERROR */, \"resource\" /* RumEventType.RESOURCE */, \"long_task\" /* RumEventType.LONG_TASK */].indexOf(event.type) !== -1;\n}","import { getSyntheticsResultId, getSyntheticsTestId, willSyntheticsInjectRum } from '@datadog/browser-core';\nexport function getSyntheticsContext() {\n var testId = getSyntheticsTestId();\n var resultId = getSyntheticsResultId();\n if (testId && resultId) {\n return {\n test_id: testId,\n result_id: resultId,\n injected: willSyntheticsInjectRum()\n };\n }\n}","export function getCiTestContext() {\n var _a;\n var testExecutionId = (_a = window.Cypress) === null || _a === void 0 ? void 0 : _a.env('traceId');\n if (typeof testExecutionId === 'string') {\n return {\n test_execution_id: testExecutionId\n };\n }\n}","import { AbstractLifeCycle } from '@datadog/browser-core';\nexport var LifeCycle = AbstractLifeCycle;","import { SESSION_TIME_OUT_DELAY, ValueHistory } from '@datadog/browser-core';\nexport var VIEW_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startViewContexts(lifeCycle) {\n var viewContextHistory = new ValueHistory(VIEW_CONTEXT_TIME_OUT_DELAY);\n lifeCycle.subscribe(2 /* LifeCycleEventType.VIEW_CREATED */, function (view) {\n viewContextHistory.add(buildViewContext(view), view.startClocks.relative);\n });\n lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_ENDED */, function (_a) {\n var endClocks = _a.endClocks;\n viewContextHistory.closeActive(endClocks.relative);\n });\n lifeCycle.subscribe(8 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n viewContextHistory.reset();\n });\n function buildViewContext(view) {\n return {\n service: view.service,\n version: view.version,\n id: view.id,\n name: view.name,\n startClocks: view.startClocks\n };\n }\n return {\n findView: function findView(startTime) {\n return viewContextHistory.find(startTime);\n },\n stop: function stop() {\n viewContextHistory.stop();\n }\n };\n}","import { initFetchObservable, initXhrObservable, readBytesFromStream, elapsed, timeStampNow, tryToClone } from '@datadog/browser-core';\nimport { isAllowedRequestUrl } from './rumEventsCollection/resource/resourceUtils';\nimport { startTracer } from './tracing/tracer';\nvar nextRequestIndex = 1;\nexport function startRequestCollection(lifeCycle, configuration, sessionManager) {\n var tracer = startTracer(configuration, sessionManager);\n trackXhr(lifeCycle, configuration, tracer);\n trackFetch(lifeCycle, configuration, tracer);\n}\nexport function trackXhr(lifeCycle, configuration, tracer) {\n var subscription = initXhrObservable(configuration).subscribe(function (rawContext) {\n var context = rawContext;\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return;\n }\n switch (context.state) {\n case 'start':\n tracer.traceXhr(context, context.xhr);\n context.requestIndex = getNextRequestIndex();\n lifeCycle.notify(5 /* LifeCycleEventType.REQUEST_STARTED */, {\n requestIndex: context.requestIndex,\n url: context.url\n });\n break;\n case 'complete':\n tracer.clearTracingIfNeeded(context);\n lifeCycle.notify(6 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n duration: context.duration,\n method: context.method,\n requestIndex: context.requestIndex,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: \"xhr\" /* RequestType.XHR */,\n url: context.url,\n xhr: context.xhr\n });\n break;\n }\n });\n return {\n stop: function stop() {\n return subscription.unsubscribe();\n }\n };\n}\nexport function trackFetch(lifeCycle, configuration, tracer) {\n var subscription = initFetchObservable().subscribe(function (rawContext) {\n var context = rawContext;\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return;\n }\n switch (context.state) {\n case 'start':\n tracer.traceFetch(context);\n context.requestIndex = getNextRequestIndex();\n lifeCycle.notify(5 /* LifeCycleEventType.REQUEST_STARTED */, {\n requestIndex: context.requestIndex,\n url: context.url\n });\n break;\n case 'resolve':\n waitForResponseToComplete(context, function (duration) {\n tracer.clearTracingIfNeeded(context);\n lifeCycle.notify(6 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n duration: duration,\n method: context.method,\n requestIndex: context.requestIndex,\n responseType: context.responseType,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: \"fetch\" /* RequestType.FETCH */,\n url: context.url,\n response: context.response,\n init: context.init,\n input: context.input\n });\n });\n break;\n }\n });\n return {\n stop: function stop() {\n return subscription.unsubscribe();\n }\n };\n}\nfunction getNextRequestIndex() {\n var result = nextRequestIndex;\n nextRequestIndex += 1;\n return result;\n}\nfunction waitForResponseToComplete(context, callback) {\n var clonedResponse = context.response && tryToClone(context.response);\n if (!clonedResponse || !clonedResponse.body) {\n // do not try to wait for the response if the clone failed, fetch error or null body\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n } else {\n readBytesFromStream(clonedResponse.body, function () {\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n }, {\n bytesLimit: Number.POSITIVE_INFINITY,\n collectStreamBody: false\n });\n }\n}","import { noop } from '@datadog/browser-core';\nexport function trackEventCounts(_a) {\n var lifeCycle = _a.lifeCycle,\n isChildEvent = _a.isChildEvent,\n _b = _a.onChange,\n callback = _b === void 0 ? noop : _b;\n var eventCounts = {\n errorCount: 0,\n longTaskCount: 0,\n resourceCount: 0,\n actionCount: 0,\n frustrationCount: 0\n };\n var subscription = lifeCycle.subscribe(11 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) {\n if (event.type === 'view' || !isChildEvent(event)) {\n return;\n }\n switch (event.type) {\n case \"error\" /* RumEventType.ERROR */:\n eventCounts.errorCount += 1;\n callback();\n break;\n case \"action\" /* RumEventType.ACTION */:\n eventCounts.actionCount += 1;\n if (event.action.frustration) {\n eventCounts.frustrationCount += event.action.frustration.type.length;\n }\n callback();\n break;\n case \"long_task\" /* RumEventType.LONG_TASK */:\n eventCounts.longTaskCount += 1;\n callback();\n break;\n case \"resource\" /* RumEventType.RESOURCE */:\n eventCounts.resourceCount += 1;\n callback();\n break;\n }\n });\n return {\n stop: function stop() {\n subscription.unsubscribe();\n },\n eventCounts: eventCounts\n };\n}","import { instrumentMethodAndCallOriginal, matchList, monitor, Observable, timeStampNow, setTimeout, clearTimeout } from '@datadog/browser-core';\n// Delay to wait for a page activity to validate the tracking process\nexport var PAGE_ACTIVITY_VALIDATION_DELAY = 100;\n// Delay to wait after a page activity to end the tracking process\nexport var PAGE_ACTIVITY_END_DELAY = 100;\n/**\n * Wait for the page activity end\n *\n * Detection lifecycle:\n * ```\n * Wait page activity end\n * .-------------------'--------------------.\n * v v\n * [Wait for a page activity ] [Wait for a maximum duration]\n * [timeout: VALIDATION_DELAY] [ timeout: maxDuration ]\n * / \\ |\n * v v |\n * [No page activity] [Page activity] |\n * | |,----------------------. |\n * v v | |\n * (Discard) [Wait for a page activity] | |\n * [ timeout: END_DELAY ] | |\n * / \\ | |\n * v v | |\n * [No page activity] [Page activity] | |\n * | | | |\n * | '------------' |\n * '-----------. ,--------------------'\n * v\n * (End)\n * ```\n *\n * Note: by assuming that maxDuration is greater than VALIDATION_DELAY, we are sure that if the\n * process is still alive after maxDuration, it has been validated.\n */\nexport function waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, pageActivityEndCallback, maxDuration) {\n var pageActivityObservable = createPageActivityObservable(lifeCycle, domMutationObservable, configuration);\n return doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration);\n}\nexport function doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration) {\n var pageActivityEndTimeoutId;\n var hasCompleted = false;\n var validationTimeoutId = setTimeout(monitor(function () {\n return complete({\n hadActivity: false\n });\n }), PAGE_ACTIVITY_VALIDATION_DELAY);\n var maxDurationTimeoutId = maxDuration !== undefined ? setTimeout(monitor(function () {\n return complete({\n hadActivity: true,\n end: timeStampNow()\n });\n }), maxDuration) : undefined;\n var pageActivitySubscription = pageActivityObservable.subscribe(function (_a) {\n var isBusy = _a.isBusy;\n clearTimeout(validationTimeoutId);\n clearTimeout(pageActivityEndTimeoutId);\n var lastChangeTime = timeStampNow();\n if (!isBusy) {\n pageActivityEndTimeoutId = setTimeout(monitor(function () {\n return complete({\n hadActivity: true,\n end: lastChangeTime\n });\n }), PAGE_ACTIVITY_END_DELAY);\n }\n });\n var stop = function stop() {\n hasCompleted = true;\n clearTimeout(validationTimeoutId);\n clearTimeout(pageActivityEndTimeoutId);\n clearTimeout(maxDurationTimeoutId);\n pageActivitySubscription.unsubscribe();\n };\n function complete(event) {\n if (hasCompleted) {\n return;\n }\n stop();\n pageActivityEndCallback(event);\n }\n return {\n stop: stop\n };\n}\nexport function createPageActivityObservable(lifeCycle, domMutationObservable, configuration) {\n var observable = new Observable(function () {\n var subscriptions = [];\n var firstRequestIndex;\n var pendingRequestsCount = 0;\n subscriptions.push(domMutationObservable.subscribe(notifyPageActivity), lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n if (entries.some(function (entry) {\n return entry.entryType === 'resource' && !isExcludedUrl(configuration, entry.name);\n })) {\n notifyPageActivity();\n }\n }), lifeCycle.subscribe(5 /* LifeCycleEventType.REQUEST_STARTED */, function (startEvent) {\n if (isExcludedUrl(configuration, startEvent.url)) {\n return;\n }\n if (firstRequestIndex === undefined) {\n firstRequestIndex = startEvent.requestIndex;\n }\n pendingRequestsCount += 1;\n notifyPageActivity();\n }), lifeCycle.subscribe(6 /* LifeCycleEventType.REQUEST_COMPLETED */, function (request) {\n if (isExcludedUrl(configuration, request.url) || firstRequestIndex === undefined ||\n // If the request started before the tracking start, ignore it\n request.requestIndex < firstRequestIndex) {\n return;\n }\n pendingRequestsCount -= 1;\n notifyPageActivity();\n }));\n var stopTrackingWindowOpen = trackWindowOpen(notifyPageActivity).stop;\n return function () {\n stopTrackingWindowOpen();\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n };\n function notifyPageActivity() {\n observable.notify({\n isBusy: pendingRequestsCount > 0\n });\n }\n });\n return observable;\n}\nfunction isExcludedUrl(configuration, requestUrl) {\n return matchList(configuration.excludedActivityUrls, requestUrl);\n}\nfunction trackWindowOpen(callback) {\n return instrumentMethodAndCallOriginal(window, 'open', {\n before: callback\n });\n}","import { ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core';\nexport var MAX_DURATION_BETWEEN_CLICKS = ONE_SECOND;\nexport var MAX_DISTANCE_BETWEEN_CLICKS = 100;\nexport function createClickChain(firstClick, onFinalize) {\n var bufferedClicks = [];\n var status = 0 /* ClickChainStatus.WaitingForMoreClicks */;\n var maxDurationBetweenClicksTimeoutId;\n appendClick(firstClick);\n function appendClick(click) {\n click.stopObservable.subscribe(tryFinalize);\n bufferedClicks.push(click);\n clearTimeout(maxDurationBetweenClicksTimeoutId);\n maxDurationBetweenClicksTimeoutId = setTimeout(dontAcceptMoreClick, MAX_DURATION_BETWEEN_CLICKS);\n }\n function tryFinalize() {\n if (status === 1 /* ClickChainStatus.WaitingForClicksToStop */ && bufferedClicks.every(function (click) {\n return click.isStopped();\n })) {\n status = 2 /* ClickChainStatus.Finalized */;\n onFinalize(bufferedClicks);\n }\n }\n function dontAcceptMoreClick() {\n clearTimeout(maxDurationBetweenClicksTimeoutId);\n if (status === 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n status = 1 /* ClickChainStatus.WaitingForClicksToStop */;\n tryFinalize();\n }\n }\n return {\n tryAppend: function tryAppend(click) {\n if (status !== 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n return false;\n }\n if (bufferedClicks.length > 0 && !areEventsSimilar(bufferedClicks[bufferedClicks.length - 1].event, click.event)) {\n dontAcceptMoreClick();\n return false;\n }\n appendClick(click);\n return true;\n },\n stop: function stop() {\n dontAcceptMoreClick();\n }\n };\n}\n/**\n * Checks whether two events are similar by comparing their target, position and timestamp\n */\nfunction areEventsSimilar(first, second) {\n return first.target === second.target && mouseEventDistance(first, second) <= MAX_DISTANCE_BETWEEN_CLICKS && first.timeStamp - second.timeStamp <= MAX_DURATION_BETWEEN_CLICKS;\n}\nfunction mouseEventDistance(origin, other) {\n return Math.sqrt(Math.pow(origin.clientX - other.clientX, 2) + Math.pow(origin.clientY - other.clientY, 2));\n}","import { safeTruncate, isIE, find } from '@datadog/browser-core';\n/**\n * Get the action name from the attribute 'data-dd-action-name' on the element or any of its parent.\n * It can also be retrieved from a user defined attribute.\n */\nexport var DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE = 'data-dd-action-name';\nexport function getActionNameFromElement(element, userProgrammaticAttribute) {\n // Proceed to get the action name in two steps:\n // * first, get the name programmatically, explicitly defined by the user.\n // * then, use strategies that are known to return good results. Those strategies will be used on\n // the element and a few parents, but it's likely that they won't succeed at all.\n // * if no name is found this way, use strategies returning less accurate names as a fallback.\n // Those are much likely to succeed.\n return getActionNameFromElementProgrammatically(element, DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE) || userProgrammaticAttribute && getActionNameFromElementProgrammatically(element, userProgrammaticAttribute) || getActionNameFromElementForStrategies(element, userProgrammaticAttribute, priorityStrategies) || getActionNameFromElementForStrategies(element, userProgrammaticAttribute, fallbackStrategies) || '';\n}\nfunction getActionNameFromElementProgrammatically(targetElement, programmaticAttribute) {\n var elementWithAttribute;\n // We don't use getActionNameFromElementForStrategies here, because we want to consider all parents,\n // without limit. It is up to the user to declare a relevant naming strategy.\n // If available, use element.closest() to match get the attribute from the element or any of its\n // parent. Else fallback to a more traditional implementation.\n if (supportsElementClosest()) {\n elementWithAttribute = targetElement.closest(\"[\".concat(programmaticAttribute, \"]\"));\n } else {\n var element = targetElement;\n while (element) {\n if (element.hasAttribute(programmaticAttribute)) {\n elementWithAttribute = element;\n break;\n }\n element = element.parentElement;\n }\n }\n if (!elementWithAttribute) {\n return;\n }\n var name = elementWithAttribute.getAttribute(programmaticAttribute);\n return truncate(normalizeWhitespace(name.trim()));\n}\nvar priorityStrategies = [\n// associated LABEL text\nfunction (element, userProgrammaticAttribute) {\n // IE does not support element.labels, so we fallback to a CSS selector based on the element id\n // instead\n if (supportsLabelProperty()) {\n if ('labels' in element && element.labels && element.labels.length > 0) {\n return getTextualContent(element.labels[0], userProgrammaticAttribute);\n }\n } else if (element.id) {\n var label = element.ownerDocument && find(element.ownerDocument.querySelectorAll('label'), function (label) {\n return label.htmlFor === element.id;\n });\n return label && getTextualContent(label, userProgrammaticAttribute);\n }\n},\n// INPUT button (and associated) value\nfunction (element) {\n if (element.nodeName === 'INPUT') {\n var input = element;\n var type = input.getAttribute('type');\n if (type === 'button' || type === 'submit' || type === 'reset') {\n return input.value;\n }\n }\n},\n// BUTTON, LABEL or button-like element text\nfunction (element, userProgrammaticAttribute) {\n if (element.nodeName === 'BUTTON' || element.nodeName === 'LABEL' || element.getAttribute('role') === 'button') {\n return getTextualContent(element, userProgrammaticAttribute);\n }\n}, function (element) {\n return element.getAttribute('aria-label');\n},\n// associated element text designated by the aria-labelledby attribute\nfunction (element, userProgrammaticAttribute) {\n var labelledByAttribute = element.getAttribute('aria-labelledby');\n if (labelledByAttribute) {\n return labelledByAttribute.split(/\\s+/).map(function (id) {\n return getElementById(element, id);\n }).filter(function (label) {\n return Boolean(label);\n }).map(function (element) {\n return getTextualContent(element, userProgrammaticAttribute);\n }).join(' ');\n }\n}, function (element) {\n return element.getAttribute('alt');\n}, function (element) {\n return element.getAttribute('name');\n}, function (element) {\n return element.getAttribute('title');\n}, function (element) {\n return element.getAttribute('placeholder');\n},\n// SELECT first OPTION text\nfunction (element, userProgrammaticAttribute) {\n if ('options' in element && element.options.length > 0) {\n return getTextualContent(element.options[0], userProgrammaticAttribute);\n }\n}];\nvar fallbackStrategies = [function (element, userProgrammaticAttribute) {\n return getTextualContent(element, userProgrammaticAttribute);\n}];\n/**\n * Iterates over the target element and its parent, using the strategies list to get an action name.\n * Each strategies are applied on each element, stopping as soon as a non-empty value is returned.\n */\nvar MAX_PARENTS_TO_CONSIDER = 10;\nfunction getActionNameFromElementForStrategies(targetElement, userProgrammaticAttribute, strategies) {\n var element = targetElement;\n var recursionCounter = 0;\n while (recursionCounter <= MAX_PARENTS_TO_CONSIDER && element && element.nodeName !== 'BODY' && element.nodeName !== 'HTML' && element.nodeName !== 'HEAD') {\n for (var _i = 0, strategies_1 = strategies; _i < strategies_1.length; _i++) {\n var strategy = strategies_1[_i];\n var name_1 = strategy(element, userProgrammaticAttribute);\n if (typeof name_1 === 'string') {\n var trimmedName = name_1.trim();\n if (trimmedName) {\n return truncate(normalizeWhitespace(trimmedName));\n }\n }\n }\n // Consider a FORM as a contextual limit to get the action name. This is experimental and may\n // be reconsidered in the future.\n if (element.nodeName === 'FORM') {\n break;\n }\n element = element.parentElement;\n recursionCounter += 1;\n }\n}\nfunction normalizeWhitespace(s) {\n return s.replace(/\\s+/g, ' ');\n}\nfunction truncate(s) {\n return s.length > 100 ? \"\".concat(safeTruncate(s, 100), \" [...]\") : s;\n}\nfunction getElementById(refElement, id) {\n // Use the element ownerDocument here, because tests are executed in an iframe, so\n // document.getElementById won't work.\n return refElement.ownerDocument ? refElement.ownerDocument.getElementById(id) : null;\n}\nfunction getTextualContent(element, userProgrammaticAttribute) {\n if (element.isContentEditable) {\n return;\n }\n if ('innerText' in element) {\n var text_1 = element.innerText;\n var removeTextFromElements = function removeTextFromElements(query) {\n var list = element.querySelectorAll(query);\n for (var index = 0; index < list.length; index += 1) {\n var element_1 = list[index];\n if ('innerText' in element_1) {\n var textToReplace = element_1.innerText;\n if (textToReplace && textToReplace.trim().length > 0) {\n text_1 = text_1.replace(textToReplace, '');\n }\n }\n }\n };\n if (!supportsInnerTextScriptAndStyleRemoval()) {\n // remove the inner text of SCRIPT and STYLES from the result. This is a bit dirty, but should\n // be relatively fast and work in most cases.\n removeTextFromElements('script, style');\n }\n // remove the text of elements with programmatic attribute value\n removeTextFromElements(\"[\".concat(DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE, \"]\"));\n if (userProgrammaticAttribute) {\n removeTextFromElements(\"[\".concat(userProgrammaticAttribute, \"]\"));\n }\n return text_1;\n }\n return element.textContent;\n}\n/**\n * Returns true if element.innerText excludes the text from inline SCRIPT and STYLE element. This\n * should be the case everywhere except on Internet Explorer 10 and 11 (see [1])\n *\n * The innerText property relies on what is actually rendered to compute its output, so to check if\n * it actually excludes SCRIPT and STYLE content, a solution would be to create a style element, set\n * its content to '*', inject it in the document body, and check if the style element innerText\n * property returns '*'. Using a new `document` instance won't work as it is not rendered.\n *\n * This solution requires specific CSP rules (see [2]) to be set by the customer. We want to avoid\n * this, so instead we rely on browser detection. In case of false negative, the impact should be\n * low, since we rely on this result to remove the SCRIPT and STYLE innerText (which will be empty)\n * from a parent element innerText.\n *\n * [1]: https://web.archive.org/web/20210602165716/http://perfectionkills.com/the-poor-misunderstood-innerText/#diff-with-textContent\n * [2]: https://github.com/DataDog/browser-sdk/issues/1084\n */\nfunction supportsInnerTextScriptAndStyleRemoval() {\n return !isIE();\n}\n/**\n * Returns true if the browser supports the element.labels property. This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsLabelPropertyResult;\nfunction supportsLabelProperty() {\n if (supportsLabelPropertyResult === undefined) {\n supportsLabelPropertyResult = 'labels' in HTMLInputElement.prototype;\n }\n return supportsLabelPropertyResult;\n}\n/**\n * Returns true if the browser supports the element.closest method. This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsElementClosestResult;\nfunction supportsElementClosest() {\n if (supportsElementClosestResult === undefined) {\n supportsElementClosestResult = 'closest' in HTMLElement.prototype;\n }\n return supportsElementClosestResult;\n}","import { cssEscape } from '@datadog/browser-core';\nimport { DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE } from './getActionNameFromElement';\n/**\n * Stable attributes are attributes that are commonly used to identify parts of a UI (ex:\n * component). Those attribute values should not be generated randomly (hardcoded most of the time)\n * and stay the same across deploys. They are not necessarily unique across the document.\n */\nexport var STABLE_ATTRIBUTES = [DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,\n// Common test attributes (list provided by google recorder)\n'data-testid', 'data-test', 'data-qa', 'data-cy', 'data-test-id', 'data-qa-id', 'data-testing',\n// FullStory decorator attributes:\n'data-component', 'data-element', 'data-source-file'];\n// Selectors to use if they target a single element on the whole document. Those selectors are\n// considered as \"stable\" and uniquely identify an element regardless of the page state. If we find\n// one, we should consider the selector \"complete\" and stop iterating over ancestors.\nvar GLOBALLY_UNIQUE_SELECTOR_GETTERS = [getStableAttributeSelector, getIDSelector];\n// Selectors to use if they target a single element among an element descendants. Those selectors\n// are more brittle than \"globally unique\" selectors and should be combined with ancestor selectors\n// to improve specificity.\nvar UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS = [getStableAttributeSelector, getClassSelector, getTagNameSelector];\nexport function getSelectorFromElement(targetElement, actionNameAttribute) {\n var targetElementSelector = '';\n var element = targetElement;\n while (element && element.nodeName !== 'HTML') {\n var globallyUniqueSelector = findSelector(element, GLOBALLY_UNIQUE_SELECTOR_GETTERS, isSelectorUniqueGlobally, actionNameAttribute, targetElementSelector);\n if (globallyUniqueSelector) {\n return globallyUniqueSelector;\n }\n var uniqueSelectorAmongChildren = findSelector(element, UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS, isSelectorUniqueAmongSiblings, actionNameAttribute, targetElementSelector);\n targetElementSelector = uniqueSelectorAmongChildren || combineSelector(getPositionSelector(element), targetElementSelector);\n element = element.parentElement;\n }\n return targetElementSelector;\n}\nfunction isGeneratedValue(value) {\n // To compute the \"URL path group\", the backend replaces every URL path parts as a question mark\n // if it thinks the part is an identifier. The condition it uses is to checks whether a digit is\n // present.\n //\n // Here, we use the same strategy: if a the value contains a digit, we consider it generated. This\n // strategy might be a bit naive and fail in some cases, but there are many fallbacks to generate\n // CSS selectors so it should be fine most of the time. We might want to allow customers to\n // provide their own `isGeneratedValue` at some point.\n return /[0-9]/.test(value);\n}\nfunction getIDSelector(element) {\n if (element.id && !isGeneratedValue(element.id)) {\n return \"#\".concat(cssEscape(element.id));\n }\n}\nfunction getClassSelector(element) {\n if (element.tagName === 'BODY') {\n return;\n }\n if (element.classList.length > 0) {\n for (var i = 0; i < element.classList.length; i += 1) {\n var className = element.classList[i];\n if (isGeneratedValue(className)) {\n continue;\n }\n return \"\".concat(cssEscape(element.tagName), \".\").concat(cssEscape(className));\n }\n }\n}\nfunction getTagNameSelector(element) {\n return cssEscape(element.tagName);\n}\nfunction getStableAttributeSelector(element, actionNameAttribute) {\n if (actionNameAttribute) {\n var selector = getAttributeSelector(actionNameAttribute);\n if (selector) {\n return selector;\n }\n }\n for (var _i = 0, STABLE_ATTRIBUTES_1 = STABLE_ATTRIBUTES; _i < STABLE_ATTRIBUTES_1.length; _i++) {\n var attributeName = STABLE_ATTRIBUTES_1[_i];\n var selector = getAttributeSelector(attributeName);\n if (selector) {\n return selector;\n }\n }\n function getAttributeSelector(attributeName) {\n if (element.hasAttribute(attributeName)) {\n return \"\".concat(cssEscape(element.tagName), \"[\").concat(attributeName, \"=\\\"\").concat(cssEscape(element.getAttribute(attributeName)), \"\\\"]\");\n }\n }\n}\nfunction getPositionSelector(element) {\n var sibling = element.parentElement.firstElementChild;\n var elementIndex = 1;\n while (sibling && sibling !== element) {\n if (sibling.tagName === element.tagName) {\n elementIndex += 1;\n }\n sibling = sibling.nextElementSibling;\n }\n return \"\".concat(cssEscape(element.tagName), \":nth-of-type(\").concat(elementIndex, \")\");\n}\nfunction findSelector(element, selectorGetters, predicate, actionNameAttribute, childSelector) {\n for (var _i = 0, selectorGetters_1 = selectorGetters; _i < selectorGetters_1.length; _i++) {\n var selectorGetter = selectorGetters_1[_i];\n var elementSelector = selectorGetter(element, actionNameAttribute);\n if (!elementSelector) {\n continue;\n }\n var fullSelector = combineSelector(elementSelector, childSelector);\n if (predicate(element, fullSelector)) {\n return fullSelector;\n }\n }\n}\n/**\n * Check whether the selector is unique among the whole document.\n */\nfunction isSelectorUniqueGlobally(element, selector) {\n return element.ownerDocument.querySelectorAll(selector).length === 1;\n}\n/**\n * Check whether the selector is unique among the element siblings. In other words, it returns true\n * if \"ELEMENT_PARENT > SELECTOR\" returns a single element.\n *\n * The result will be less accurate on browsers that don't support :scope (i. e. IE): it will check\n * for any element matching the selector contained in the parent (in other words,\n * \"ELEMENT_PARENT SELECTOR\" returns a single element), regardless of whether the selector is a\n * direct descendent of the element parent. This should not impact results too much: if it\n * inaccurately returns false, we'll just fall back to another strategy.\n */\nfunction isSelectorUniqueAmongSiblings(element, selector) {\n return element.parentElement.querySelectorAll(supportScopeSelector() ? combineSelector(':scope', selector) : selector).length === 1;\n}\nfunction combineSelector(parent, child) {\n return child ? \"\".concat(parent, \">\").concat(child) : parent;\n}\nvar supportScopeSelectorCache;\nexport function supportScopeSelector() {\n if (supportScopeSelectorCache === undefined) {\n try {\n document.querySelector(':scope');\n supportScopeSelectorCache = true;\n } catch (_a) {\n supportScopeSelectorCache = false;\n }\n }\n return supportScopeSelectorCache;\n}","import { addEventListener } from '@datadog/browser-core';\nexport function listenActionEvents(configuration, _a) {\n var onPointerDown = _a.onPointerDown,\n onPointerUp = _a.onPointerUp;\n var selectionEmptyAtPointerDown;\n var userActivity = {\n selection: false,\n input: false\n };\n var clickContext;\n var listeners = [addEventListener(configuration, window, \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */, function (event) {\n if (isValidPointerEvent(event)) {\n selectionEmptyAtPointerDown = isSelectionEmpty();\n userActivity = {\n selection: false,\n input: false\n };\n clickContext = onPointerDown(event);\n }\n }, {\n capture: true\n }), addEventListener(configuration, window, \"selectionchange\" /* DOM_EVENT.SELECTION_CHANGE */, function () {\n if (!selectionEmptyAtPointerDown || !isSelectionEmpty()) {\n userActivity.selection = true;\n }\n }, {\n capture: true\n }), addEventListener(configuration, window, \"pointerup\" /* DOM_EVENT.POINTER_UP */, function (event) {\n if (isValidPointerEvent(event) && clickContext) {\n // Use a scoped variable to make sure the value is not changed by other clicks\n var localUserActivity_1 = userActivity;\n onPointerUp(clickContext, event, function () {\n return localUserActivity_1;\n });\n clickContext = undefined;\n }\n }, {\n capture: true\n }), addEventListener(configuration, window, \"input\" /* DOM_EVENT.INPUT */, function () {\n userActivity.input = true;\n }, {\n capture: true\n })];\n return {\n stop: function stop() {\n listeners.forEach(function (listener) {\n return listener.stop();\n });\n }\n };\n}\nfunction isSelectionEmpty() {\n var selection = window.getSelection();\n return !selection || selection.isCollapsed;\n}\nfunction isValidPointerEvent(event) {\n return event.target instanceof Element &&\n // Only consider 'primary' pointer events for now. Multi-touch support could be implemented in\n // the future.\n event.isPrimary !== false;\n}","import { elementMatches, ONE_SECOND } from '@datadog/browser-core';\nvar MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE = 3;\nexport function computeFrustration(clicks, rageClick) {\n if (isRage(clicks)) {\n rageClick.addFrustration(\"rage_click\" /* FrustrationType.RAGE_CLICK */);\n if (clicks.some(isDead)) {\n rageClick.addFrustration(\"dead_click\" /* FrustrationType.DEAD_CLICK */);\n }\n if (rageClick.hasError) {\n rageClick.addFrustration(\"error_click\" /* FrustrationType.ERROR_CLICK */);\n }\n return {\n isRage: true\n };\n }\n var hasSelectionChanged = clicks.some(function (click) {\n return click.getUserActivity().selection;\n });\n clicks.forEach(function (click) {\n if (click.hasError) {\n click.addFrustration(\"error_click\" /* FrustrationType.ERROR_CLICK */);\n }\n if (isDead(click) &&\n // Avoid considering clicks part of a double-click or triple-click selections as dead clicks\n !hasSelectionChanged) {\n click.addFrustration(\"dead_click\" /* FrustrationType.DEAD_CLICK */);\n }\n });\n return {\n isRage: false\n };\n}\nexport function isRage(clicks) {\n if (clicks.some(function (click) {\n return click.getUserActivity().selection;\n })) {\n return false;\n }\n for (var i = 0; i < clicks.length - (MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1); i += 1) {\n if (clicks[i + MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1].event.timeStamp - clicks[i].event.timeStamp <= ONE_SECOND) {\n return true;\n }\n }\n return false;\n}\nvar DEAD_CLICK_EXCLUDE_SELECTOR =\n// inputs that don't trigger a meaningful event like \"input\" when clicked, including textual\n// inputs (using a negative selector is shorter here)\n'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"button\"]):not([type=\"submit\"]):not([type=\"reset\"]):not([type=\"range\"]),' + 'textarea,' + 'select,' +\n// contenteditable and their descendants don't always trigger meaningful changes when manipulated\n'[contenteditable],' + '[contenteditable] *,' +\n// canvas, as there is no good way to detect activity occurring on them\n'canvas,' +\n// links that are interactive (have an href attribute) or any of their descendants, as they can\n// open a new tab or navigate to a hash without triggering a meaningful event\n'a[href],' + 'a[href] *';\nexport function isDead(click) {\n if (click.hasPageActivity || click.getUserActivity().input) {\n return false;\n }\n return !elementMatches(click.event.target, DEAD_CLICK_EXCLUDE_SELECTOR);\n}","import { includes, timeStampNow, Observable, assign, getRelativeTime, ONE_MINUTE, ValueHistory, generateUUID, clocksNow, ONE_SECOND, elapsed } from '@datadog/browser-core';\nimport { trackEventCounts } from '../../trackEventCounts';\nimport { PAGE_ACTIVITY_VALIDATION_DELAY, waitPageActivityEnd } from '../../waitPageActivityEnd';\nimport { createClickChain } from './clickChain';\nimport { getActionNameFromElement } from './getActionNameFromElement';\nimport { getSelectorFromElement } from './getSelectorFromElement';\nimport { listenActionEvents } from './listenActionEvents';\nimport { computeFrustration } from './computeFrustration';\n// Maximum duration for click actions\nexport var CLICK_ACTION_MAX_DURATION = 10 * ONE_SECOND;\nexport var ACTION_CONTEXT_TIME_OUT_DELAY = 5 * ONE_MINUTE; // arbitrary\nexport function trackClickActions(lifeCycle, domMutationObservable, configuration) {\n var history = new ValueHistory(ACTION_CONTEXT_TIME_OUT_DELAY);\n var stopObservable = new Observable();\n var currentClickChain;\n lifeCycle.subscribe(8 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n history.reset();\n });\n lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_ENDED */, stopClickChain);\n var stopActionEventsListener = listenActionEvents(configuration, {\n onPointerDown: function onPointerDown(pointerDownEvent) {\n return processPointerDown(configuration, lifeCycle, domMutationObservable, history, pointerDownEvent);\n },\n onPointerUp: function onPointerUp(_a, startEvent, getUserActivity) {\n var clickActionBase = _a.clickActionBase,\n hadActivityOnPointerDown = _a.hadActivityOnPointerDown;\n return startClickAction(configuration, lifeCycle, domMutationObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown);\n }\n }).stop;\n var actionContexts = {\n findActionId: function findActionId(startTime) {\n return configuration.trackFrustrations ? history.findAll(startTime) : history.find(startTime);\n }\n };\n return {\n stop: function stop() {\n stopClickChain();\n stopObservable.notify();\n stopActionEventsListener();\n },\n actionContexts: actionContexts\n };\n function appendClickToClickChain(click) {\n if (!currentClickChain || !currentClickChain.tryAppend(click)) {\n var rageClick_1 = click.clone();\n currentClickChain = createClickChain(click, function (clicks) {\n finalizeClicks(clicks, rageClick_1);\n });\n }\n }\n function stopClickChain() {\n if (currentClickChain) {\n currentClickChain.stop();\n }\n }\n}\nfunction processPointerDown(configuration, lifeCycle, domMutationObservable, history, pointerDownEvent) {\n if (!configuration.trackFrustrations && history.find()) {\n // TODO: remove this in a future major version. To keep retrocompatibility, ignore any new\n // action if another one is already occurring.\n return;\n }\n var clickActionBase = computeClickActionBase(pointerDownEvent, configuration.actionNameAttribute);\n if (!configuration.trackFrustrations && !clickActionBase.name) {\n // TODO: remove this in a future major version. To keep retrocompatibility, ignore any action\n // with a blank name\n return;\n }\n var _hadActivityOnPointerDown = false;\n waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, function (pageActivityEndEvent) {\n _hadActivityOnPointerDown = pageActivityEndEvent.hadActivity;\n },\n // We don't care about the activity duration, we just want to know whether an activity did happen\n // within the \"validation delay\" or not. Limit the duration so the callback is called sooner.\n PAGE_ACTIVITY_VALIDATION_DELAY);\n return {\n clickActionBase: clickActionBase,\n hadActivityOnPointerDown: function hadActivityOnPointerDown() {\n return _hadActivityOnPointerDown;\n }\n };\n}\nfunction startClickAction(configuration, lifeCycle, domMutationObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown) {\n var click = newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent);\n if (configuration.trackFrustrations) {\n appendClickToClickChain(click);\n }\n var stopWaitPageActivityEnd = waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, function (pageActivityEndEvent) {\n if (pageActivityEndEvent.hadActivity && pageActivityEndEvent.end < click.startClocks.timeStamp) {\n // If the clock is looking weird, just discard the click\n click.discard();\n } else {\n if (pageActivityEndEvent.hadActivity) {\n click.stop(pageActivityEndEvent.end);\n } else if (hadActivityOnPointerDown()) {\n click.stop(\n // using the click start as activity end, so the click will have some activity but its\n // duration will be 0 (as the activity started before the click start)\n click.startClocks.timeStamp);\n } else {\n click.stop();\n }\n // Validate or discard the click only if we don't track frustrations. It'll be done when\n // the click chain is finalized.\n if (!configuration.trackFrustrations) {\n if (!pageActivityEndEvent.hadActivity) {\n // If we are not tracking frustrations, we should discard the click to keep backward\n // compatibility.\n click.discard();\n } else {\n click.validate();\n }\n }\n }\n }, CLICK_ACTION_MAX_DURATION).stop;\n var viewEndedSubscription = lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_ENDED */, function (_a) {\n var endClocks = _a.endClocks;\n click.stop(endClocks.timeStamp);\n });\n var stopSubscription = stopObservable.subscribe(function () {\n click.stop();\n });\n click.stopObservable.subscribe(function () {\n viewEndedSubscription.unsubscribe();\n stopWaitPageActivityEnd();\n stopSubscription.unsubscribe();\n });\n}\nfunction computeClickActionBase(event, actionNameAttribute) {\n var rect = event.target.getBoundingClientRect();\n return {\n type: \"click\" /* ActionType.CLICK */,\n target: {\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n selector: getSelectorFromElement(event.target, actionNameAttribute)\n },\n position: {\n // Use clientX and Y because for SVG element offsetX and Y are relatives to the element\n x: Math.round(event.clientX - rect.left),\n y: Math.round(event.clientY - rect.top)\n },\n name: getActionNameFromElement(event.target, actionNameAttribute)\n };\n}\nfunction newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent) {\n var id = generateUUID();\n var startClocks = clocksNow();\n var historyEntry = history.add(id, startClocks.relative);\n var eventCountsSubscription = trackEventCounts({\n lifeCycle: lifeCycle,\n isChildEvent: function isChildEvent(event) {\n return event.action !== undefined && (Array.isArray(event.action.id) ? includes(event.action.id, id) : event.action.id === id);\n }\n });\n var status = 0 /* ClickStatus.ONGOING */;\n var activityEndTime;\n var frustrationTypes = [];\n var stopObservable = new Observable();\n function stop(newActivityEndTime) {\n if (status !== 0 /* ClickStatus.ONGOING */) {\n return;\n }\n activityEndTime = newActivityEndTime;\n status = 1 /* ClickStatus.STOPPED */;\n if (activityEndTime) {\n historyEntry.close(getRelativeTime(activityEndTime));\n } else {\n historyEntry.remove();\n }\n eventCountsSubscription.stop();\n stopObservable.notify();\n }\n return {\n event: startEvent,\n stop: stop,\n stopObservable: stopObservable,\n get hasError() {\n return eventCountsSubscription.eventCounts.errorCount > 0;\n },\n get hasPageActivity() {\n return activityEndTime !== undefined;\n },\n getUserActivity: getUserActivity,\n addFrustration: function addFrustration(frustrationType) {\n frustrationTypes.push(frustrationType);\n },\n startClocks: startClocks,\n isStopped: function isStopped() {\n return status === 1 /* ClickStatus.STOPPED */ || status === 2 /* ClickStatus.FINALIZED */;\n },\n clone: function clone() {\n return newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent);\n },\n validate: function validate(domEvents) {\n stop();\n if (status !== 1 /* ClickStatus.STOPPED */) {\n return;\n }\n var _a = eventCountsSubscription.eventCounts,\n resourceCount = _a.resourceCount,\n errorCount = _a.errorCount,\n longTaskCount = _a.longTaskCount;\n var clickAction = assign({\n type: \"click\" /* ActionType.CLICK */,\n duration: activityEndTime && elapsed(startClocks.timeStamp, activityEndTime),\n startClocks: startClocks,\n id: id,\n frustrationTypes: frustrationTypes,\n counts: {\n resourceCount: resourceCount,\n errorCount: errorCount,\n longTaskCount: longTaskCount\n },\n events: domEvents !== null && domEvents !== void 0 ? domEvents : [startEvent],\n event: startEvent\n }, clickActionBase);\n lifeCycle.notify(1 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, clickAction);\n status = 2 /* ClickStatus.FINALIZED */;\n },\n discard: function discard() {\n stop();\n status = 2 /* ClickStatus.FINALIZED */;\n }\n };\n}\nexport function finalizeClicks(clicks, rageClick) {\n var isRage = computeFrustration(clicks, rageClick).isRage;\n if (isRage) {\n clicks.forEach(function (click) {\n return click.discard();\n });\n rageClick.stop(timeStampNow());\n rageClick.validate(clicks.map(function (click) {\n return click.event;\n }));\n } else {\n rageClick.discard();\n clicks.forEach(function (click) {\n return click.validate();\n });\n }\n}","import { noop, assign, combine, toServerDuration, generateUUID } from '@datadog/browser-core';\nimport { trackClickActions } from './trackClickActions';\nexport function startActionCollection(lifeCycle, domMutationObservable, configuration, pageStateHistory) {\n lifeCycle.subscribe(1 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, function (action) {\n return lifeCycle.notify(10 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processAction(action, pageStateHistory));\n });\n var actionContexts = {\n findActionId: noop\n };\n if (configuration.trackUserInteractions) {\n actionContexts = trackClickActions(lifeCycle, domMutationObservable, configuration).actionContexts;\n }\n return {\n addAction: function addAction(action, savedCommonContext) {\n lifeCycle.notify(10 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, assign({\n savedCommonContext: savedCommonContext\n }, processAction(action, pageStateHistory)));\n },\n actionContexts: actionContexts\n };\n}\nfunction processAction(action, pageStateHistory) {\n var autoActionProperties = isAutoAction(action) ? {\n action: {\n id: action.id,\n loading_time: toServerDuration(action.duration),\n frustration: {\n type: action.frustrationTypes\n },\n error: {\n count: action.counts.errorCount\n },\n long_task: {\n count: action.counts.longTaskCount\n },\n resource: {\n count: action.counts.resourceCount\n }\n },\n _dd: {\n action: {\n target: action.target,\n position: action.position\n }\n }\n } : undefined;\n var customerContext = !isAutoAction(action) ? action.context : undefined;\n var actionEvent = combine({\n action: {\n id: generateUUID(),\n target: {\n name: action.name\n },\n type: action.type\n },\n date: action.startClocks.timeStamp,\n type: \"action\" /* RumEventType.ACTION */,\n view: {\n in_foreground: pageStateHistory.isInActivePageStateAt(action.startClocks.relative)\n }\n }, autoActionProperties);\n return {\n customerContext: customerContext,\n rawRumEvent: actionEvent,\n startTime: action.startClocks.relative,\n domainContext: isAutoAction(action) ? {\n event: action.event,\n events: action.events\n } : {}\n };\n}\nfunction isAutoAction(action) {\n return action.type !== \"custom\" /* ActionType.CUSTOM */;\n}","import { isEmptyObject, assign, ErrorSource, generateUUID, computeRawError, computeStackTrace, Observable, trackRuntimeError } from '@datadog/browser-core';\nimport { trackConsoleError } from './trackConsoleError';\nimport { trackReportError } from './trackReportError';\nexport function startErrorCollection(lifeCycle, configuration, pageStateHistory, featureFlagContexts) {\n var errorObservable = new Observable();\n trackConsoleError(errorObservable);\n trackRuntimeError(errorObservable);\n trackReportError(configuration, errorObservable);\n errorObservable.subscribe(function (error) {\n return lifeCycle.notify(12 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, {\n error: error\n });\n });\n return doStartErrorCollection(lifeCycle, pageStateHistory, featureFlagContexts);\n}\nexport function doStartErrorCollection(lifeCycle, pageStateHistory, featureFlagContexts) {\n lifeCycle.subscribe(12 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, function (_a) {\n var error = _a.error,\n customerContext = _a.customerContext,\n savedCommonContext = _a.savedCommonContext;\n lifeCycle.notify(10 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, assign({\n customerContext: customerContext,\n savedCommonContext: savedCommonContext\n }, processError(error, pageStateHistory, featureFlagContexts)));\n });\n return {\n addError: function addError(_a, savedCommonContext) {\n var error = _a.error,\n handlingStack = _a.handlingStack,\n startClocks = _a.startClocks,\n customerContext = _a.context;\n var stackTrace = error instanceof Error ? computeStackTrace(error) : undefined;\n var rawError = computeRawError({\n stackTrace: stackTrace,\n originalError: error,\n handlingStack: handlingStack,\n startClocks: startClocks,\n nonErrorPrefix: \"Provided\" /* NonErrorPrefix.PROVIDED */,\n source: ErrorSource.CUSTOM,\n handling: \"handled\" /* ErrorHandling.HANDLED */\n });\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, {\n customerContext: customerContext,\n savedCommonContext: savedCommonContext,\n error: rawError\n });\n }\n };\n}\nfunction processError(error, pageStateHistory, featureFlagContexts) {\n var rawRumEvent = {\n date: error.startClocks.timeStamp,\n error: {\n id: generateUUID(),\n message: error.message,\n source: error.source,\n stack: error.stack,\n handling_stack: error.handlingStack,\n type: error.type,\n handling: error.handling,\n causes: error.causes,\n source_type: 'browser',\n fingerprint: error.fingerprint\n },\n type: \"error\" /* RumEventType.ERROR */,\n view: {\n in_foreground: pageStateHistory.isInActivePageStateAt(error.startClocks.relative)\n }\n };\n var featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(error.startClocks.relative);\n if (featureFlagContext && !isEmptyObject(featureFlagContext)) {\n rawRumEvent.feature_flags = featureFlagContext;\n }\n return {\n rawRumEvent: rawRumEvent,\n startTime: error.startClocks.relative,\n domainContext: {\n error: error.originalError\n }\n };\n}","import { clocksNow, initConsoleObservable, ErrorSource, ConsoleApiName } from '@datadog/browser-core';\nexport function trackConsoleError(errorObservable) {\n var subscription = initConsoleObservable([ConsoleApiName.error]).subscribe(function (consoleError) {\n return errorObservable.notify({\n startClocks: clocksNow(),\n message: consoleError.message,\n stack: consoleError.stack,\n fingerprint: consoleError.fingerprint,\n source: ErrorSource.CONSOLE,\n handling: \"handled\" /* ErrorHandling.HANDLED */,\n handlingStack: consoleError.handlingStack\n });\n });\n return {\n stop: function stop() {\n subscription.unsubscribe();\n }\n };\n}","import { clocksNow, ErrorSource, initReportObservable, RawReportType } from '@datadog/browser-core';\nexport function trackReportError(configuration, errorObservable) {\n var subscription = initReportObservable(configuration, [RawReportType.cspViolation, RawReportType.intervention]).subscribe(function (reportError) {\n return errorObservable.notify({\n startClocks: clocksNow(),\n message: reportError.message,\n stack: reportError.stack,\n type: reportError.subtype,\n source: ErrorSource.REPORT,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */\n });\n });\n return {\n stop: function stop() {\n subscription.unsubscribe();\n }\n };\n}","import { addEventListeners } from '@datadog/browser-core';\nvar trackFirstHiddenSingleton;\nvar stopListeners;\nexport function trackFirstHidden(configuration, eventTarget) {\n if (eventTarget === void 0) {\n eventTarget = window;\n }\n if (!trackFirstHiddenSingleton) {\n if (document.visibilityState === 'hidden') {\n trackFirstHiddenSingleton = {\n timeStamp: 0\n };\n } else {\n trackFirstHiddenSingleton = {\n timeStamp: Infinity\n };\n stopListeners = addEventListeners(configuration, eventTarget, [\"pagehide\" /* DOM_EVENT.PAGE_HIDE */, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */], function (event) {\n if (event.type === 'pagehide' || document.visibilityState === 'hidden') {\n trackFirstHiddenSingleton.timeStamp = event.timeStamp;\n stopListeners();\n }\n }, {\n capture: true\n }).stop;\n }\n }\n return trackFirstHiddenSingleton;\n}\nexport function resetFirstHidden() {\n if (stopListeners) {\n stopListeners();\n }\n trackFirstHiddenSingleton = undefined;\n}","import { addDuration } from '@datadog/browser-core';\nimport { toValidEntry } from './resourceUtils';\n/**\n * Look for corresponding timing in resource timing buffer\n *\n * Observations:\n * - Timing (start, end) are nested inside the request (start, end)\n * - Some timing can be not exactly nested, being off by < 1 ms\n *\n * Strategy:\n * - from valid nested entries (with 1 ms error margin)\n * - if a single timing match, return the timing\n * - otherwise we can't decide, return undefined\n */\nexport function matchRequestTiming(request) {\n if (!performance || !('getEntriesByName' in performance)) {\n return;\n }\n var sameNameEntries = performance.getEntriesByName(request.url, 'resource');\n if (!sameNameEntries.length || !('toJSON' in sameNameEntries[0])) {\n return;\n }\n var candidates = sameNameEntries.map(function (entry) {\n return entry.toJSON();\n }).filter(toValidEntry).filter(function (entry) {\n return isBetween(entry, request.startClocks.relative, endTime({\n startTime: request.startClocks.relative,\n duration: request.duration\n }));\n });\n if (candidates.length === 1) {\n return candidates[0];\n }\n return;\n}\nfunction endTime(timing) {\n return addDuration(timing.startTime, timing.duration);\n}\nfunction isBetween(timing, start, end) {\n var errorMargin = 1;\n return timing.startTime >= start - errorMargin && endTime(timing) <= addDuration(end, errorMargin);\n}","import { combine, generateUUID, toServerDuration, relativeToClocks, assign, isNumber, isExperimentalFeatureEnabled, ExperimentalFeature } from '@datadog/browser-core';\nimport { matchRequestTiming } from './matchRequestTiming';\nimport { computePerformanceResourceDetails, computePerformanceResourceDuration, computeResourceKind, computeSize, isRequestKind } from './resourceUtils';\nexport function startResourceCollection(lifeCycle, configuration, sessionManager, pageStateHistory) {\n lifeCycle.subscribe(6 /* LifeCycleEventType.REQUEST_COMPLETED */, function (request) {\n lifeCycle.notify(10 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processRequest(request, configuration, sessionManager, pageStateHistory));\n });\n lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.entryType === 'resource' && !isRequestKind(entry)) {\n lifeCycle.notify(10 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processResourceEntry(entry, configuration, sessionManager, pageStateHistory));\n }\n }\n });\n}\nfunction processRequest(request, configuration, sessionManager, pageStateHistory) {\n var _a;\n var type = request.type === \"xhr\" /* RequestType.XHR */ ? \"xhr\" /* ResourceType.XHR */ : \"fetch\" /* ResourceType.FETCH */;\n var matchingTiming = matchRequestTiming(request);\n var startClocks = matchingTiming ? relativeToClocks(matchingTiming.startTime) : request.startClocks;\n var correspondingTimingOverrides = matchingTiming ? computePerformanceEntryMetrics(matchingTiming) : undefined;\n var tracingInfo = computeRequestTracingInfo(request, configuration);\n var indexingInfo = computeIndexingInfo(sessionManager, startClocks);\n var duration = computeRequestDuration(pageStateHistory, startClocks, request.duration);\n var pageStateInfo = computePageStateInfo(pageStateHistory, startClocks, (_a = matchingTiming === null || matchingTiming === void 0 ? void 0 : matchingTiming.duration) !== null && _a !== void 0 ? _a : request.duration);\n var resourceEvent = combine({\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n type: type,\n duration: duration,\n method: request.method,\n status_code: request.status,\n url: request.url\n },\n type: \"resource\" /* RumEventType.RESOURCE */\n }, tracingInfo, correspondingTimingOverrides, indexingInfo, pageStateInfo);\n return {\n startTime: startClocks.relative,\n rawRumEvent: resourceEvent,\n domainContext: {\n performanceEntry: matchingTiming && toPerformanceEntryRepresentation(matchingTiming),\n xhr: request.xhr,\n response: request.response,\n requestInput: request.input,\n requestInit: request.init,\n error: request.error\n }\n };\n}\nfunction processResourceEntry(entry, configuration, sessionManager, pageStateHistory) {\n var type = computeResourceKind(entry);\n var entryMetrics = computePerformanceEntryMetrics(entry);\n var startClocks = relativeToClocks(entry.startTime);\n var tracingInfo = computeEntryTracingInfo(entry, configuration);\n var indexingInfo = computeIndexingInfo(sessionManager, startClocks);\n var pageStateInfo = computePageStateInfo(pageStateHistory, startClocks, entry.duration);\n var resourceEvent = combine({\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n type: type,\n url: entry.name\n },\n type: \"resource\" /* RumEventType.RESOURCE */\n }, tracingInfo, entryMetrics, indexingInfo, pageStateInfo);\n return {\n startTime: startClocks.relative,\n rawRumEvent: resourceEvent,\n domainContext: {\n performanceEntry: toPerformanceEntryRepresentation(entry)\n }\n };\n}\nfunction computePerformanceEntryMetrics(timing) {\n return {\n resource: assign({\n duration: computePerformanceResourceDuration(timing),\n size: computeSize(timing)\n }, computePerformanceResourceDetails(timing))\n };\n}\nfunction computeRequestTracingInfo(request, configuration) {\n var hasBeenTraced = request.traceSampled && request.traceId && request.spanId;\n if (!hasBeenTraced) {\n return undefined;\n }\n return {\n _dd: {\n span_id: request.spanId.toDecimalString(),\n trace_id: request.traceId.toDecimalString(),\n rule_psr: getRulePsr(configuration)\n }\n };\n}\nfunction computeEntryTracingInfo(entry, configuration) {\n var hasBeenTraced = entry.traceId;\n if (!hasBeenTraced) {\n return undefined;\n }\n return {\n _dd: {\n trace_id: entry.traceId,\n rule_psr: getRulePsr(configuration)\n }\n };\n}\n// TODO next major: use directly PerformanceEntry type in domain context\nfunction toPerformanceEntryRepresentation(entry) {\n return entry;\n}\n/**\n * @returns number between 0 and 1 which represents trace sample rate\n */\nfunction getRulePsr(configuration) {\n return isNumber(configuration.traceSampleRate) ? configuration.traceSampleRate / 100 : undefined;\n}\nfunction computeIndexingInfo(sessionManager, resourceStart) {\n var session = sessionManager.findTrackedSession(resourceStart.relative);\n return {\n _dd: {\n discarded: !session || !session.resourceAllowed\n }\n };\n}\nfunction computePageStateInfo(pageStateHistory, startClocks, duration) {\n if (!isExperimentalFeatureEnabled(ExperimentalFeature.RESOURCE_PAGE_STATES)) {\n return;\n }\n return {\n _dd: {\n page_states: pageStateHistory.findAll(startClocks.relative, duration),\n page_was_discarded: String(document.wasDiscarded)\n }\n };\n}\nfunction computeRequestDuration(pageStateHistory, startClocks, duration) {\n var _a;\n // TODO remove FF in next major\n if (!isExperimentalFeatureEnabled(ExperimentalFeature.NO_RESOURCE_DURATION_FROZEN_STATE)) {\n return toServerDuration(duration);\n }\n var requestCrossedFrozenState = (_a = pageStateHistory.findAll(startClocks.relative, duration)) === null || _a === void 0 ? void 0 : _a.some(function (pageState) {\n return pageState.state === \"frozen\" /* PageState.FROZEN */;\n });\n return !requestCrossedFrozenState ? toServerDuration(duration) : undefined;\n}","import { toServerDuration } from '@datadog/browser-core';\n// Todo: Remove in the next major release\nexport function mapToForegroundPeriods(pageStateServerEntries, duration) {\n var foregroundPeriods = [];\n for (var i = 0; i < pageStateServerEntries.length; i++) {\n var current = pageStateServerEntries[i];\n var next = pageStateServerEntries[i + 1];\n if (current.state === \"active\" /* PageState.ACTIVE */) {\n var start = current.start >= 0 ? current.start : 0;\n var end = next ? next.start : toServerDuration(duration);\n foregroundPeriods.push({\n start: start,\n duration: end - start\n });\n }\n }\n return foregroundPeriods;\n}","import { setTimeout, assign, addEventListeners, elapsed, ONE_MINUTE, find, findLast, relativeNow } from '@datadog/browser-core';\nimport { trackFirstHidden } from './trackFirstHidden';\n// Discard LCP and FCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport var TIMING_MAXIMUM_DELAY = 10 * ONE_MINUTE;\n/**\n * The initial view can finish quickly, before some metrics can be produced (ex: before the page load\n * event, or the first input). Also, we don't want to trigger a view update indefinitely, to avoid\n * updates on views that ended a long time ago. Keep watching for metrics after the view ends for a\n * limited amount of time.\n */\nexport var KEEP_TRACKING_TIMINGS_AFTER_VIEW_DELAY = 5 * ONE_MINUTE;\nexport function trackInitialViewTimings(lifeCycle, configuration, webVitalTelemetryDebug, setLoadEvent, scheduleViewUpdate) {\n var timings = {};\n function setTimings(newTimings) {\n assign(timings, newTimings);\n scheduleViewUpdate();\n }\n var stopNavigationTracking = trackNavigationTimings(lifeCycle, function (newTimings) {\n setLoadEvent(newTimings.loadEvent);\n setTimings(newTimings);\n }).stop;\n var stopFCPTracking = trackFirstContentfulPaintTiming(lifeCycle, configuration, function (firstContentfulPaint) {\n return setTimings({\n firstContentfulPaint: firstContentfulPaint\n });\n }).stop;\n var stopLCPTracking = trackLargestContentfulPaintTiming(lifeCycle, configuration, window, function (largestContentfulPaint, lcpElement) {\n webVitalTelemetryDebug.addWebVitalTelemetryDebug('LCP', lcpElement, largestContentfulPaint);\n setTimings({\n largestContentfulPaint: largestContentfulPaint\n });\n }).stop;\n var stopFIDTracking = trackFirstInputTimings(lifeCycle, configuration, function (_a) {\n var firstInputDelay = _a.firstInputDelay,\n firstInputTime = _a.firstInputTime,\n firstInputTarget = _a.firstInputTarget;\n webVitalTelemetryDebug.addWebVitalTelemetryDebug('FID', firstInputTarget, firstInputTime);\n setTimings({\n firstInputDelay: firstInputDelay,\n firstInputTime: firstInputTime\n });\n }).stop;\n function stop() {\n stopNavigationTracking();\n stopFCPTracking();\n stopLCPTracking();\n stopFIDTracking();\n }\n return {\n stop: stop,\n timings: timings,\n scheduleStop: function scheduleStop() {\n setTimeout(stop, KEEP_TRACKING_TIMINGS_AFTER_VIEW_DELAY);\n }\n };\n}\nexport function trackNavigationTimings(lifeCycle, callback) {\n var stop = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.entryType === 'navigation') {\n callback({\n domComplete: entry.domComplete,\n domContentLoaded: entry.domContentLoadedEventEnd,\n domInteractive: entry.domInteractive,\n loadEvent: entry.loadEventEnd,\n // In some cases the value reported is negative or is larger\n // than the current page time. Ignore these cases:\n // https://github.com/GoogleChrome/web-vitals/issues/137\n // https://github.com/GoogleChrome/web-vitals/issues/162\n firstByte: entry.responseStart >= 0 && entry.responseStart <= relativeNow() ? entry.responseStart : undefined\n });\n }\n }\n }).unsubscribe;\n return {\n stop: stop\n };\n}\nexport function trackFirstContentfulPaintTiming(lifeCycle, configuration, callback) {\n var firstHidden = trackFirstHidden(configuration);\n var stop = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n var fcpEntry = find(entries, function (entry) {\n return entry.entryType === 'paint' && entry.name === 'first-contentful-paint' && entry.startTime < firstHidden.timeStamp && entry.startTime < TIMING_MAXIMUM_DELAY;\n });\n if (fcpEntry) {\n callback(fcpEntry.startTime);\n }\n }).unsubscribe;\n return {\n stop: stop\n };\n}\n/**\n * Track the largest contentful paint (LCP) occurring during the initial View. This can yield\n * multiple values, only the most recent one should be used.\n * Documentation: https://web.dev/lcp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getLCP.ts\n */\nexport function trackLargestContentfulPaintTiming(lifeCycle, configuration, eventTarget, callback) {\n var firstHidden = trackFirstHidden(configuration);\n // Ignore entries that come after the first user interaction. According to the documentation, the\n // browser should not send largest-contentful-paint entries after a user interact with the page,\n // but the web-vitals reference implementation uses this as a safeguard.\n var firstInteractionTimestamp = Infinity;\n var stopEventListener = addEventListeners(configuration, eventTarget, [\"pointerdown\" /* DOM_EVENT.POINTER_DOWN */, \"keydown\" /* DOM_EVENT.KEY_DOWN */], function (event) {\n firstInteractionTimestamp = event.timeStamp;\n }, {\n capture: true,\n once: true\n }).stop;\n var unsubscribeLifeCycle = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n var lcpEntry = findLast(entries, function (entry) {\n return entry.entryType === 'largest-contentful-paint' && entry.startTime < firstInteractionTimestamp && entry.startTime < firstHidden.timeStamp && entry.startTime < TIMING_MAXIMUM_DELAY;\n });\n if (lcpEntry) {\n callback(lcpEntry.startTime, lcpEntry.element);\n }\n }).unsubscribe;\n return {\n stop: function stop() {\n stopEventListener();\n unsubscribeLifeCycle();\n }\n };\n}\n/**\n * Track the first input occurring during the initial View to return:\n * - First Input Delay\n * - First Input Time\n * Callback is called at most one time.\n * Documentation: https://web.dev/fid/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getFID.ts\n */\nexport function trackFirstInputTimings(lifeCycle, configuration, callback) {\n var firstHidden = trackFirstHidden(configuration);\n var stop = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n var firstInputEntry = find(entries, function (entry) {\n return entry.entryType === 'first-input' && entry.startTime < firstHidden.timeStamp;\n });\n if (firstInputEntry) {\n var firstInputDelay = elapsed(firstInputEntry.startTime, firstInputEntry.processingStart);\n callback({\n // Ensure firstInputDelay to be positive, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1185815\n firstInputDelay: firstInputDelay >= 0 ? firstInputDelay : 0,\n firstInputTime: firstInputEntry.startTime,\n firstInputTarget: firstInputEntry.target\n });\n }\n }).unsubscribe;\n return {\n stop: stop\n };\n}","export function getScrollX() {\n var scrollX;\n var visual = window.visualViewport;\n if (visual) {\n scrollX = visual.pageLeft - visual.offsetLeft;\n } else if (window.scrollX !== undefined) {\n scrollX = window.scrollX;\n } else {\n scrollX = window.pageXOffset || 0;\n }\n return Math.round(scrollX);\n}\nexport function getScrollY() {\n var scrollY;\n var visual = window.visualViewport;\n if (visual) {\n scrollY = visual.pageTop - visual.offsetTop;\n } else if (window.scrollY !== undefined) {\n scrollY = window.scrollY;\n } else {\n scrollY = window.pageYOffset || 0;\n }\n return Math.round(scrollY);\n}","import { ONE_SECOND, addEventListener, elapsed, noop, relativeNow, round, throttle, find } from '@datadog/browser-core';\nimport { supportPerformanceTimingEvent } from '../../../browser/performanceCollection';\nimport { waitPageActivityEnd } from '../../waitPageActivityEnd';\nimport { getScrollY } from '../../../browser/scroll';\nimport { getViewportDimension } from '../../../browser/viewportObservable';\n/** Arbitrary scroll throttle duration */\nexport var THROTTLE_SCROLL_DURATION = ONE_SECOND;\nexport function trackViewMetrics(lifeCycle, domMutationObservable, configuration, scheduleViewUpdate, loadingType, viewStart, webVitalTelemetryDebug) {\n var viewMetrics = {};\n var scrollMetrics;\n var _a = trackLoadingTime(lifeCycle, domMutationObservable, configuration, loadingType, viewStart, function (newLoadingTime) {\n viewMetrics.loadingTime = newLoadingTime;\n // We compute scroll metrics at loading time to ensure we have scroll data when loading the view initially\n // This is to ensure that we have the depth data even if the user didn't scroll or if the view is not scrollable.\n var _a = computeScrollValues(),\n scrollHeight = _a.scrollHeight,\n scrollDepth = _a.scrollDepth,\n scrollTop = _a.scrollTop;\n scrollMetrics = {\n maxDepth: scrollDepth,\n maxDepthScrollHeight: scrollHeight,\n maxDepthTime: newLoadingTime,\n maxDepthScrollTop: scrollTop\n };\n scheduleViewUpdate();\n }),\n stopLoadingTimeTracking = _a.stop,\n setLoadEvent = _a.setLoadEvent;\n var stopScrollMetricsTracking = trackScrollMetrics(configuration, viewStart, function (newScrollMetrics) {\n scrollMetrics = newScrollMetrics;\n }, computeScrollValues).stop;\n var stopCLSTracking;\n var clsAttributionCollected = false;\n if (isLayoutShiftSupported()) {\n viewMetrics.cumulativeLayoutShift = 0;\n stopCLSTracking = trackCumulativeLayoutShift(lifeCycle, function (cumulativeLayoutShift, largestLayoutShiftNode, largestLayoutShiftTime) {\n viewMetrics.cumulativeLayoutShift = cumulativeLayoutShift;\n if (!clsAttributionCollected) {\n clsAttributionCollected = true;\n webVitalTelemetryDebug.addWebVitalTelemetryDebug('CLS', largestLayoutShiftNode, largestLayoutShiftTime);\n }\n scheduleViewUpdate();\n }).stop;\n } else {\n stopCLSTracking = noop;\n }\n return {\n stop: function stop() {\n stopLoadingTimeTracking();\n stopCLSTracking();\n stopScrollMetricsTracking();\n },\n setLoadEvent: setLoadEvent,\n viewMetrics: viewMetrics,\n getScrollMetrics: function getScrollMetrics() {\n return scrollMetrics;\n }\n };\n}\nexport function trackScrollMetrics(configuration, viewStart, callback, getScrollValues) {\n if (getScrollValues === void 0) {\n getScrollValues = computeScrollValues;\n }\n var maxDepth = 0;\n var handleScrollEvent = throttle(function () {\n var _a = getScrollValues(),\n scrollHeight = _a.scrollHeight,\n scrollDepth = _a.scrollDepth,\n scrollTop = _a.scrollTop;\n if (scrollDepth > maxDepth) {\n var now = relativeNow();\n var maxDepthTime = elapsed(viewStart.relative, now);\n maxDepth = scrollDepth;\n callback({\n maxDepth: maxDepth,\n maxDepthScrollHeight: scrollHeight,\n maxDepthTime: maxDepthTime,\n maxDepthScrollTop: scrollTop\n });\n }\n }, THROTTLE_SCROLL_DURATION, {\n leading: false,\n trailing: true\n });\n var _stop = addEventListener(configuration, window, \"scroll\" /* DOM_EVENT.SCROLL */, handleScrollEvent.throttled, {\n passive: true\n }).stop;\n return {\n stop: function stop() {\n handleScrollEvent.cancel();\n _stop();\n }\n };\n}\nfunction computeScrollValues() {\n var scrollTop = getScrollY();\n var height = getViewportDimension().height;\n var scrollHeight = Math.round((document.scrollingElement || document.documentElement).scrollHeight);\n var scrollDepth = Math.round(height + scrollTop);\n return {\n scrollHeight: scrollHeight,\n scrollDepth: scrollDepth,\n scrollTop: scrollTop\n };\n}\nfunction trackLoadingTime(lifeCycle, domMutationObservable, configuration, loadType, viewStart, callback) {\n var isWaitingForLoadEvent = loadType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */;\n var isWaitingForActivityLoadingTime = true;\n var loadingTimeCandidates = [];\n function invokeCallbackIfAllCandidatesAreReceived() {\n if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {\n callback(Math.max.apply(Math, loadingTimeCandidates));\n }\n }\n var stop = waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, function (event) {\n if (isWaitingForActivityLoadingTime) {\n isWaitingForActivityLoadingTime = false;\n if (event.hadActivity) {\n loadingTimeCandidates.push(elapsed(viewStart.timeStamp, event.end));\n }\n invokeCallbackIfAllCandidatesAreReceived();\n }\n }).stop;\n return {\n stop: stop,\n setLoadEvent: function setLoadEvent(loadEvent) {\n if (isWaitingForLoadEvent) {\n isWaitingForLoadEvent = false;\n loadingTimeCandidates.push(loadEvent);\n invokeCallbackIfAllCandidatesAreReceived();\n }\n }\n };\n}\n/**\n * Track the cumulative layout shifts (CLS).\n * Layout shifts are grouped into session windows.\n * The minimum gap between session windows is 1 second.\n * The maximum duration of a session window is 5 second.\n * The session window layout shift value is the sum of layout shifts inside it.\n * The CLS value is the max of session windows values.\n *\n * This yields a new value whenever the CLS value is updated (a higher session window value is computed).\n *\n * See isLayoutShiftSupported to check for browser support.\n *\n * Documentation:\n * https://web.dev/cls/\n * https://web.dev/evolving-cls/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getCLS.ts\n */\nfunction trackCumulativeLayoutShift(lifeCycle, callback) {\n var maxClsValue = 0;\n var window = slidingSessionWindow();\n var stop = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.entryType === 'layout-shift' && !entry.hadRecentInput) {\n window.update(entry);\n if (window.value() > maxClsValue) {\n maxClsValue = window.value();\n callback(round(maxClsValue, 4), window.largestLayoutShiftNode(), window.largestLayoutShiftTime());\n }\n }\n }\n }).unsubscribe;\n return {\n stop: stop\n };\n}\nfunction slidingSessionWindow() {\n var _value = 0;\n var startTime;\n var endTime;\n var largestLayoutShift = 0;\n var _largestLayoutShiftNode;\n var _largestLayoutShiftTime;\n return {\n update: function update(entry) {\n var _a;\n var shouldCreateNewWindow = startTime === undefined || entry.startTime - endTime >= ONE_SECOND || entry.startTime - startTime >= 5 * ONE_SECOND;\n if (shouldCreateNewWindow) {\n startTime = endTime = entry.startTime;\n _value = entry.value;\n largestLayoutShift = 0;\n _largestLayoutShiftNode = undefined;\n } else {\n _value += entry.value;\n endTime = entry.startTime;\n }\n if (entry.value > largestLayoutShift) {\n largestLayoutShift = entry.value;\n _largestLayoutShiftTime = entry.startTime;\n if ((_a = entry.sources) === null || _a === void 0 ? void 0 : _a.length) {\n var largestLayoutShiftSource = find(entry.sources, function (s) {\n var _a;\n return ((_a = s.node) === null || _a === void 0 ? void 0 : _a.nodeType) === 1;\n }) || entry.sources[0];\n _largestLayoutShiftNode = largestLayoutShiftSource.node;\n } else {\n _largestLayoutShiftNode = undefined;\n }\n }\n },\n value: function value() {\n return _value;\n },\n largestLayoutShiftNode: function largestLayoutShiftNode() {\n return _largestLayoutShiftNode;\n },\n largestLayoutShiftTime: function largestLayoutShiftTime() {\n return _largestLayoutShiftTime;\n }\n };\n}\n/**\n * Check whether `layout-shift` is supported by the browser.\n */\nfunction isLayoutShiftSupported() {\n return supportPerformanceTimingEvent('layout-shift');\n}","import { ONE_MINUTE, setTimeout } from '@datadog/browser-core';\nimport { trackEventCounts } from '../../trackEventCounts';\n// Some events are not being counted as they transcend views. To reduce the occurrence;\n// an arbitrary delay is added for stopping event counting after the view ends.\n//\n// Ideally, we would not stop and keep counting events until the end of the session.\n// But this might have a small performance impact if there are many many views:\n// we would need to go through each event to see if the related view matches.\n// So let's have a fairly short delay to avoid impacting performances too much.\n//\n// In the future, we could have views stored in a data structure similar to ContextHistory. Whenever\n// a child event is collected, we could look into this history to find the matching view and\n// increase the associated and increase its counter. Having a centralized data structure for it\n// would allow us to look for views more efficiently.\n//\n// For now, having a small cleanup delay will already improve the situation in most cases.\nexport var KEEP_TRACKING_EVENT_COUNTS_AFTER_VIEW_DELAY = 5 * ONE_MINUTE;\nexport function trackViewEventCounts(lifeCycle, viewId, onChange) {\n var _a = trackEventCounts({\n lifeCycle: lifeCycle,\n isChildEvent: function isChildEvent(event) {\n return event.view.id === viewId;\n },\n onChange: onChange\n }),\n stop = _a.stop,\n eventCounts = _a.eventCounts;\n return {\n scheduleStop: function scheduleStop() {\n setTimeout(stop, KEEP_TRACKING_EVENT_COUNTS_AFTER_VIEW_DELAY);\n },\n eventCounts: eventCounts\n };\n}","import { noop, PageExitReason, shallowClone, assign, elapsed, generateUUID, ONE_MINUTE, throttle, clocksNow, clocksOrigin, timeStampNow, display, looksLikeRelativeTime, setInterval, clearInterval } from '@datadog/browser-core';\nimport { trackInitialViewTimings } from './trackInitialViewTimings';\nimport { trackViewMetrics } from './trackViewMetrics';\nimport { trackViewEventCounts } from './trackViewEventCounts';\nexport var THROTTLE_VIEW_UPDATE_PERIOD = 3000;\nexport var SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE;\nexport function trackViews(location, lifeCycle, domMutationObservable, configuration, locationChangeObservable, areViewsTrackedAutomatically, webVitalTelemetryDebug, initialViewOptions) {\n var currentView = startNewView(\"initial_load\" /* ViewLoadingType.INITIAL_LOAD */, clocksOrigin(), initialViewOptions);\n startViewLifeCycle();\n var locationChangeSubscription;\n if (areViewsTrackedAutomatically) {\n locationChangeSubscription = renewViewOnLocationChange(locationChangeObservable);\n }\n function startNewView(loadingType, startClocks, viewOptions) {\n return newView(lifeCycle, domMutationObservable, configuration, location, loadingType, webVitalTelemetryDebug, startClocks, viewOptions);\n }\n function startViewLifeCycle() {\n lifeCycle.subscribe(8 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n // Renew view on session renewal\n currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */, undefined, {\n name: currentView.name,\n service: currentView.service,\n version: currentView.version\n });\n });\n lifeCycle.subscribe(7 /* LifeCycleEventType.SESSION_EXPIRED */, function () {\n currentView.end({\n sessionIsActive: false\n });\n });\n // End the current view on page unload\n lifeCycle.subscribe(9 /* LifeCycleEventType.PAGE_EXITED */, function (pageExitEvent) {\n if (pageExitEvent.reason === PageExitReason.UNLOADING || pageExitEvent.reason === PageExitReason.PAGEHIDE) {\n currentView.end();\n }\n });\n }\n function renewViewOnLocationChange(locationChangeObservable) {\n return locationChangeObservable.subscribe(function (_a) {\n var oldLocation = _a.oldLocation,\n newLocation = _a.newLocation;\n if (areDifferentLocation(oldLocation, newLocation)) {\n currentView.end();\n currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */);\n }\n });\n }\n return {\n addTiming: function addTiming(name, time) {\n if (time === void 0) {\n time = timeStampNow();\n }\n currentView.addTiming(name, time);\n },\n startView: function startView(options, startClocks) {\n currentView.end({\n endClocks: startClocks\n });\n currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */, startClocks, options);\n },\n stop: function stop() {\n locationChangeSubscription === null || locationChangeSubscription === void 0 ? void 0 : locationChangeSubscription.unsubscribe();\n currentView.end();\n }\n };\n}\nfunction newView(lifeCycle, domMutationObservable, configuration, initialLocation, loadingType, webVitalTelemetryDebug, startClocks, viewOptions) {\n if (startClocks === void 0) {\n startClocks = clocksNow();\n }\n // Setup initial values\n var id = generateUUID();\n var customTimings = {};\n var documentVersion = 0;\n var endClocks;\n var location = shallowClone(initialLocation);\n var sessionIsActive = true;\n var name;\n var service;\n var version;\n if (viewOptions) {\n name = viewOptions.name;\n service = viewOptions.service;\n version = viewOptions.version;\n }\n lifeCycle.notify(2 /* LifeCycleEventType.VIEW_CREATED */, {\n id: id,\n name: name,\n startClocks: startClocks,\n service: service,\n version: version\n });\n // Update the view every time the measures are changing\n var _a = throttle(triggerViewUpdate, THROTTLE_VIEW_UPDATE_PERIOD, {\n leading: false\n }),\n scheduleViewUpdate = _a.throttled,\n cancelScheduleViewUpdate = _a.cancel;\n var _b = trackViewMetrics(lifeCycle, domMutationObservable, configuration, scheduleViewUpdate, loadingType, startClocks, webVitalTelemetryDebug),\n setLoadEvent = _b.setLoadEvent,\n stopViewMetricsTracking = _b.stop,\n viewMetrics = _b.viewMetrics,\n getScrollMetrics = _b.getScrollMetrics;\n var _c = loadingType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */ ? trackInitialViewTimings(lifeCycle, configuration, webVitalTelemetryDebug, setLoadEvent, scheduleViewUpdate) : {\n scheduleStop: noop,\n timings: {}\n },\n scheduleStopInitialViewTimingsTracking = _c.scheduleStop,\n timings = _c.timings;\n var _d = trackViewEventCounts(lifeCycle, id, scheduleViewUpdate),\n scheduleStopEventCountsTracking = _d.scheduleStop,\n eventCounts = _d.eventCounts;\n // Session keep alive\n var keepAliveIntervalId = setInterval(triggerViewUpdate, SESSION_KEEP_ALIVE_INTERVAL);\n // Initial view update\n triggerViewUpdate();\n function triggerViewUpdate() {\n cancelScheduleViewUpdate();\n documentVersion += 1;\n var currentEnd = endClocks === undefined ? timeStampNow() : endClocks.timeStamp;\n lifeCycle.notify(3 /* LifeCycleEventType.VIEW_UPDATED */, assign({\n customTimings: customTimings,\n documentVersion: documentVersion,\n id: id,\n name: name,\n service: service,\n version: version,\n loadingType: loadingType,\n location: location,\n startClocks: startClocks,\n timings: timings,\n duration: elapsed(startClocks.timeStamp, currentEnd),\n isActive: endClocks === undefined,\n sessionIsActive: sessionIsActive,\n eventCounts: eventCounts,\n scrollMetrics: getScrollMetrics()\n }, viewMetrics));\n }\n return {\n name: name,\n service: service,\n version: version,\n end: function end(options) {\n var _a, _b;\n if (options === void 0) {\n options = {};\n }\n if (endClocks) {\n // view already ended\n return;\n }\n endClocks = (_a = options.endClocks) !== null && _a !== void 0 ? _a : clocksNow();\n sessionIsActive = (_b = options.sessionIsActive) !== null && _b !== void 0 ? _b : true;\n lifeCycle.notify(4 /* LifeCycleEventType.VIEW_ENDED */, {\n endClocks: endClocks\n });\n clearInterval(keepAliveIntervalId);\n stopViewMetricsTracking();\n scheduleStopInitialViewTimingsTracking();\n scheduleStopEventCountsTracking();\n triggerViewUpdate();\n },\n addTiming: function addTiming(name, time) {\n if (endClocks) {\n return;\n }\n var relativeTime = looksLikeRelativeTime(time) ? time : elapsed(startClocks.timeStamp, time);\n customTimings[sanitizeTiming(name)] = relativeTime;\n scheduleViewUpdate();\n }\n };\n}\n/**\n * Timing name is used as facet path that must contain only letters, digits, or the characters - _ . @ $\n */\nfunction sanitizeTiming(name) {\n var sanitized = name.replace(/[^a-zA-Z0-9-_.@$]/g, '_');\n if (sanitized !== name) {\n display.warn(\"Invalid timing name: \".concat(name, \", sanitized to: \").concat(sanitized));\n }\n return sanitized;\n}\nfunction areDifferentLocation(currentLocation, otherLocation) {\n return currentLocation.pathname !== otherLocation.pathname || !isHashAnAnchor(otherLocation.hash) && getPathFromHash(otherLocation.hash) !== getPathFromHash(currentLocation.hash);\n}\nfunction isHashAnAnchor(hash) {\n var correspondingId = hash.substr(1);\n return !!document.getElementById(correspondingId);\n}\nfunction getPathFromHash(hash) {\n var index = hash.indexOf('?');\n return index < 0 ? hash : hash.slice(0, index);\n}","import { isExperimentalFeatureEnabled, ExperimentalFeature, isEmptyObject, mapValues, toServerDuration, isNumber } from '@datadog/browser-core';\nimport { mapToForegroundPeriods } from '../../contexts/foregroundContexts';\nimport { trackViews } from './trackViews';\nexport function startViewCollection(lifeCycle, configuration, location, domMutationObservable, locationChangeObservable, featureFlagContexts, pageStateHistory, recorderApi, webVitalTelemetryDebug, initialViewOptions) {\n lifeCycle.subscribe(3 /* LifeCycleEventType.VIEW_UPDATED */, function (view) {\n return lifeCycle.notify(10 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processViewUpdate(view, configuration, featureFlagContexts, recorderApi, pageStateHistory));\n });\n var trackViewResult = trackViews(location, lifeCycle, domMutationObservable, configuration, locationChangeObservable, !configuration.trackViewsManually, webVitalTelemetryDebug, initialViewOptions);\n return trackViewResult;\n}\nfunction processViewUpdate(view, configuration, featureFlagContexts, recorderApi, pageStateHistory) {\n var replayStats = recorderApi.getReplayStats(view.id);\n var featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(view.startClocks.relative);\n var pageStatesEnabled = isExperimentalFeatureEnabled(ExperimentalFeature.PAGE_STATES);\n var pageStates = pageStateHistory.findAll(view.startClocks.relative, view.duration);\n var viewEvent = {\n _dd: {\n document_version: view.documentVersion,\n replay_stats: replayStats,\n page_states: pageStatesEnabled ? pageStates : undefined\n },\n date: view.startClocks.timeStamp,\n type: \"view\" /* RumEventType.VIEW */,\n view: {\n action: {\n count: view.eventCounts.actionCount\n },\n frustration: {\n count: view.eventCounts.frustrationCount\n },\n cumulative_layout_shift: view.cumulativeLayoutShift,\n first_byte: toServerDuration(view.timings.firstByte),\n dom_complete: toServerDuration(view.timings.domComplete),\n dom_content_loaded: toServerDuration(view.timings.domContentLoaded),\n dom_interactive: toServerDuration(view.timings.domInteractive),\n error: {\n count: view.eventCounts.errorCount\n },\n first_contentful_paint: toServerDuration(view.timings.firstContentfulPaint),\n first_input_delay: toServerDuration(view.timings.firstInputDelay),\n first_input_time: toServerDuration(view.timings.firstInputTime),\n is_active: view.isActive,\n name: view.name,\n largest_contentful_paint: toServerDuration(view.timings.largestContentfulPaint),\n load_event: toServerDuration(view.timings.loadEvent),\n loading_time: discardNegativeDuration(toServerDuration(view.loadingTime)),\n loading_type: view.loadingType,\n long_task: {\n count: view.eventCounts.longTaskCount\n },\n resource: {\n count: view.eventCounts.resourceCount\n },\n time_spent: toServerDuration(view.duration),\n in_foreground_periods: !pageStatesEnabled && pageStates ? mapToForegroundPeriods(pageStates, view.duration) : undefined // Todo: Remove in the next major release\n },\n feature_flags: featureFlagContext && !isEmptyObject(featureFlagContext) ? featureFlagContext : undefined,\n display: view.scrollMetrics ? {\n scroll: {\n max_depth: view.scrollMetrics.maxDepth,\n max_depth_scroll_height: view.scrollMetrics.maxDepthScrollHeight,\n max_depth_scroll_top: view.scrollMetrics.maxDepthScrollTop,\n max_depth_time: toServerDuration(view.scrollMetrics.maxDepthTime)\n }\n } : undefined,\n session: {\n has_replay: replayStats ? true : undefined,\n is_active: view.sessionIsActive ? undefined : false\n },\n privacy: {\n replay_level: configuration.defaultPrivacyLevel\n }\n };\n if (!isEmptyObject(view.customTimings)) {\n viewEvent.view.custom_timings = mapValues(view.customTimings, toServerDuration);\n }\n return {\n rawRumEvent: viewEvent,\n startTime: view.startClocks.relative,\n domainContext: {\n location: view.location\n }\n };\n}\nfunction discardNegativeDuration(duration) {\n return isNumber(duration) && duration < 0 ? undefined : duration;\n}","import { Observable, noop, performDraw, startSessionManager } from '@datadog/browser-core';\nexport var RUM_SESSION_KEY = 'rum';\nexport function startRumSessionManager(configuration, lifeCycle) {\n var sessionManager = startSessionManager(configuration, RUM_SESSION_KEY, function (rawTrackingType) {\n return computeSessionState(configuration, rawTrackingType);\n });\n sessionManager.expireObservable.subscribe(function () {\n lifeCycle.notify(7 /* LifeCycleEventType.SESSION_EXPIRED */);\n });\n sessionManager.renewObservable.subscribe(function () {\n lifeCycle.notify(8 /* LifeCycleEventType.SESSION_RENEWED */);\n });\n return {\n findTrackedSession: function findTrackedSession(startTime) {\n var session = sessionManager.findActiveSession(startTime);\n if (!session || !isTypeTracked(session.trackingType)) {\n return;\n }\n var plan = session.trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */ ? 2 /* RumSessionPlan.WITH_SESSION_REPLAY */ : 1 /* RumSessionPlan.WITHOUT_SESSION_REPLAY */;\n return {\n id: session.id,\n plan: plan,\n sessionReplayAllowed: plan === 2 /* RumSessionPlan.WITH_SESSION_REPLAY */,\n longTaskAllowed: configuration.trackLongTasks !== undefined ? configuration.trackLongTasks : configuration.oldPlansBehavior && plan === 2 /* RumSessionPlan.WITH_SESSION_REPLAY */,\n resourceAllowed: configuration.trackResources !== undefined ? configuration.trackResources : configuration.oldPlansBehavior && plan === 2 /* RumSessionPlan.WITH_SESSION_REPLAY */\n };\n },\n expire: sessionManager.expire,\n expireObservable: sessionManager.expireObservable\n };\n}\n/**\n * Start a tracked replay session stub\n */\nexport function startRumSessionManagerStub() {\n var session = {\n id: '00000000-aaaa-0000-aaaa-000000000000',\n plan: 1 /* RumSessionPlan.WITHOUT_SESSION_REPLAY */,\n sessionReplayAllowed: false,\n longTaskAllowed: true,\n resourceAllowed: true\n };\n return {\n findTrackedSession: function findTrackedSession() {\n return session;\n },\n expire: noop,\n expireObservable: new Observable()\n };\n}\nfunction computeSessionState(configuration, rawTrackingType) {\n var trackingType;\n if (hasValidRumSession(rawTrackingType)) {\n trackingType = rawTrackingType;\n } else if (!performDraw(configuration.sessionSampleRate)) {\n trackingType = \"0\" /* RumTrackingType.NOT_TRACKED */;\n } else if (!performDraw(configuration.sessionReplaySampleRate)) {\n trackingType = \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */;\n } else {\n trackingType = \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */;\n }\n return {\n trackingType: trackingType,\n isTracked: isTypeTracked(trackingType)\n };\n}\nfunction hasValidRumSession(trackingType) {\n return trackingType === \"0\" /* RumTrackingType.NOT_TRACKED */ || trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */ || trackingType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */;\n}\nfunction isTypeTracked(rumSessionType) {\n return rumSessionType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */ || rumSessionType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */;\n}","import { createFlushController, Batch, combine, createHttpRequest, isTelemetryReplicationAllowed } from '@datadog/browser-core';\nexport function startRumBatch(configuration, lifeCycle, telemetryEventObservable, reportError, pageExitObservable, sessionExpireObservable) {\n var batch = makeRumBatch(configuration, reportError, pageExitObservable, sessionExpireObservable);\n lifeCycle.subscribe(11 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (serverRumEvent) {\n if (serverRumEvent.type === \"view\" /* RumEventType.VIEW */) {\n batch.upsert(serverRumEvent, serverRumEvent.view.id);\n } else {\n batch.add(serverRumEvent);\n }\n });\n telemetryEventObservable.subscribe(function (event) {\n return batch.add(event, isTelemetryReplicationAllowed(configuration));\n });\n return batch;\n}\nfunction makeRumBatch(configuration, reportError, pageExitObservable, sessionExpireObservable) {\n var _a = createRumBatch(configuration.rumEndpointBuilder),\n primaryBatch = _a.batch,\n primaryFlushController = _a.flushController;\n var replicaBatch;\n var replica = configuration.replica;\n if (replica !== undefined) {\n replicaBatch = createRumBatch(replica.rumEndpointBuilder).batch;\n }\n function createRumBatch(endpointBuilder) {\n var flushController = createFlushController({\n messagesLimit: configuration.batchMessagesLimit,\n bytesLimit: configuration.batchBytesLimit,\n durationLimit: configuration.flushTimeout,\n pageExitObservable: pageExitObservable,\n sessionExpireObservable: sessionExpireObservable\n });\n var batch = new Batch(createHttpRequest(configuration, endpointBuilder, configuration.batchBytesLimit, reportError), flushController, configuration.messageBytesLimit);\n return {\n batch: batch,\n flushController: flushController\n };\n }\n function withReplicaApplicationId(message) {\n return combine(message, {\n application: {\n id: replica.applicationId\n }\n });\n }\n return {\n flushObservable: primaryFlushController.flushObservable,\n add: function add(message, replicated) {\n if (replicated === void 0) {\n replicated = true;\n }\n primaryBatch.add(message);\n if (replicaBatch && replicated) {\n replicaBatch.add(withReplicaApplicationId(message));\n }\n },\n upsert: function upsert(message, key) {\n primaryBatch.upsert(message, key);\n if (replicaBatch) {\n replicaBatch.upsert(withReplicaApplicationId(message), key);\n }\n }\n };\n}","import { SESSION_TIME_OUT_DELAY, relativeNow, ValueHistory } from '@datadog/browser-core';\n/**\n * We want to attach to an event:\n * - the url corresponding to its start\n * - the referrer corresponding to the previous view url (or document referrer for initial view)\n */\nexport var URL_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startUrlContexts(lifeCycle, locationChangeObservable, location) {\n var urlContextHistory = new ValueHistory(URL_CONTEXT_TIME_OUT_DELAY);\n var previousViewUrl;\n lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_ENDED */, function (_a) {\n var endClocks = _a.endClocks;\n urlContextHistory.closeActive(endClocks.relative);\n });\n lifeCycle.subscribe(2 /* LifeCycleEventType.VIEW_CREATED */, function (_a) {\n var startClocks = _a.startClocks;\n var viewUrl = location.href;\n urlContextHistory.add(buildUrlContext({\n url: viewUrl,\n referrer: !previousViewUrl ? document.referrer : previousViewUrl\n }), startClocks.relative);\n previousViewUrl = viewUrl;\n });\n var locationChangeSubscription = locationChangeObservable.subscribe(function (_a) {\n var newLocation = _a.newLocation;\n var current = urlContextHistory.find();\n if (current) {\n var changeTime = relativeNow();\n urlContextHistory.closeActive(changeTime);\n urlContextHistory.add(buildUrlContext({\n url: newLocation.href,\n referrer: current.referrer\n }), changeTime);\n }\n });\n function buildUrlContext(_a) {\n var url = _a.url,\n referrer = _a.referrer;\n return {\n url: url,\n referrer: referrer\n };\n }\n return {\n findUrl: function findUrl(startTime) {\n return urlContextHistory.find(startTime);\n },\n stop: function stop() {\n locationChangeSubscription.unsubscribe();\n urlContextHistory.stop();\n }\n };\n}","import { addEventListener, instrumentMethodAndCallOriginal, Observable, shallowClone } from '@datadog/browser-core';\nexport function createLocationChangeObservable(configuration, location) {\n var currentLocation = shallowClone(location);\n var observable = new Observable(function () {\n var stopHistoryTracking = trackHistory(configuration, onLocationChange).stop;\n var stopHashTracking = trackHash(configuration, onLocationChange).stop;\n return function () {\n stopHistoryTracking();\n stopHashTracking();\n };\n });\n function onLocationChange() {\n if (currentLocation.href === location.href) {\n return;\n }\n var newLocation = shallowClone(location);\n observable.notify({\n newLocation: newLocation,\n oldLocation: currentLocation\n });\n currentLocation = newLocation;\n }\n return observable;\n}\nfunction trackHistory(configuration, onHistoryChange) {\n var stopInstrumentingPushState = instrumentMethodAndCallOriginal(history, 'pushState', {\n after: onHistoryChange\n }).stop;\n var stopInstrumentingReplaceState = instrumentMethodAndCallOriginal(history, 'replaceState', {\n after: onHistoryChange\n }).stop;\n var removeListener = addEventListener(configuration, window, \"popstate\" /* DOM_EVENT.POP_STATE */, onHistoryChange).stop;\n return {\n stop: function stop() {\n stopInstrumentingPushState();\n stopInstrumentingReplaceState();\n removeListener();\n }\n };\n}\nfunction trackHash(configuration, onHashChange) {\n return addEventListener(configuration, window, \"hashchange\" /* DOM_EVENT.HASH_CHANGE */, onHashChange);\n}","import { warnIfCustomerDataLimitReached, throttle, jsonStringify, computeBytesCount, noop, isExperimentalFeatureEnabled, SESSION_TIME_OUT_DELAY, ValueHistory, ExperimentalFeature } from '@datadog/browser-core';\nexport var FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport var BYTES_COMPUTATION_THROTTLING_DELAY = 200;\n/**\n * Start feature flag contexts\n *\n * Feature flag contexts follow the life of views.\n * A new context is added when a view is created and ended when the view is ended\n *\n * Note: we choose not to add a new context at each evaluation to save memory\n */\nexport function startFeatureFlagContexts(lifeCycle, computeBytesCountImpl) {\n if (computeBytesCountImpl === void 0) {\n computeBytesCountImpl = computeBytesCount;\n }\n if (!isExperimentalFeatureEnabled(ExperimentalFeature.FEATURE_FLAGS)) {\n return {\n findFeatureFlagEvaluations: function findFeatureFlagEvaluations() {\n return undefined;\n },\n getFeatureFlagBytesCount: function getFeatureFlagBytesCount() {\n return 0;\n },\n addFeatureFlagEvaluation: noop,\n stop: noop\n };\n }\n var featureFlagContexts = new ValueHistory(FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY);\n var bytesCountCache = 0;\n var alreadyWarned = false;\n lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_ENDED */, function (_a) {\n var endClocks = _a.endClocks;\n featureFlagContexts.closeActive(endClocks.relative);\n });\n lifeCycle.subscribe(2 /* LifeCycleEventType.VIEW_CREATED */, function (_a) {\n var startClocks = _a.startClocks;\n featureFlagContexts.add({}, startClocks.relative);\n bytesCountCache = 0;\n });\n // Throttle the bytes computation to minimize the impact on performance.\n // Especially useful if the user call addFeatureFlagEvaluation API synchronously multiple times in a row\n var _a = throttle(function (context) {\n bytesCountCache = computeBytesCountImpl(jsonStringify(context));\n if (!alreadyWarned) {\n alreadyWarned = warnIfCustomerDataLimitReached(bytesCountCache, \"feature flag evaluation\" /* CustomerDataType.FeatureFlag */);\n }\n }, BYTES_COMPUTATION_THROTTLING_DELAY),\n computeBytesCountThrottled = _a.throttled,\n cancelPendingComputation = _a.cancel;\n return {\n findFeatureFlagEvaluations: function findFeatureFlagEvaluations(startTime) {\n return featureFlagContexts.find(startTime);\n },\n getFeatureFlagBytesCount: function getFeatureFlagBytesCount() {\n var currentContext = featureFlagContexts.find();\n if (!currentContext) {\n return 0;\n }\n return bytesCountCache;\n },\n addFeatureFlagEvaluation: function addFeatureFlagEvaluation(key, value) {\n var currentContext = featureFlagContexts.find();\n if (currentContext) {\n currentContext[key] = value;\n computeBytesCountThrottled(currentContext);\n }\n },\n stop: cancelPendingComputation\n };\n}","import { isEmptyObject, includes, performDraw, ONE_SECOND, addTelemetryDebug, setInterval } from '@datadog/browser-core';\nexport var MEASURES_PERIOD_DURATION = 10 * ONE_SECOND;\nvar currentPeriodMeasures;\nvar currentBatchMeasures;\nvar batchHasRumEvent;\nexport function startCustomerDataTelemetry(configuration, telemetry, lifeCycle, globalContextManager, userContextManager, featureFlagContexts, batchFlushObservable) {\n var customerDataTelemetryEnabled = telemetry.enabled && performDraw(configuration.customerDataTelemetrySampleRate);\n if (!customerDataTelemetryEnabled) {\n return;\n }\n initCurrentPeriodMeasures();\n initCurrentBatchMeasures();\n // We measure the data of every view updates even if there could only be one per batch due to the upsert\n // It means that contexts bytes count sums can be higher than it really is\n lifeCycle.subscribe(11 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) {\n batchHasRumEvent = true;\n updateMeasure(currentBatchMeasures.globalContextBytes, !isEmptyObject(globalContextManager.get()) ? globalContextManager.getBytesCount() : 0);\n updateMeasure(currentBatchMeasures.userContextBytes, !isEmptyObject(userContextManager.get()) ? userContextManager.getBytesCount() : 0);\n var featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations();\n var hasFeatureFlagContext = includes([\"view\" /* RumEventType.VIEW */, \"error\" /* RumEventType.ERROR */], event.type) && featureFlagContext && !isEmptyObject(featureFlagContext);\n updateMeasure(currentBatchMeasures.featureFlagBytes, hasFeatureFlagContext ? featureFlagContexts.getFeatureFlagBytesCount() : 0);\n });\n batchFlushObservable.subscribe(function (_a) {\n var bytesCount = _a.bytesCount,\n messagesCount = _a.messagesCount;\n // Don't measure batch that only contains telemetry events to avoid batch sending loop\n // It could happen because after each batch we are adding a customer data measures telemetry event to the next one\n if (!batchHasRumEvent) {\n return;\n }\n currentPeriodMeasures.batchCount += 1;\n updateMeasure(currentPeriodMeasures.batchBytesCount, bytesCount);\n updateMeasure(currentPeriodMeasures.batchMessagesCount, messagesCount);\n mergeMeasure(currentPeriodMeasures.globalContextBytes, currentBatchMeasures.globalContextBytes);\n mergeMeasure(currentPeriodMeasures.userContextBytes, currentBatchMeasures.userContextBytes);\n mergeMeasure(currentPeriodMeasures.featureFlagBytes, currentBatchMeasures.featureFlagBytes);\n initCurrentBatchMeasures();\n });\n setInterval(sendCurrentPeriodMeasures, MEASURES_PERIOD_DURATION);\n}\nfunction sendCurrentPeriodMeasures() {\n if (currentPeriodMeasures.batchCount === 0) {\n return;\n }\n addTelemetryDebug('Customer data measures', currentPeriodMeasures);\n initCurrentPeriodMeasures();\n}\nfunction createMeasure() {\n return {\n min: Infinity,\n max: 0,\n sum: 0\n };\n}\nfunction updateMeasure(measure, value) {\n measure.sum += value;\n measure.min = Math.min(measure.min, value);\n measure.max = Math.max(measure.max, value);\n}\nfunction mergeMeasure(target, source) {\n target.sum += source.sum;\n target.min = Math.min(target.min, source.min);\n target.max = Math.max(target.max, source.max);\n}\nfunction initCurrentPeriodMeasures() {\n currentPeriodMeasures = {\n batchCount: 0,\n batchBytesCount: createMeasure(),\n batchMessagesCount: createMeasure(),\n globalContextBytes: createMeasure(),\n userContextBytes: createMeasure(),\n featureFlagBytes: createMeasure()\n };\n}\nfunction initCurrentBatchMeasures() {\n batchHasRumEvent = false;\n currentBatchMeasures = {\n globalContextBytes: createMeasure(),\n userContextBytes: createMeasure(),\n featureFlagBytes: createMeasure()\n };\n}","import { elapsed, ValueHistory, SESSION_TIME_OUT_DELAY, toServerDuration, addEventListeners, relativeNow } from '@datadog/browser-core';\n// Arbitrary value to cap number of element for memory consumption in the browser\nexport var MAX_PAGE_STATE_ENTRIES = 4000;\n// Arbitrary value to cap number of element for backend & to save bandwidth\nexport var MAX_PAGE_STATE_ENTRIES_SELECTABLE = 500;\nexport var PAGE_STATE_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startPageStateHistory(configuration, maxPageStateEntriesSelectable) {\n if (maxPageStateEntriesSelectable === void 0) {\n maxPageStateEntriesSelectable = MAX_PAGE_STATE_ENTRIES_SELECTABLE;\n }\n var pageStateHistory = new ValueHistory(PAGE_STATE_CONTEXT_TIME_OUT_DELAY, MAX_PAGE_STATE_ENTRIES);\n var currentPageState;\n addPageState(getPageState(), relativeNow());\n var stopEventListeners = addEventListeners(configuration, window, [\"pageshow\" /* DOM_EVENT.PAGE_SHOW */, \"focus\" /* DOM_EVENT.FOCUS */, \"blur\" /* DOM_EVENT.BLUR */, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, \"resume\" /* DOM_EVENT.RESUME */, \"freeze\" /* DOM_EVENT.FREEZE */, \"pagehide\" /* DOM_EVENT.PAGE_HIDE */], function (event) {\n // Only get events fired by the browser to avoid false currentPageState changes done with custom events\n // cf: developer extension auto flush: https://github.com/DataDog/browser-sdk/blob/2f72bf05a672794c9e33965351964382a94c72ba/developer-extension/src/panel/flushEvents.ts#L11-L12\n if (event.isTrusted) {\n addPageState(computePageState(event), event.timeStamp);\n }\n }, {\n capture: true\n }).stop;\n function addPageState(nextPageState, startTime) {\n if (startTime === void 0) {\n startTime = relativeNow();\n }\n if (nextPageState === currentPageState) {\n return;\n }\n currentPageState = nextPageState;\n pageStateHistory.closeActive(startTime);\n pageStateHistory.add({\n state: currentPageState,\n startTime: startTime\n }, startTime);\n }\n return {\n findAll: function findAll(eventStartTime, duration) {\n var pageStateEntries = pageStateHistory.findAll(eventStartTime, duration);\n if (pageStateEntries.length === 0) {\n return;\n }\n var pageStateServerEntries = [];\n // limit the number of entries to return\n var limit = Math.max(0, pageStateEntries.length - maxPageStateEntriesSelectable);\n // loop page state entries backward to return the selected ones in desc order\n for (var index = pageStateEntries.length - 1; index >= limit; index--) {\n var pageState = pageStateEntries[index];\n // compute the start time relative to the event start time (ex: to be relative to the view start time)\n var relativeStartTime = elapsed(eventStartTime, pageState.startTime);\n pageStateServerEntries.push({\n state: pageState.state,\n start: toServerDuration(relativeStartTime)\n });\n }\n return pageStateServerEntries;\n },\n isInActivePageStateAt: function isInActivePageStateAt(startTime) {\n var pageStateEntry = pageStateHistory.find(startTime);\n return pageStateEntry !== undefined && pageStateEntry.state === \"active\" /* PageState.ACTIVE */;\n },\n addPageState: addPageState,\n stop: function stop() {\n stopEventListeners();\n pageStateHistory.stop();\n }\n };\n}\nfunction computePageState(event) {\n if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n return \"frozen\" /* PageState.FROZEN */;\n } else if (event.type === \"pagehide\" /* DOM_EVENT.PAGE_HIDE */) {\n return event.persisted ? \"frozen\" /* PageState.FROZEN */ : \"terminated\" /* PageState.TERMINATED */;\n }\n return getPageState();\n}\nfunction getPageState() {\n if (document.visibilityState === 'hidden') {\n return \"hidden\" /* PageState.HIDDEN */;\n }\n if (document.hasFocus()) {\n return \"active\" /* PageState.ACTIVE */;\n }\n return \"passive\" /* PageState.PASSIVE */;\n}","import { INTAKE_SITE_STAGING, INTAKE_SITE_US1, INTAKE_SITE_EU1 } from '@datadog/browser-core';\nexport function getSessionReplayUrl(configuration, _a) {\n var session = _a.session,\n viewContext = _a.viewContext,\n errorType = _a.errorType;\n var sessionId = session ? session.id : 'no-session-id';\n var parameters = [];\n if (errorType !== undefined) {\n parameters.push(\"error-type=\".concat(errorType));\n }\n if (viewContext) {\n parameters.push(\"seed=\".concat(viewContext.id));\n parameters.push(\"from=\".concat(viewContext.startClocks.timeStamp));\n }\n var origin = getDatadogSiteUrl(configuration);\n var path = \"/rum/replay/sessions/\".concat(sessionId);\n return \"\".concat(origin).concat(path, \"?\").concat(parameters.join('&'));\n}\nexport function getDatadogSiteUrl(rumConfiguration) {\n var site = rumConfiguration.site;\n var subdomain = rumConfiguration.subdomain || getSiteDefaultSubdomain(rumConfiguration);\n return \"https://\".concat(subdomain ? \"\".concat(subdomain, \".\") : '').concat(site);\n}\nfunction getSiteDefaultSubdomain(configuration) {\n switch (configuration.site) {\n case INTAKE_SITE_US1:\n case INTAKE_SITE_EU1:\n return 'app';\n case INTAKE_SITE_STAGING:\n return 'dd';\n default:\n return undefined;\n }\n}","export var RecordType = {\n FullSnapshot: 2,\n IncrementalSnapshot: 3,\n Meta: 4,\n Focus: 6,\n ViewEnd: 7,\n VisualViewport: 8,\n FrustrationRecord: 9\n};\nexport var NodeType = {\n Document: 0,\n DocumentType: 1,\n Element: 2,\n Text: 3,\n CDATA: 4,\n DocumentFragment: 11\n};\nexport var IncrementalSource = {\n Mutation: 0,\n MouseMove: 1,\n MouseInteraction: 2,\n Scroll: 3,\n ViewportResize: 4,\n Input: 5,\n TouchMove: 6,\n MediaInteraction: 7,\n StyleSheetRule: 8\n // CanvasMutation : 9,\n // Font : 10,\n};\nexport var MouseInteractionType = {\n MouseUp: 0,\n MouseDown: 1,\n Click: 2,\n ContextMenu: 3,\n DblClick: 4,\n Focus: 5,\n Blur: 6,\n TouchStart: 7,\n TouchEnd: 9\n};\nexport var MediaInteractionType = {\n Play: 0,\n Pause: 1\n};","import { assign, timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nexport function assembleIncrementalSnapshot(source, data) {\n return {\n data: assign({\n source: source\n }, data),\n type: RecordType.IncrementalSnapshot,\n timestamp: timeStampNow()\n };\n}","import { DefaultPrivacyLevel } from '@datadog/browser-core';\nexport var NodePrivacyLevel = {\n IGNORE: 'ignore',\n HIDDEN: 'hidden',\n ALLOW: DefaultPrivacyLevel.ALLOW,\n MASK: DefaultPrivacyLevel.MASK,\n MASK_USER_INPUT: DefaultPrivacyLevel.MASK_USER_INPUT\n};\nexport var PRIVACY_ATTR_NAME = 'data-dd-privacy';\n// Privacy Attrs\nexport var PRIVACY_ATTR_VALUE_ALLOW = 'allow';\nexport var PRIVACY_ATTR_VALUE_MASK = 'mask';\nexport var PRIVACY_ATTR_VALUE_MASK_USER_INPUT = 'mask-user-input';\nexport var PRIVACY_ATTR_VALUE_HIDDEN = 'hidden';\n// Privacy Classes - not all customers can set plain HTML attributes, so support classes too\nexport var PRIVACY_CLASS_ALLOW = 'dd-privacy-allow';\nexport var PRIVACY_CLASS_MASK = 'dd-privacy-mask';\nexport var PRIVACY_CLASS_MASK_USER_INPUT = 'dd-privacy-mask-user-input';\nexport var PRIVACY_CLASS_HIDDEN = 'dd-privacy-hidden';\n// Private Replacement Templates\nexport var CENSORED_STRING_MARK = '***';\nexport var CENSORED_IMG_MARK = 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==';\nexport var FORM_PRIVATE_TAG_NAMES = {\n INPUT: true,\n OUTPUT: true,\n TEXTAREA: true,\n SELECT: true,\n OPTION: true,\n DATALIST: true,\n OPTGROUP: true\n};","import { isElementNode, getParentNode, isTextNode } from '@datadog/browser-rum-core';\nimport { NodePrivacyLevel, PRIVACY_ATTR_NAME, PRIVACY_ATTR_VALUE_ALLOW, PRIVACY_ATTR_VALUE_MASK, PRIVACY_ATTR_VALUE_MASK_USER_INPUT, PRIVACY_ATTR_VALUE_HIDDEN, PRIVACY_CLASS_ALLOW, PRIVACY_CLASS_MASK, PRIVACY_CLASS_MASK_USER_INPUT, PRIVACY_CLASS_HIDDEN, FORM_PRIVATE_TAG_NAMES, CENSORED_STRING_MARK } from '../../constants';\nexport var MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 100000;\nvar TEXT_MASKING_CHAR = 'x';\n/**\n * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is\n * know, it is best to use something like:\n *\n * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)\n */\nexport function getNodePrivacyLevel(node, defaultPrivacyLevel) {\n var parentNode = getParentNode(node);\n var parentNodePrivacyLevel = parentNode ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel) : defaultPrivacyLevel;\n var selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node);\n return reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel);\n}\n/**\n * Reduces the next privacy level based on self + parent privacy levels\n */\nexport function reducePrivacyLevel(childPrivacyLevel, parentNodePrivacyLevel) {\n switch (parentNodePrivacyLevel) {\n // These values cannot be overridden\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return parentNodePrivacyLevel;\n }\n switch (childPrivacyLevel) {\n case NodePrivacyLevel.ALLOW:\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.MASK_USER_INPUT:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return childPrivacyLevel;\n default:\n return parentNodePrivacyLevel;\n }\n}\n/**\n * Determines the node's own privacy level without checking for ancestors.\n */\nexport function getNodeSelfPrivacyLevel(node) {\n // Only Element types can have a privacy level set\n if (!isElementNode(node)) {\n return;\n }\n var privAttr = node.getAttribute(PRIVACY_ATTR_NAME);\n // Overrules for replay purpose\n if (node.tagName === 'BASE') {\n return NodePrivacyLevel.ALLOW;\n }\n // Overrules to enforce end-user protection\n if (node.tagName === 'INPUT') {\n var inputElement = node;\n if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {\n return NodePrivacyLevel.MASK;\n }\n if (inputElement.type === 'hidden') {\n return NodePrivacyLevel.MASK;\n }\n var autocomplete = inputElement.getAttribute('autocomplete');\n // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year]\n if (autocomplete && autocomplete.indexOf('cc-') === 0) {\n return NodePrivacyLevel.MASK;\n }\n }\n // Check HTML privacy attributes and classes\n if (privAttr === PRIVACY_ATTR_VALUE_HIDDEN || node.classList.contains(PRIVACY_CLASS_HIDDEN)) {\n return NodePrivacyLevel.HIDDEN;\n }\n if (privAttr === PRIVACY_ATTR_VALUE_MASK || node.classList.contains(PRIVACY_CLASS_MASK)) {\n return NodePrivacyLevel.MASK;\n }\n if (privAttr === PRIVACY_ATTR_VALUE_MASK_USER_INPUT || node.classList.contains(PRIVACY_CLASS_MASK_USER_INPUT)) {\n return NodePrivacyLevel.MASK_USER_INPUT;\n }\n if (privAttr === PRIVACY_ATTR_VALUE_ALLOW || node.classList.contains(PRIVACY_CLASS_ALLOW)) {\n return NodePrivacyLevel.ALLOW;\n }\n if (shouldIgnoreElement(node)) {\n return NodePrivacyLevel.IGNORE;\n }\n}\n/**\n * Helper aiming to unify `mask` and `mask-user-input` privacy levels:\n *\n * In the `mask` case, it is trivial: we should mask the element.\n *\n * In the `mask-user-input` case, we should mask the element only if it is a \"form\" element or the\n * direct parent is a form element for text nodes).\n *\n * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a\n * node if it is ignored or hidden? it doesn't matter since it won't be serialized).\n */\nexport function shouldMaskNode(node, privacyLevel) {\n switch (privacyLevel) {\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return true;\n case NodePrivacyLevel.MASK_USER_INPUT:\n return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node);\n default:\n return false;\n }\n}\nfunction isFormElement(node) {\n if (!node || node.nodeType !== node.ELEMENT_NODE) {\n return false;\n }\n var element = node;\n if (element.tagName === 'INPUT') {\n switch (element.type) {\n case 'button':\n case 'color':\n case 'reset':\n case 'submit':\n return false;\n }\n }\n return !!FORM_PRIVATE_TAG_NAMES[element.tagName];\n}\n/**\n * Text censoring non-destructively maintains whitespace characters in order to preserve text shape\n * during replay.\n */\nexport var censorText = function censorText(text) {\n return text.replace(/\\S/g, TEXT_MASKING_CHAR);\n};\nexport function getTextContent(textNode, ignoreWhiteSpace, parentNodePrivacyLevel) {\n var _a;\n // The parent node may not be a html element which has a tagName attribute.\n // So just let it be undefined which is ok in this use case.\n var parentTagName = (_a = textNode.parentElement) === null || _a === void 0 ? void 0 : _a.tagName;\n var textContent = textNode.textContent || '';\n if (ignoreWhiteSpace && !textContent.trim()) {\n return;\n }\n var nodePrivacyLevel = parentNodePrivacyLevel;\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\n var isScript = parentTagName === 'SCRIPT';\n if (isScript) {\n // For perf reasons, we don't record script (heuristic)\n textContent = CENSORED_STRING_MARK;\n } else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n // Should never occur, but just in case, we set to CENSORED_MARK.\n textContent = CENSORED_STRING_MARK;\n } else if (shouldMaskNode(textNode, nodePrivacyLevel) &&\n // Style tags are `overruled` (Use `hide` to enforce privacy)\n !isStyle) {\n if (\n // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP\n parentTagName === 'DATALIST' || parentTagName === 'SELECT' || parentTagName === 'OPTGROUP') {\n if (!textContent.trim()) {\n return;\n }\n } else if (parentTagName === 'OPTION') {\n //