@volley/vwr-loader 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/cli.js +51 -25
  2. package/dist/cli.js.map +1 -1
  3. package/dist/vwr/src/envDefaults.d.ts.map +1 -1
  4. package/dist/vwr/src/envDefaults.js +6 -39
  5. package/dist/vwr/src/envDefaults.js.map +1 -1
  6. package/dist/vwr/src/iframe.d.ts +25 -0
  7. package/dist/vwr/src/iframe.d.ts.map +1 -0
  8. package/dist/vwr/src/iframe.js +82 -0
  9. package/dist/vwr/src/iframe.js.map +1 -0
  10. package/dist/vwr/src/native/app-lifecycle/factory.d.ts +7 -0
  11. package/dist/vwr/src/native/app-lifecycle/factory.d.ts.map +1 -0
  12. package/dist/vwr/src/native/app-lifecycle/factory.js +68 -0
  13. package/dist/vwr/src/native/app-lifecycle/factory.js.map +1 -0
  14. package/dist/vwr/src/native/app-lifecycle/rpc.d.ts +15 -0
  15. package/dist/vwr/src/native/app-lifecycle/rpc.d.ts.map +1 -0
  16. package/dist/vwr/src/native/app-lifecycle/rpc.js +46 -0
  17. package/dist/vwr/src/native/app-lifecycle/rpc.js.map +1 -0
  18. package/dist/vwr/src/native/capacitor-bridge/rpc.d.ts +33 -0
  19. package/dist/vwr/src/native/capacitor-bridge/rpc.d.ts.map +1 -0
  20. package/dist/vwr/src/native/capacitor-bridge/rpc.js +129 -0
  21. package/dist/vwr/src/native/capacitor-bridge/rpc.js.map +1 -0
  22. package/dist/vwr/src/native/device-info/factory.d.ts +9 -0
  23. package/dist/vwr/src/native/device-info/factory.d.ts.map +1 -0
  24. package/dist/vwr/src/native/device-info/factory.js +28 -0
  25. package/dist/vwr/src/native/device-info/factory.js.map +1 -0
  26. package/dist/vwr/src/native/device-info/firetvCollector.d.ts +9 -0
  27. package/dist/vwr/src/native/device-info/firetvCollector.d.ts.map +1 -0
  28. package/dist/vwr/src/native/device-info/firetvCollector.js +180 -0
  29. package/dist/vwr/src/native/device-info/firetvCollector.js.map +1 -0
  30. package/dist/vwr/src/native/device-info/lgCollector.d.ts +8 -0
  31. package/dist/vwr/src/native/device-info/lgCollector.d.ts.map +1 -0
  32. package/dist/vwr/src/native/device-info/lgCollector.js +136 -0
  33. package/dist/vwr/src/native/device-info/lgCollector.js.map +1 -0
  34. package/dist/vwr/src/native/device-info/mobileCollector.d.ts +9 -0
  35. package/dist/vwr/src/native/device-info/mobileCollector.d.ts.map +1 -0
  36. package/dist/vwr/src/native/device-info/mobileCollector.js +47 -0
  37. package/dist/vwr/src/native/device-info/mobileCollector.js.map +1 -0
  38. package/dist/vwr/src/native/device-info/rpc.d.ts +51 -0
  39. package/dist/vwr/src/native/device-info/rpc.d.ts.map +1 -0
  40. package/dist/vwr/src/native/device-info/rpc.js +46 -0
  41. package/dist/vwr/src/native/device-info/rpc.js.map +1 -0
  42. package/dist/vwr/src/native/device-info/samsungCollector.d.ts +9 -0
  43. package/dist/vwr/src/native/device-info/samsungCollector.d.ts.map +1 -0
  44. package/dist/vwr/src/native/device-info/samsungCollector.js +86 -0
  45. package/dist/vwr/src/native/device-info/samsungCollector.js.map +1 -0
  46. package/dist/vwr/src/native/device-info/webCollector.d.ts +4 -0
  47. package/dist/vwr/src/native/device-info/webCollector.d.ts.map +1 -0
  48. package/dist/vwr/src/native/device-info/webCollector.js +56 -0
  49. package/dist/vwr/src/native/device-info/webCollector.js.map +1 -0
  50. package/dist/vwr/src/native/native-bridge/rpc.d.ts +33 -0
  51. package/dist/vwr/src/native/native-bridge/rpc.d.ts.map +1 -0
  52. package/dist/vwr/src/native/native-bridge/rpc.js +114 -0
  53. package/dist/vwr/src/native/native-bridge/rpc.js.map +1 -0
  54. package/dist/vwr/src/native/screensaver-prevention/LGLunaService.d.ts +14 -0
  55. package/dist/vwr/src/native/screensaver-prevention/LGLunaService.d.ts.map +1 -0
  56. package/dist/vwr/src/native/screensaver-prevention/LGLunaService.js +187 -0
  57. package/dist/vwr/src/native/screensaver-prevention/LGLunaService.js.map +1 -0
  58. package/dist/vwr/src/native/screensaver-prevention/rpc.d.ts +27 -0
  59. package/dist/vwr/src/native/screensaver-prevention/rpc.d.ts.map +1 -0
  60. package/dist/vwr/src/native/screensaver-prevention/rpc.js +71 -0
  61. package/dist/vwr/src/native/screensaver-prevention/rpc.js.map +1 -0
  62. package/dist/vwr/src/observability.d.ts +35 -0
  63. package/dist/vwr/src/observability.d.ts.map +1 -0
  64. package/dist/vwr/src/observability.js +68 -0
  65. package/dist/vwr/src/observability.js.map +1 -0
  66. package/dist/vwr/src/shellEnvDefaults.d.ts +15 -0
  67. package/dist/vwr/src/shellEnvDefaults.d.ts.map +1 -0
  68. package/dist/vwr/src/shellEnvDefaults.js +34 -0
  69. package/dist/vwr/src/shellEnvDefaults.js.map +1 -0
  70. package/dist/vwr/src/types.d.ts +56 -0
  71. package/dist/vwr/src/types.d.ts.map +1 -0
  72. package/dist/vwr/src/types.js +27 -0
  73. package/dist/vwr/src/types.js.map +1 -0
  74. package/dist/vwr/src/urlUtils.d.ts +17 -0
  75. package/dist/vwr/src/urlUtils.d.ts.map +1 -0
  76. package/dist/vwr/src/urlUtils.js +42 -0
  77. package/dist/vwr/src/urlUtils.js.map +1 -0
  78. package/dist/vwr/src/vwrBootstrap.d.ts +26 -0
  79. package/dist/vwr/src/vwrBootstrap.d.ts.map +1 -0
  80. package/dist/vwr/src/vwrBootstrap.js +176 -0
  81. package/dist/vwr/src/vwrBootstrap.js.map +1 -0
  82. package/dist/vwr/src/vwrConfig.d.ts.map +1 -1
  83. package/dist/vwr/src/vwrConfig.js +11 -2
  84. package/dist/vwr/src/vwrConfig.js.map +1 -1
  85. package/{src → dist/vwr-loader}/index.html +1 -1
  86. package/dist/vwr-loader/src/__mocks__/invalidVwrModule.d.ts +2 -0
  87. package/dist/vwr-loader/src/__mocks__/invalidVwrModule.d.ts.map +1 -0
  88. package/dist/vwr-loader/src/__mocks__/invalidVwrModule.js +2 -0
  89. package/dist/vwr-loader/src/__mocks__/invalidVwrModule.js.map +1 -0
  90. package/dist/vwr-loader/src/index.d.ts +3 -3
  91. package/dist/vwr-loader/src/index.d.ts.map +1 -1
  92. package/dist/vwr-loader/src/index.js +2 -2
  93. package/dist/vwr-loader/src/index.js.map +1 -1
  94. package/dist/vwr-loader/src/loadVwr.d.ts.map +1 -1
  95. package/dist/vwr-loader/src/loadVwr.js +28 -22
  96. package/dist/vwr-loader/src/loadVwr.js.map +1 -1
  97. package/dist/vwr-loader/src/logger.d.ts +1 -1
  98. package/dist/vwr-loader/src/logger.d.ts.map +1 -1
  99. package/dist/vwr-loader/src/logger.js +1 -1
  100. package/dist/vwr-loader/src/logger.js.map +1 -1
  101. package/dist/vwr-loader/src/main.js +1 -1
  102. package/dist/vwr-loader/src/main.js.map +1 -1
  103. package/package.json +4 -5
  104. package/dist/assets/profiler-BRmTNL9s.js +0 -2
  105. package/dist/assets/profiler-BRmTNL9s.js.map +0 -1
  106. package/dist/assets/startRecording-CuFdVhxx.js +0 -3
  107. package/dist/assets/startRecording-CuFdVhxx.js.map +0 -1
  108. package/dist/index.html +0 -25
  109. package/dist/main.js +0 -12
  110. package/dist/main.js.map +0 -1
  111. package/src/__mocks__/@datadog/browser-logs.ts +0 -35
  112. package/src/__mocks__/@datadog/browser-rum.ts +0 -27
  113. package/src/__mocks__/vwrModule.ts +0 -3
  114. package/src/amplitudeFlagFetcher.test.ts +0 -175
  115. package/src/amplitudeFlagFetcher.ts +0 -105
  116. package/src/errors/InitializationError.ts +0 -105
  117. package/src/errors/ensureError.ts +0 -6
  118. package/src/errors/index.ts +0 -16
  119. package/src/exitHandler.test.ts +0 -417
  120. package/src/exitHandler.ts +0 -233
  121. package/src/getEnvironment.test.ts +0 -417
  122. package/src/getEnvironment.ts +0 -144
  123. package/src/getShellVersion.test.ts +0 -403
  124. package/src/getShellVersion.ts +0 -133
  125. package/src/index.ts +0 -7
  126. package/src/loadVwr.test.ts +0 -554
  127. package/src/loadVwr.ts +0 -363
  128. package/src/logger.ts +0 -11
  129. package/src/main.test.ts +0 -157
  130. package/src/main.ts +0 -128
  131. package/src/polyfills.ts +0 -32
  132. package/src/test-setup.ts +0 -5
  133. package/src/vite-env.d.ts +0 -33
package/dist/main.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"mappings":"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","names":["check","it","globalThis_1","global","this","fails","exec","error","require$$0","descriptors","functionBindNative","test","NATIVE_BIND","call","functionCall","$propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","objectPropertyIsEnumerable","V","descriptor","createPropertyDescriptor","bitmap","value","FunctionPrototype","uncurryThisWithBind","functionUncurryThis","fn","uncurryThis","toString","stringSlice","classofRaw","require$$1","classof","require$$2","$Object","split","indexedObject","isNullOrUndefined","$TypeError","requireObjectCoercible","IndexedObject","toIndexedObject","documentAll","isCallable","argument","isObject","globalThis","aFunction","getBuiltIn","namespace","method","objectIsPrototypeOf","navigator","userAgent","environmentUserAgent","process","Deno","versions","v8","match","version","environmentV8Version","V8_VERSION","$String","symbolConstructorDetection","symbol","NATIVE_SYMBOL","useSymbolAsUid","isPrototypeOf","USE_SYMBOL_AS_UID","require$$3","isSymbol","$Symbol","tryToString","aCallable","getMethod","P","func","ordinaryToPrimitive","input","pref","val","defineProperty","defineGlobalProperty","key","SHARED","store","sharedStoreModule","shared","toObject","hasOwnProperty","hasOwnProperty_1","id","postfix","uid","hasOwn","require$$4","require$$5","Symbol","WellKnownSymbolsStore","createWellKnownSymbol","wellKnownSymbol","name","TO_PRIMITIVE","toPrimitive","exoticToPrim","result","toPropertyKey","document","EXISTS","documentCreateElement","DESCRIPTORS","createElement","ie8DomDefine","propertyIsEnumerableModule","require$$6","IE8_DOM_DEFINE","require$$7","$getOwnPropertyDescriptor","objectGetOwnPropertyDescriptor","O","v8PrototypeDefineBug","anObject","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","ENUMERABLE","CONFIGURABLE","WRITABLE","objectDefineProperty","Attributes","current","definePropertyModule","createNonEnumerableProperty","object","getDescriptor","functionName","functionToString","inspectSource","WeakMap","weakMapBasicDetection","keys","sharedKey","hiddenKeys","NATIVE_WEAK_MAP","OBJECT_ALREADY_INITIALIZED","TypeError","set","get","has","enforce","getterFor","TYPE","state","metadata","STATE","internalState","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","replace","join","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","makeBuiltInModule","options","defineBuiltIn","simple","ceil","floor","mathTrunc","x","n","trunc","toIntegerOrInfinity","number","max","min","toAbsoluteIndex","index","length","integer","toLength","len","lengthOfArrayLike","obj","createMethod","IS_INCLUDES","$this","el","fromIndex","arrayIncludes","indexOf","push","objectKeysInternal","names","i","enumBugKeys","internalObjectKeys","objectGetOwnPropertyNames","objectGetOwnPropertySymbols","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","concat","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptorModule","copyConstructorProperties","target","source","exceptions","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","isForced_1","_export","TARGET","GLOBAL","STATIC","FORCED","targetProperty","sourceProperty","$","isArray","MAX_SAFE_INTEGER","doesNotExceedSafeInteger","functionUncurryThisClause","bind","functionBindContext","that","flattenIntoArray","original","sourceLen","start","depth","mapper","thisArg","targetIndex","sourceIndex","mapFn","element","elementLen","flattenIntoArray_1","TO_STRING_TAG","toStringTagSupport","TO_STRING_TAG_SUPPORT","CORRECT_ARGUMENTS","tryGet","tag","noop","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","isConstructor","called","SPECIES","$Array","arraySpeciesConstructor","originalArray","C","arraySpeciesCreate","depthArg","A","callbackfn","iterators","Iterators","ITERATOR","ArrayPrototype","isArrayIteratorMethod","getIteratorMethod","getIterator","usingIterator","iteratorMethod","iteratorClose","iterator","kind","innerResult","innerError","require$$8","require$$9","Result","stopped","ResultPrototype","iterate","iterable","unboundFunction","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","iterFn","next","step","stop","condition","callFn","createProperty","k","v","objectKeys","objectDefineProperties","Properties","props","html","definePropertiesModule","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","NullProtoObjectViaActiveX","activeXDocument","temp","NullProtoObjectViaIFrame","iframe","JS","iframeDocument","NullProtoObject","objectCreate","correctPrototypeGetter","F","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","objectGetPrototypeOf","constructor","getPrototypeOf","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","iteratorsCore","setToStringTag","TAG","create","returnThis","iteratorCreateConstructor","IteratorConstructor","NAME","ENUMERABLE_NEXT","createIterResultObject","done","MATCH","isRegexp","isRegExp","RegExp","FLAGS_GETTER_IS_CORRECT","INDICES_SUPPORT","calls","expected","addGetter","chr","pairs","regexpFlagsDetection","regexpFlags","regExpFlagsDetection","regExpFlagsGetterImplementation","RegExpPrototype","regexpGetFlags","aConstructor","speciesConstructor","defaultConstructor","S","charAt","charCodeAt","CONVERT_TO_STRING","pos","position","size","first","second","stringMultibyte","advanceStringIndex","unicode","$RegExp","UNSUPPORTED_Y","re","BROKEN_CARET","regexpStickyHelpers","regexpUnsupportedDotAll","regexpUnsupportedNcg","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","NPCG_INCLUDED","PATCH","str","raw","reCopy","lastIndex","group","groups","sticky","flags","charsAdded","strCopy","regexpExec","regexpExecAbstract","R","createIteratorConstructor","require$$11","getRegExpFlags","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","regExpExec","require$$19","require$$20","MATCH_ALL","REGEXP_STRING","REGEXP_STRING_ITERATOR","setInternalState","stringIndexOf","nativeMatchAll","WORKS_WITH_NON_GLOBAL_REGEX","$RegExpStringIterator","regexp","$global","fullUnicode","$matchAll","matcher","rx","PromiseCapability","resolve","reject","$$resolve","$$reject","newPromiseCapability","perform","promiseNativeConstructor","SAFE_CLOSING","iteratorWithReturn","checkCorrectnessOfIteration","SKIP_CLOSING","ITERATION_SUPPORT","userAgentStartsWith","environment","NativePromiseConstructor","ENVIRONMENT","SUBCLASSING","NATIVE_PROMISE_REJECTION_EVENT","FORCED_PROMISE_CONSTRUCTOR","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","promise","FakePromise","promiseConstructorDetection","promiseStaticsIncorrectIteration","newPromiseCapabilityModule","PROMISE_STATICS_INCORRECT_ITERATION","capability","promiseResolve","values","counter","remaining","alreadyCalled","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","getSubstitution","matched","captures","namedCaptures","tailPos","m","symbols","ch","capture","f","require$$10","REPLACE","searchValue","replaceValue","IS_REG_EXP","replacer","searchString","functionalReplace","searchLength","advanceBy","endOfLastMatch","UNSCOPABLES","addToUnscopables","relativeIndex","factory","applyFocusVisiblePolyfill","scope","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesAllowlist","isValidFocusTarget","focusTriggersKeyboardModality","type","tagName","addFocusVisibleClass","removeFocusVisibleClass","onKeyDown","e","onPointerDown","onFocus","onBlur","onVisibilityChange","addInitialPointerMoveListeners","onInitialPointerMove","removeInitialPointerMoveListeners","event","ConsoleApiName","globalConsole","originalConsoleMethods","PREFIX","display","DOCS_ORIGIN","DOCS_TROUBLESHOOTING","MORE_DETAILS","catchUserErrors","errorMsg","args","err","performDraw","threshold","round","num","decimals","isPercentage","isNumber","shallowClone","__spreadValues","objectHasValue","isEmptyObject","mapValues","newObject","getGlobalObject","globalObject","isWorkerEnvironment","getZoneJsOriginalValue","browserWindow","onMonitorErrorCollected","debugMode","startMonitorErrorCollection","newOnMonitorErrorCollected","setDebugMode","newDebugMode","monitored","_","__","originalMethod","monitor","callMonitored","context","monitorError","displayIfDebugEnabled","setTimeout","callback","delay","clearTimeout","timeoutId","setInterval","clearInterval","queueMicrotask","_a","nativeImplementation","Observable","onFirstSubscribe","observer","other","mergeObservables","observables","globalObservable","subscriptions","observable","subscription","BufferedObservable","maxBufferSize","closed","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","ONE_YEAR","relativeToClocks","relative","getCorrectedTimeStamp","timeStampToClocks","timeStamp","getRelativeTime","relativeTime","correctedOrigin","dateNow","getNavigationStart","addDuration","getTimeStamp","currentDrift","toServerDuration","duration","timeStampNow","relativeNow","clocksNow","clocksOrigin","elapsed","end","a","b","timestamp","looksLikeRelativeTime","time","navigationStart","_b","throttle","wait","needLeadingExecution","needTrailingExecution","inWaitPeriod","pendingExecutionWithParameters","pendingTimeoutId","parameters","generateUUID","placeholder","COMMA_SEPARATED_KEY_VALUE","findCommaSeparatedValue","rawString","findAllCommaSeparatedValues","findCommaSeparatedValues","safeTruncate","candidate","suffix","lastChar","correctedLength","isChromium","detectBrowserCached","isSafari","browserCache","detectBrowser","normalizeUrl","url","buildUrl","isValidUrl","getPathName","pathname","base","URL","getPristineWindow","getPristineGlobalObjectCache","pristineWindow","setCookie","expireDelay","date","expires","sameSite","domain","secure","partitioned","getCookie","getCookies","initCookieParsed","getInitCookie","deleteCookie","areCookiesAuthorized","testCookieName","testCookieValue","isCookieCorrectlySet","getCurrentSiteCache","getCurrentSite","hostname","referrer","defaultHostName","getCookieDefaultHostName","domainLevels","candidateDomain","SESSION_STORE_KEY","findLast","array","predicate","item","objectValues","objectEntries","SESSION_TIME_OUT_DELAY","SESSION_EXPIRATION_DELAY","SESSION_COOKIE_EXPIRATION_DELAY","SESSION_NOT_TRACKED","SessionPersistence","SESSION_ENTRY_REGEXP","SESSION_ENTRY_SEPARATOR","isValidSessionString","sessionString","EXPIRED","getExpiredSessionState","previousSessionState","configuration","expiredSessionState","isSessionInNotStartedState","session","isSessionStarted","isSessionInExpiredState","isActiveSession","sessionState","expandSessionState","toSessionString","toSessionState","entry","matches","OLD_SESSION_COOKIE_NAME","OLD_RUM_COOKIE_NAME","OLD_LOGS_COOKIE_NAME","RUM_SESSION_KEY","LOGS_SESSION_KEY","tryOldCookiesMigration","cookieStoreStrategy","oldSessionId","oldRumType","oldLogsType","SESSION_COOKIE_VERSION","selectCookieStrategy","initConfiguration","cookieOptions","buildCookieOptions","initCookieStrategy","cookieStore","storeSessionCookie","retrieveSessionCookie","defaultTimeout","sessionStateString","encodeCookieOptions","retrieveSessionCookieFromEncodedCookie","currentSite","domainCount","byte","cookies","opts","cookie","LOCAL_STORAGE_TEST_KEY","selectLocalStorageStrategy","testKey","retrievedId","initLocalStorageStrategy","persistInLocalStorage","retrieveSessionFromLocalStorage","expireSessionFromLocalStorage","LOCK_RETRY_DELAY","LOCK_MAX_TRIES","LOCK_EXPIRATION_DELAY","LOCK_SEPARATOR","bufferedOperations","ongoingOperations","processSessionStoreOperations","operations","sessionStoreStrategy","numberOfRetries","isLockEnabled","persistSession","expireSession","persistWithLock","__spreadProps","currentLock","retrieveStore","lock","__objRest","isLockExpired","currentStore","retryLater","createLock","processedSession","sessionStore","currentNumberOfRetries","nextOperations","STORAGE_POLL_DELAY","selectSessionStoreStrategyType","sessionStoreStrategyType","getSessionStoreStrategy","startSessionStore","productKey","computeTrackingType","renewObservable","expireObservable","sessionStateUpdateObservable","watchSessionTimeoutId","watchSession","sessionCache","startSession","throttledExpandOrRenewSession","cancelExpandOrRenewSession","synchronizedSession","synchronizeSession","expandOrRenewSessionState","hasSessionInCache","renewSessionInCache","expandSession","isSessionInCacheOutdated","expireSessionInCache","trackingType","updateSessionState","partialSessionState","hasConsent","TrackingConsent","createTrackingConsentState","currentConsent","trackingConsent","getType","isMatchOption","itemType","matchList","list","useStartsWith","EXTENSION_PREFIXES","containsExtensionUrl","prefix","isUnsupportedExtensionEnvironment","windowLocation","stack","line","trimmedLine","ERROR_DOES_NOT_HAVE_ALLOWED_TRACKING_ORIGIN","ERROR_NOT_ALLOWED_TRACKING_ORIGIN","isAllowedTrackingOrigins","errorStack","windowOrigin","allowedTrackingOrigins","isAllowed","INTAKE_SITE_STAGING","INTAKE_SITE_FED_STAGING","INTAKE_SITE_US1","INTAKE_SITE_EU1","INTAKE_SITE_US1_FED","PCI_INTAKE_HOST_US1","INTAKE_URL_PARAMETERS","createEndpointBuilder","trackType","extraParameters","buildUrlWithParameters","createEndpointUrlWithParametersBuilder","api","payload","buildEndpointParameters","path","proxy","normalizedProxyUrl","host","buildEndpointHost","site","internalAnalyticsSubdomain","domainParts","extension","clientToken","retry","encoding","computeTransportConfiguration","validateSource","endpointBuilders","computeEndpointBuilders","replicaConfiguration","computeReplicaConfiguration","isIntakeUrl","param","DefaultPrivacyLevel","TraceContextInjection","isString","isDatadogSite","isSampleRate","sampleRate","validateAndBuildConfiguration","_c","_d","_e","_f","_g","_h","_j","_k","serializeConfiguration","ExperimentalFeature","enabledExperimentalFeatures","initFeatureFlags","enableExperimentalFeatures","addExperimentalFeatures","flag","enabledFeatures","isExperimentalFeatureEnabled","featureName","getExperimentalFeatures","UNKNOWN_FUNCTION","computeStackTrace","ex","stackProperty","tryToGetString","exString","stackFrame","parseChromeLine","parseChromeAnonymousLine","parseWinLine","parseGeckoLine","isWronglyReportingCustomErrors","constructors","currentPrototype","isNonNativeClassPrototype","constructorName","fileUrl","filePosition","CHROME_LINE_RE","CHROME_EVAL_RE","parts","isNative","isEval","submatch","CHROME_ANONYMOUS_FUNCTION_RE","WINJS_LINE_RE","GECKO_LINE_RE","GECKO_EVAL_RE","property","computeStackTraceFromOnErrorMessage","messageObj","column","message","tryToParseMessage","ERROR_TYPES_RE","prototype","isWronglyReportingCustomErrorsCache","DatadogTestCustomError","customError","nativeError","errConstructor","createHandlingStack","formattedStack","stackTrace","toStackTraceString","formatErrorMessage","frame","instrumentMethod","targetPrototype","onPreCall","computeHandlingStack","instrumentation","postCallCallback","instrumentSetter","after","originalDescriptor","stoppedInstrumentation","instrumentationWrapper","ONE_KIBI_BYTE","ONE_MEBI_BYTE","HAS_MULTI_BYTES_CHARACTERS","computeBytesCount","concatBuffers","buffers","total","buffer","offset","jsonStringify","space","restoreObjectPrototypeToJson","detachToJsonMethod","restoreArrayPrototypeToJson","restoreValuePrototypeToJson","restoreValueToJson","objectToJson","SANITIZE_DEFAULT_MAX_CHARACTER_COUNT","JSON_PATH_ROOT_ELEMENT","KEY_DECORATION_LENGTH","sanitize","maxCharacterCount","containerQueue","visitedObjectsWithPath","sanitizedData","sanitizeProcessor","serializedSanitizedData","accumulatedCharacterCount","warnOverCharacterLimit","containerToProcess","separatorLength","targetData","parentPath","queue","sourceToSanitize","tryToApplyToJSON","sanitizePrimitivesAndFunctions","sanitizedSource","sanitizeObjects","sourceAsObject","currentPath","sanitizeEvent","changeType","NO_ERROR_STACK_PRESENT_MESSAGE","computeErrorBase","originalError","useFallbackStack","nonErrorPrefix","isErrorInstance","isError","computeMessage","computeRawError","handlingStack","componentStack","startClocks","handling","errorBase","flattenErrorCauses","tryToGetFingerprint","tryToGetErrorContext","getFileFromStackTraceString","parentSource","causes","currentCause","causeBase","ErrorSource","trackRuntimeError","handleRuntimeError","rawError","stopInstrumentingOnError","instrumentOnError","stopInstrumentingOnUnhandledRejection","instrumentUnhandledRejection","errorObj","makePublicApi","stub","publicApi","defineGlobal","existingGlobalVariable","displayAlreadyInitializedError","sdkName","addEventListener","eventTarget","eventName","listener","addEventListeners","eventNames","once","passive","listenerWithMonitor","listenerTarget","add","remove","RawReportType","initReportObservable","apis","createCspViolationReportObservable","reportTypes","createReportObservable","handleReports","reports","report","buildRawReportErrorFromReport","buildRawReportErrorFromCspViolation","body","buildRawReportError","buildStack","partial","sourceFile","lineNumber","columnNumber","TAG_SIZE_LIMIT","buildTags","env","service","datacenter","sdkVersion","variant","tags","buildTag","rawValue","hasForbiddenCharacters","sanitizeTag","supportUnicodePropertyEscapes","sendToExtension","mergeInto","destination","circularReferenceChecker","createCircularReferenceChecker","merged","deepClone","combine","sources","getConnectivity","isServerError","status","tryToClone","response","MAX_ONGOING_BYTES_COUNT","MAX_ONGOING_REQUESTS","MAX_QUEUE_BYTES_COUNT","MAX_BACKOFF_TIME","INITIAL_BACKOFF_TIME","sendWithRetryStrategy","sendStrategy","reportError","requestObservable","send","retryQueuedPayloads","scheduleRetry","onSuccess","onFailure","shouldRetryRequest","reason","previousQueue","newPayloadQueue","newRetryState","newBandwidthMonitor","RECOMMENDED_REQUEST_BYTES_LIMIT","createHttpRequest","bytesLimit","retryState","endpointBuilder","onResponse","fetchStrategy","fetchKeepAliveStrategy","sendBeaconStrategy","beaconUrl","reportBeaconError","hasReportedBeaconError","isKeepAliveSupported","fetchUrl","getEventBridge","eventBridgeGlobal","getEventBridgeGlobal","eventType","viewId","view","bridgeSupports","bridge","canUseEventBridge","currentHost","allowedHost","PageExitReason","createPageMayExitObservable","stopListeners","stopBeforeUnloadListener","isPageExitReason","MESSAGE_BYTES_LIMIT","createBatch","encoder","request","flushController","upsertBuffer","flushSubscription","flush","serializedMessage","estimatedMessageBytesCount","realMessageBytesCount","hasMessageFor","removedMessage","messageBytesCount","addOrUpdate","upsertMessages","pageMightExit","encoderResult","formatPayloadFromEncoder","pendingMessages","FLUSH_DURATION_LIMIT","MESSAGES_LIMIT","createFlushController","pageMayExitObservable","sessionExpireObservable","pageMayExitSubscription","sessionExpireSubscription","flushObservable","currentBytesCount","currentMessagesCount","flushReason","messagesCount","bytesCount","cancelDurationLimitTimeout","durationLimitTimeoutId","scheduleDurationLimitTimeout","messageBytesCountDiff","DISCARDED","SKIPPED","abstractHooks","callbacks","hookName","cb","hookCallbacks","results","TelemetryType","ALLOWED_FRAME_URLS","METRIC_SAMPLE_RATE","TELEMETRY_EXCLUDED_SITES","MAX_TELEMETRY_EVENTS_PER_PAGE","telemetryObservable","getTelemetryObservable","startTelemetry","telemetryService","hooks","createEncoder","startTelemetryTransport","enabled","metricsEnabled","startTelemetryCollection","metricSampleRate","maxTelemetryEventsPerPage","alreadySentEventsByKind","telemetryEnabled","telemetryEnabledPerType","runtimeEnvInfo","getRuntimeEnvInfo","rawEvent","metricName","alreadySentEvents","stringifiedEvent","defaultTelemetryEventAttributes","toTelemetryEvent","addTelemetryError","cleanupTasks","telemetrySubscription","endpoints","isTelemetryReplicationAllowed","telemetryBatch","task","addTelemetryDebug","formatError","addTelemetryConfiguration","addTelemetryMetrics","addTelemetryUsage","usage","scrubCustomerFrames","allowedFrameUrl","removeDuplicates","removeItem","isNonEmptyArray","END_OF_TIMES","CLEAR_OLD_VALUES_INTERVAL","cleanupHistoriesInterval","cleanupHistories","createValueHistory","maxEntries","entries","clearExpiredValues","oldTimeThreshold","startTime","endTime","find","closeActive","latestEntry","findAll","reset","SYNTHETICS_TEST_ID_COOKIE_NAME","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","getSyntheticsTestId","getSyntheticsResultId","isSyntheticsTest","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","startSessionManager","trackingConsentState","sessionContextHistory","buildSessionContext","detectSessionIdChange","trackActivity","trackVisibility","trackResume","reportUnexpectedSessionState","expandOrRenewSession","expandSessionWhenVisible","rawSession","cookieContext","getSessionCookies","initialSessionState","sessionCreatedTime","sdkInitTime","changed","change","sessionAge","newSessionState","sessionCookies","createIdentityEncoder","output","outputBytesCount","additionalEncodedBytesCount","AbstractLifeCycle","eventCallbacks","EVENT_RATE_LIMIT","createEventRateLimiter","onLimitReached","limit","eventCount","allowNextEvent","runOnReadyState","expectedReadyState","asyncRunOnReadyState","xhrObservable","xhrContexts","initXhrObservable","createXhrObservable","stopInstrumentingStart","openXhr","stopInstrumentingSend","sendXhr","stopInstrumentingAbort","abortXhr","xhr","startContext","hasBeenReported","stopInstrumentingOnReadyStateChange","onEnd","unsubscribeLoadEndListener","completeContext","readBytesFromStream","stream","reader","chunks","fetchObservable","responseBodyActionGetters","initFetchObservable","responseBodyAction","createFetchObservable","beforeSend","onPostCall","init","methodFromParams","responsePromise","afterSend","responseBodyCondition","action","getter","clonedResponse","bytes","requestIdleCallback","requestIdleCallbackShim","MAX_TASK_TIME","IDLE_CALLBACK_TIMEOUT","MAX_EXECUTION_TIME_ON_TIMEOUT","createTaskQueue","pendingTasks","run","deadline","executionTimeRemaining","scheduleNextRun","consoleObservablesByApi","initConsoleObservable","consoleObservables","createConsoleObservable","originalConsoleApi","params","buildConsoleLog","formatConsoleParameters","firstErrorParam","BUFFER_LIMIT","createBoundedBuffer","arg","checkContext","maybeContext","isValid","ensureProperties","propertiesConfig","newContext","required","isDefined","createContextManager","changeObservable","contextManager","defineContextMethod","getStrategy","contextName","methodName","bufferContextCalls","preStartContextManager","bufferApiCalls","startResult","CONTEXT_STORE_KEY_PREFIX","storageListeners","storeContextManager","customerDataType","storageKey","buildStorageKey","synchronizeWithStorage","dumpToStorage","contextFromStorage","getFromStorage","rawContext","startAccountContext","accountContextManager","buildAccountContextManager","account","startGlobalContext","useContextNamespace","globalContextManager","buildGlobalContextManager","startUserContext","sessionManager","userContextManager","buildUserContextManager","user","CustomerContextKey","ContextManagerMethod","ResourceType","RequestType","startBufferingData","trackRuntimeErrorImpl","runtimeErrorSubscription","getTimeZone","RumEventType","RumLongTaskEntryType","ViewLoadingType","ActionType","FrustrationType","VitalType","createCustomVitalsState","startVitalCollection","lifeCycle","pageStateHistory","customVitalsState","vital","addDurationVital","processVital","addOperationStepVital","stepType","failureReason","operationKey","description","startDurationVital","nameOrRef","stopDurationVital","vitalsByName","vitalsByReference","reference","stopCallback","vitalStart","buildDurationVital","stopOptions","stopClocks","vitalData","callPluginsMethod","plugins","parameter","plugin","sampleDecisionCache","isSampled","sessionId","cachedDecision","decision","sampleUsingKnuthFactor","identifier","knuthFactor","twoPow64","hash","createTraceIdentifier","createIdentifier","createSpanIdentifier","bits","radix","high","low","mod","toPaddedHexadecimalString","isTracingOption","expectedItem","clearTracingIfNeeded","startTracer","userContext","accountContext","injectHeadersIfTracingAllowed","tracingHeaders","headers","header","inject","tracingOption","traceSampled","makeTracingHeaders","traceId","spanId","propagatorTypes","propagatorType","baggageItems","userId","accountId","baggageHeader","DEFAULT_PROPAGATOR_TYPES","validateAndBuildRumConfiguration","allowedTracingUrls","validateAndBuildTracingOptions","baseConfiguration","allowedGraphQlUrls","validateAndBuildGraphQlOptions","sessionReplaySampleRate","tracingOptions","option","getSelectedTracingPropagators","usedTracingPropagators","graphQlOptions","hasGraphQlPayloadTracking","hasGraphQlResponseErrorsTracking","serializeRumConfiguration","baseSerializedConfiguration","parseJsonPath","selectors","previousToken","currentToken","parsingContext","currentSelector","char","ALLOWED_NEXT_TOKENS","token","TOKEN_PREDICATE","isValidEscapeSequence","resolveEscapeSequence","ALLOWED_SELECTOR_TOKENS","ALLOWED_SELECTOR_DELIMITER_TOKENS","NAME_SHORTHAND_FIRST_CHAR_REGEX","NAME_SHORTHAND_CHAR_REGEX","DIGIT_REGEX","UNICODE_CHAR_REGEX","QUOTE_CHARS","escapeSequence","ESCAPED_CHARS","REMOTE_CONFIGURATION_VERSION","SUPPORTED_FIELDS","fetchAndApplyRemoteConfiguration","supportedContextManagers","rumInitConfiguration","metrics","initMetrics","fetchResult","fetchRemoteConfiguration","applyRemoteConfiguration","rumRemoteConfiguration","appliedConfiguration","resolveConfigurationProperty","resolveContextProperty","isSerializedOption","resolveRegex","resolveDynamicOption","contextItems","strategy","resolvedValue","resolveCookieValue","resolveDomValue","resolveJsValue","extractor","extractValue","selector","attribute","isForbidden","domValue","pathParts","pathPart","pattern","resolvedExtractor","regexResult","buildEndpoint","remoteConfiguration","createPreStartStrategy","ignoreInitIfSyntheticsWillInjectRum","startDeflateWorker","doStartRum","globalContext","firstStartViewCall","deflateWorker","cachedInitConfiguration","cachedConfiguration","trackingConsentStateSubscription","tryStartRum","emptyContext","initialViewOptions","startRumResult","doInit","eventBridgeAvailable","overrideInitConfigurationForBridge","providedError","makeRumPublicApi","startRumImpl","recorderApi","profilerApi","bufferedDataObservable","streamId","createPostStartStrategy","startView","sanitizedOptions","rumPublicApi","preStartStrategy","createDOMMutationObservable","MutationObserver","getMutationObserverConstructor","records","patchedInstance","originalInstance","createWindowOpenObservable","startInternalContext","applicationId","viewHistory","actionContexts","urlContexts","viewContext","urlContext","actionId","LifeCycle","VIEW_CONTEXT_TIME_OUT_DELAY","startViewHistory","viewValueHistory","buildViewHistoryEntry","endClocks","viewUpdate","currentView","FAKE_INITIAL_DOCUMENT","RESOURCE_TYPES","initiatorType","computeResourceEntryType","isType","areInOrder","numbers","isResourceEntryRequestType","computeResourceEntryDuration","responseEnd","computeResourceEntryDetails","hasValidResourceEntryTimings","fetchStart","workerStart","redirectStart","redirectEnd","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseStart","details","formatTiming","hasValidResourceEntryDuration","areCommonTimingsInOrder","areRedirectionTimingsInOrder","hasRedirection","origin","computeResourceEntryProtocol","computeResourceEntryDeliveryType","computeResourceEntrySize","encodedBodySize","decodedBodySize","transferSize","isAllowedRequestUrl","DATA_URL_REGEX","MAX_RESOURCE_VALUE_CHAR_LENGTH","sanitizeIfLongDataUrl","lengthLimit","dataUrlMatchArray","GRAPHQL_PAYLOAD_LIMIT","extractGraphQlMetadata","graphQlConfig","extractGraphQlRequestMetadata","responseErrors","parseGraphQlResponse","responseText","responseObj","findGraphQlConfiguration","graphQlOption","requestBody","trackPayload","graphqlBody","operationType","trimmedQuery","getOperationType","operationName","variables","query","nextRequestIndex","startRequestCollection","tracer","trackXhr","trackFetch","getNextRequestIndex","discardNegativeDuration","trackEventCounts","isChildEvent","eventCounts","retrieveFirstInputTiming","startTimeStamp","timingSent","removeEventListeners","evt","timing","sendTimingIfPointerIsNotCancelled","sendTiming","RumPerformanceEntryType","createPerformanceObservable","handlePerformanceEntries","rumPerformanceEntries","filterRumPerformanceEntries","isObserverInitializing","manageResourceTimingBufferFull","stopFirstInputTiming","supportPerformanceTimingEvent","resourceTimingBufferFullListener","supportPerformanceObject","entryType","isForbiddenResource","isTextNode","node","isCommentNode","isElementNode","isNodeShadowHost","isNodeShadowRoot","shadowRoot","hasChildNodes","forEachChildNodes","child","getParentNode","PAGE_ACTIVITY_VALIDATION_DELAY","PAGE_ACTIVITY_END_DELAY","EXCLUDED_MUTATIONS_ATTRIBUTE","waitPageActivityEnd","domMutationObservable","windowOpenObservable","pageActivityEndCallback","maxDuration","pageActivityObservable","createPageActivityObservable","doWaitPageActivityEnd","pageActivityEndTimeoutId","hasCompleted","validationTimeoutId","complete","maxDurationTimeoutId","pageActivitySubscription","isBusy","lastChangeTime","firstRequestIndex","pendingRequestsCount","mutations","isExcludedMutation","notifyPageActivity","isExcludedUrl","startEvent","s","requestUrl","mutation","targetElement","DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE","ACTION_NAME_PLACEHOLDER","STABLE_ATTRIBUTES","GLOBALLY_UNIQUE_SELECTOR_GETTERS","getStableAttributeSelector","getIDSelector","UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS","getClassSelector","getTagNameSelector","getSelectorFromElement","actionNameAttribute","targetElementSelector","currentElement","globallyUniqueSelector","findSelector","isSelectorUniqueGlobally","isSelectorUniqueAmongSiblings","combineSelector","getPositionSelector","isGeneratedValue","classList","className","getAttributeSelector","attributeName","sibling","elementIndex","selectorGetters","childSelector","selectorGetter","elementSelector","currentElementSelector","isSiblingMatching","scopedSelector","parent","NodePrivacyLevel","PRIVACY_ATTR_NAME","PRIVACY_ATTR_VALUE_HIDDEN","PRIVACY_CLASS_PREFIX","CENSORED_STRING_MARK","CENSORED_IMG_MARK","FORM_PRIVATE_TAG_NAMES","TEXT_MASKING_CHAR","getPrivacySelector","privacyLevel","getNodePrivacyLevel","defaultPrivacyLevel","cache","parentNode","parentNodePrivacyLevel","selfNodePrivacyLevel","getNodeSelfPrivacyLevel","nodePrivacyLevel","reducePrivacyLevel","childPrivacyLevel","inputElement","autocomplete","shouldIgnoreElement","shouldMaskNode","isFormElement","isAllowlisted","shouldMaskAttribute","attributeValue","censorText","text","getTextContent","textNode","parentTagName","textContent","maskDisallowedTextContent","relAttribute","getLowerCaseAttribute","nameAttribute","propertyAttribute","fixedMask","MAX_DURATION_BETWEEN_CLICKS","MAX_DISTANCE_BETWEEN_CLICKS","createClickChain","firstClick","onFinalize","bufferedClicks","maxDurationBetweenClicksTimeoutId","appendClick","click","tryFinalize","dontAcceptMoreClick","areEventsSimilar","mouseEventDistance","getActionNameFromElement","rumConfiguration","nodePrivacyLevelCache","userProgrammaticAttribute","defaultActionName","getActionNameFromElementProgrammatically","getActionNameFromElementForStrategies","priorityStrategies","fallbackStrategies","programmaticAttribute","elementWithAttribute","truncate","normalizeWhitespace","getActionNameFromTextualContent","getActionNameFromStandardAttribute","labelledByAttribute","getElementById","label","getTextualContent","MAX_PARENTS_TO_CONSIDER","strategies","recursionCounter","actionName","nameSource","trimmedName","refElement","enablePrivacyForActionName","getTextualContentWithTreeWalker","removeTextFromElements","textToReplace","privacyEnabledActionName","walker","rejectInvisibleOrMaskedElementsFilter","nodeSelfPrivacyLevel","style","listenActionEvents","onPointerUp","selectionEmptyAtPointerDown","userActivity","clickContext","listeners","isValidPointerEvent","isSelectionEmpty","localUserActivity","selection","MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE","computeFrustration","clicks","rageClick","isRage","isDead","hasSelectionChanged","DEAD_CLICK_EXCLUDE_SELECTOR","CLICK_ACTION_MAX_DURATION","interactionSelectorCache","getInteractionSelector","relativeTimestamp","updateInteractionSelector","ACTION_CONTEXT_TIME_OUT_DELAY","trackClickActions","history","stopObservable","currentClickChain","stopClickChain","stopActionEventsListener","pointerDownEvent","processPointerDown","clickActionBase","hadActivityOnPointerDown","getUserActivity","startClickAction","appendClickToClickChain","finalizeClicks","computeClickActionBase","pageActivityEndEvent","newClick","stopWaitPageActivityEnd","viewEndedSubscription","stopSubscription","rect","historyEntry","eventCountsSubscription","activityEndTime","frustrationTypes","newActivityEndTime","frustrationType","domEvents","resourceCount","errorCount","longTaskCount","clickAction","LONG_TASK_START_TIME_CORRECTION","startActionCollection","unsubscribeAutoAction","processAction","correctedStartTime","autoActionProperties","isAutoAction","actionEvent","domainContext","trackConsoleError","errorObservable","consoleLog","trackReportError","startErrorCollection","bufferedData","doStartErrorCollection","processError","rawRumEvent","alreadyMatchedEntries","matchRequestResourceEntry","sameNameEntries","candidates","isBetween","INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD","getDocumentTraceId","getDocumentTraceDataFromMeta","getDocumentTraceDataFromComment","traceIdMeta","traceTimeMeta","createDocumentTraceData","comment","findTraceComment","rawTraceTime","traceTime","getTraceCommentFromNode","getNavigationEntry","navigationEntry","timings","computeTimingsFromDeprecatedPerformanceTiming","numberKey","timingElement","retrieveInitialDocumentResourceTiming","getNavigationEntryImpl","MAX_REQUESTS","createRequestRegistry","requests","minTimeDifference","closestRequest","timeDifference","startResourceCollection","taskQueue","retrieveInitialDocumentResourceTimingImpl","requestRegistry","isEarlyRequestCollectionEnabled","handleResource","processRequest","performanceResourceSubscription","processResourceEntry","computeRawEvent","matchingTiming","assembleResource","matchingRequest","tracingInfo","computeRequestTracingInfo","computeResourceEntryTracingInfo","computeRequestDuration","graphql","computeGraphQlMetaData","resourceEvent","discardZeroStatus","computeResourceEntryMetrics","getResourceDomainContext","baseDomainContext","renderBlockingStatus","statusCode","trackViewEventCounts","onChange","FCP_MAXIMUM_DELAY","trackFirstContentfulPaint","firstHidden","fcpEntry","trackRestoredFirstContentfulPaint","viewStartRelative","trackFirstInput","performanceFirstInputSubscription","firstInputEntry","firstInputDelay","firstInputTargetSelector","trackNavigationTimings","waitAfterLoadEvent","isIncompleteNavigation","processNavigationEntry","stopOnReadyState","LCP_MAXIMUM_DELAY","trackLargestContentfulPaint","firstInteractionTimestamp","stopEventListener","biggestLcpSize","performanceLcpSubscription","lcpEntry","lcpTargetSelector","computeLcpEntryUrl","trackFirstHidden","viewStart","firstHiddenEntry","trackInitialViewMetrics","setLoadEvent","scheduleViewUpdate","initialViewMetrics","stopNavigationTracking","navigationTimings","stopFCPTracking","firstContentfulPaint","stopLCPTracking","largestContentfulPaint","stopFIDTracking","firstInput","calculateArea","width","height","calculateIntersectionArea","rect1","rect2","left","top","right","bottom","getClsAttributionImpactedArea","previousArea","currentArea","intersectionArea","trackCumulativeLayoutShift","isLayoutShiftSupported","maxClsValue","biggestShift","slidingWindow","slidingSessionWindow","performanceSubscription","cumulatedValue","isMaxValue","attribution","getTopImpactedElement","asRumRect","topImpactedSource","currentImpactedArea","y","MAX_WINDOW_DURATION","MAX_UPDATE_GAP","maxValue","shouldCreateNewWindow","interactionCountEstimate","minKnownInteractionId","maxKnownInteractionId","initInteractionCountPolyfill","getInteractionCount","MAX_INTERACTION_ENTRIES","MAX_INP_VALUE","trackInteractionToNextPaint","viewLoadingType","isInteractionToNextPaintSupported","getViewInteractionCount","stopViewInteractionCount","trackViewInteractionCount","viewEnd","longestInteractions","trackLongestInteractions","interactionToNextPaint","interactionToNextPaintTargetSelector","interactionToNextPaintStartTime","handleEntries","newInteraction","firstInputSubscription","eventSubscription","viewEndTime","sortAndTrimLongestInteractions","interactionIndex","interaction","minLongestInteraction","previousInteractionCount","computeViewInteractionCount","trackLoadingTime","loadType","isWaitingForLoadEvent","isWaitingForActivityLoadingTime","loadingTimeCandidates","invokeCallbackIfAllCandidatesAreReceived","loadingTime","loadEvent","getScrollX","scrollX","visual","getScrollY","scrollY","viewportObservable","initViewportObservable","createViewportObservable","updateDimension","getViewportDimension","THROTTLE_SCROLL_DURATION","trackScrollMetrics","scrollValues","createScrollValuesObservable","maxScrollDepth","maxScrollHeight","maxScrollHeightTime","scrollDepth","scrollTop","scrollHeight","shouldUpdate","now","computeScrollValues","throttleDuration","notify","throttledNotify","observerTarget","resizeObserver","eventListener","trackCommonViewMetrics","loadingType","commonViewMetrics","stopLoadingTimeTracking","newLoadingTime","stopScrollMetricsTracking","newScrollMetrics","stopCLSTracking","cumulativeLayoutShift","stopINPTracking","getInteractionToNextPaint","setViewEnd","onBFCacheRestore","trackBfcacheMetrics","paintTime","THROTTLE_VIEW_UPDATE_PERIOD","SESSION_KEEP_ALIVE_INTERVAL","KEEP_TRACKING_AFTER_VIEW_DELAY","trackViews","location","locationChangeObservable","areViewsTrackedAutomatically","activeViews","startNewView","stopOnBFCacheRestore","startViewLifeCycle","locationChangeSubscription","renewViewOnLocationChange","pageshowEvent","viewOptions","newlyCreatedView","newView","oldLocation","newLocation","areDifferentLocation","initialLocation","customTimings","documentVersion","sessionIsActive","viewCreatedEvent","throttled","cancelScheduleViewUpdate","triggerViewUpdate","stopCommonViewMetricsTracking","getCommonViewMetrics","stopInitialViewMetricsTracking","stopEventCountsTracking","keepAliveIntervalId","pageMayExitEvent","triggerBeforeViewUpdate","currentEnd","sanitizeTiming","updatedName","sanitized","currentLocation","otherLocation","isHashAnAnchor","getPathFromHash","correspondingId","startViewCollection","pageOpenObservable","processViewUpdate","_l","_m","_o","_p","_q","_r","_s","_t","replayStats","clsDevicePixelRatio","viewEvent","computeViewPerformanceData","startRumSessionManager","rawTrackingType","previousState","newState","sessionEntity","startRumSessionManagerStub","hasValidRumSession","startRumBatch","batch","serverRumEvent","startRumEventBridge","URL_CONTEXT_TIME_OUT_DELAY","startUrlContexts","urlContextHistory","previousViewUrl","viewUrl","buildUrlContext","changeTime","createLocationChangeObservable","stopHistoryTracking","trackHistory","onLocationChange","stopHashTracking","trackHash","onHistoryChange","stopInstrumentingPushState","getHistoryInstrumentationTarget","stopInstrumentingReplaceState","removeListener","onHashChange","FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY","startFeatureFlagContexts","featureFlagContexts","featureFlagContext","currentContext","MEASURES_PERIOD_DURATION","currentPeriodMeasures","batchHasRumEvent","startCustomerDataTelemetry","telemetry","batchFlushObservable","initCurrentPeriodMeasures","updateMeasure","sendCurrentPeriodMeasures","createMeasure","measure","MAX_PAGE_STATE_ENTRIES","MAX_PAGE_STATE_ENTRIES_SELECTABLE","PAGE_STATE_CONTEXT_TIME_OUT_DELAY","startPageStateHistory","maxPageStateEntriesSelectable","pageStateEntryHistory","currentPageState","addPageState","getPageState","stopEventListeners","computePageState","nextPageState","wasInPageStateDuringPeriod","pageState","pageStates","processPageStates","pageStateEntries","eventStartTime","startDisplayContext","viewport","animationFrameId","unsubscribeViewport","viewportDimension","createCookieObservable","cookieName","detectCookieChangeStrategy","listenToCookieStoreChange","watchCookieFallback","changeEvent","WATCH_COOKIE_INTERVAL_DELAY","previousCookieValue","watchCookieIntervalId","cookieValue","CI_VISIBILITY_TEST_ID_COOKIE_NAME","startCiVisibilityContext","cookieObservable","testExecutionId","cookieObservableSubscription","LONG_TASK_ID_HISTORY_TIME_OUT_DELAY","startLongTaskCollection","taskId","processEntry","baseEvent","script","startSyntheticsContext","testId","resultId","limitModification","modifiableFieldPaths","modifier","clone","fieldPath","fieldType","setValueAtPath","pathSegments","field","restPathSegments","isValidObject","setNestedValue","newType","VIEW_MODIFIABLE_FIELD_PATHS","USER_CUSTOMIZABLE_FIELD_PATHS","ROOT_MODIFIABLE_FIELD_PATHS","modifiableFieldPathsByEvent","startRumAssembly","eventRateLimit","eventRateLimiters","defaultRumEventAttributes","shouldSend","startSessionContext","hasReplay","sampledForReplay","isActive","startConnectivityContext","startDefaultContext","startTrackingConsentContext","createHooks","allowedEventTypes","startEventCollection","startInitialViewMetricsTelemetry","unsubscribe","createCoreInitialViewMetrics","lcp","navigation","startRum","stopInitialViewMetricsTelemetry","startRumEventCollection","stopRumEventCollection","startRumEventCollectionResult","stopWindowOpen","actionCollection","eventCollection","displayContext","ciVisibilityContext","addTiming","setViewName","setViewContext","setViewContextProperty","getViewContext","stopViewCollection","stopResourceCollection","stopLongTaskCollection","longTaskContexts","addError","vitalCollection","internalContext","getSessionReplayUrl","errorType","getDatadogSiteUrl","subdomain","getSiteDefaultSubdomain","MAX_STATS_HISTORY","statsPerView","getSegmentsCount","getOrCreateReplayStats","addSegment","addRecord","addWroteData","additionalBytesCount","getReplayStats","deleteOldestStats","toDelete","createDeflateEncoder","worker","rawBytesCount","compressedData","compressedDataTrailer","isEmpty","nextWriteActionId","pendingWriteActions","removeMessageListener","workerResponse","nextPendingAction","consumeResult","sendResetIfNeeded","pendingWriteAction","pendingData","reportScriptLoadingError","configuredUrl","scriptType","isMessageCspRelated","baseMessage","INITIALIZATION_TIME_OUT_DELAY","createDeflateWorker","onInitializationFailure","createDeflateWorkerImpl","doStartDeflateWorker","getDeflateWorkerStatus","removeErrorListener","onError","onInitialized","onTimeout","isBrowserSupported","getSessionReplayLink","isRecordingStarted","getErrorType","startRecorderInitTelemetry","documentReadyDuration","recorderSettledDuration","createRecorderInitMetrics","forced","loadRecorderModuleDuration","recorderInitDuration","waitForDocReadyDuration","loadRecorder","getOrCreateDeflateEncoder","stopRecording","doStart","startRecordingImpl","notifyWhenSettled","deflateEncoder","canStartRecording","isRecordingInProgress","shouldForceReplay","makeRecorderApi","shouldStartImmediately","onRumStart","getReplayStatsImpl","cachedDeflateEncoder","lazyLoadRecorder","importRecorderImpl","importRecorder","__vitePreload","isProfilingSupported","startProfilingContext","lazyLoadProfiler","importProfilerImpl","importProfiler","makeProfilerApi","profiler","profilingContextManager","createRumProfiler","datadogRum","isAuthorized","handlerType","logger","loggerHandler","sanitizedHandlerType","STATUS_PRIORITIES","StatusType","createErrorFieldFromRawError","includeMessage","__decorate","decorators","desc","c","r","d","HandlerType","STATUSES","Logger","handleLogStrategy","level","loggerContext","messageContext","sanitizedMessageContext","sanitizedKey","handler","createLoggerMethod","buildCommonContext","DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT","validateAndBuildLogsConfiguration","forwardConsoleLogs","validateAndBuildForwardOption","forwardReports","allowedValues","serializeLogsConfiguration","baseSerializedInitConfiguration","getCommonContext","doStartLogs","tryStartLogs","startLogsResult","statusType","makeLogsPublicApi","startLogsImpl","customLoggers","mainLogger","conf","startLogsSessionManager","startLogsSessionManagerStub","hasValidLoggerSession","startLogsAssembly","statusWithCustom","logRateLimiters","rawLogsEvent","savedCommonContext","ddtags","commonContext","defaultLogsEventAttributes","defaultDdtags","log","LogStatusForApi","startConsoleCollection","consoleSubscription","collectedData","startReportCollection","reportSubscription","startNetworkErrorCollection","xhrSubscription","handleResponse","fetchSubscription","isNetworkError","isRejected","format","startRuntimeErrorCollection","rawErrorSubscription","startLoggerCollection","handleLog","logsMessage","savedDate","displayInConsole","rawLogEventData","loggerToConsoleApiName","startLogsBatch","serverLogsEvent","startLogsBridge","trackedSession","startReportError","startRUMInternalContext","getRUMInternalContext","rumSource","rumContext","getInternalContextFromRumGlobal","rumGlobal","isConsented","LOGS_STORAGE_KEY","startLogs","stopLogsBatch","datadogLogs","ILogger","LoggerConfig","ChildLoggerConfig","NodeConfig","BrowserConfig","BaseConfig","LogMethod","__createBinding","o","k2","__exportStar","exports","p","tryStringify","quickFormatUnescaped","ss","objects","argLen","lastPos","flen","browserModule","pino","_console","pfGlobalThisOrFallback","stdSerializers","mock","passthrough","asErrValue","levelToValue","baseLogFunctionSymbol","hierarchySymbol","logFallbackMap","appendChildLogger","parentLogger","childLogger","newEntry","setupBaseLogFunctions","levels","proto","logFunctions","shouldSerialize","serialize","serializers","transmit","stdErrSerialize","customLevels","getLevelVal","getLevel","setLevel","setOpts","getTimeFunction","getLevels","createLogEventShape","bindings","childOptions","childOptionsSerializers","childSerializers","childSerialize","applySerializers","Child","newLogger","labels","invertObject","inverted","nullTime","epochTime","unixTime","isoTime","getBindingChain","hierarchy","self","rootLogger","transmitLevel","transmitValue","createWrap","prependBindingsInArguments","logFunc","write","ts","argsIsSerialized","asObject","methodValue","levelFormatter","logObjectFormatter","argsCloned","msg","logObject","lvl","formattedLevel","methodLevel","defd","__importDefault","createLogger_1","createLogger","pino_1","configOrDestination","createLoggerHttpMiddleware_1","createLoggerHttpMiddleware","genReqId","logRequest","req","res","middlewareLogger","onRequestComplete","initDatadogLogs","parseLogObject","_msg","_level","_time","_error","writeLog","consoleMethod","datadogLevel","writeError","setLogger","_logger","APPLICATION_ID","CLIENT_TOKEN","initRumGlobal","InitializationErrorReason","InitializationError","isVWRInitializationError","exitIfBackNavigation","platform","navEntry","exitApp","exitSamsungApp","exitLGAppViaBackNavigation","exitFireTVApp","CONFIG_URL","CONFIG_FILE","loadVwr","rum","totalStartTime","initializeVwr","PLATFORM","HUB_URL","SHELL_VERSION","handleInitializationError","normalizedError","cleanupBackHandler","fallbackUrl","gameControllerUrl"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356],"sources":["../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/global-this.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/fails.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/descriptors.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/function-bind-native.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/function-call.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/object-property-is-enumerable.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/create-property-descriptor.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/function-uncurry-this.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/classof-raw.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/indexed-object.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/is-null-or-undefined.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/require-object-coercible.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/to-indexed-object.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/is-callable.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/is-object.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/get-built-in.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/object-is-prototype-of.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/environment-user-agent.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/environment-v8-version.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/symbol-constructor-detection.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/use-symbol-as-uid.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/is-symbol.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/try-to-string.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/a-callable.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/get-method.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/ordinary-to-primitive.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/define-global-property.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/shared-store.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/shared.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/to-object.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/has-own-property.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/uid.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/well-known-symbol.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/to-primitive.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/to-property-key.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/document-create-element.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/ie8-dom-define.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/object-get-own-property-descriptor.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/v8-prototype-define-bug.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/an-object.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/object-define-property.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/create-non-enumerable-property.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/function-name.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/inspect-source.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/weak-map-basic-detection.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/shared-key.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/hidden-keys.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/internal-state.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/make-built-in.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/define-built-in.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/math-trunc.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/to-integer-or-infinity.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/to-absolute-index.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/to-length.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/length-of-array-like.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/array-includes.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/object-keys-internal.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/enum-bug-keys.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/object-get-own-property-names.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/object-get-own-property-symbols.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/own-keys.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/copy-constructor-properties.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/is-forced.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/export.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/modules/es.global-this.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/is-array.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/does-not-exceed-safe-integer.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/function-uncurry-this-clause.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/function-bind-context.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/flatten-into-array.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/to-string-tag-support.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/classof.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/is-constructor.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/array-species-constructor.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/array-species-create.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/modules/es.array.flat.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/modules/es.array.flat-map.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/iterators.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/is-array-iterator-method.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/get-iterator-method.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/get-iterator.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/iterator-close.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/iterate.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/create-property.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/modules/es.object.from-entries.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/object-keys.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/object-define-properties.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/html.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/object-create.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/correct-prototype-getter.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/object-get-prototype-of.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/iterators-core.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/set-to-string-tag.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/iterator-create-constructor.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/create-iter-result-object.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/to-string.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/is-regexp.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/regexp-flags-detection.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/regexp-flags.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/regexp-get-flags.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/a-constructor.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/species-constructor.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/string-multibyte.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/advance-string-index.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/regexp-sticky-helpers.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/regexp-unsupported-dot-all.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/regexp-unsupported-ncg.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/regexp-exec.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/regexp-exec-abstract.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/modules/es.string.match-all.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/new-promise-capability.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/perform.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/promise-native-constructor.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/check-correctness-of-iteration.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/environment.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/promise-constructor-detection.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/promise-statics-incorrect-iteration.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/modules/es.promise.all-settled.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/get-substitution.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/modules/es.string.replace-all.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/internals/add-to-unscopables.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/modules/es.array.at.js","../../../node_modules/.pnpm/core-js@3.47.0/node_modules/core-js/modules/es.string.at-alternative.js","../../../node_modules/.pnpm/focus-visible@5.2.1/node_modules/focus-visible/dist/focus-visible.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/display.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/utils/numberUtils.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/utils/objectUtils.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/globalObject.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/getZoneJsOriginalValue.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/monitor.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/timer.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/queueMicrotask.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/observable.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/utils/timeUtils.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/utils/functionUtils.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/utils/stringUtils.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/utils/browserDetection.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/utils/urlPolyfill.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/browser/cookie.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionStoreStrategy.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/utils/polyfills.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/session/sessionConstants.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/session/sessionStateValidation.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/session/sessionState.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInCookie.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInLocalStorage.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/session/sessionStoreOperations.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/trackingConsent.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/utils/typeUtils.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/matchOption.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/extension/extensionUtils.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/allowedTrackingOrigins.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/intakeSites.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/experimentalFeatures.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/stackTrace/computeStackTrace.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/stackTrace/handlingStack.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/utils/byteUtils.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/serialisation/jsonStringify.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/serialisation/sanitize.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/error/error.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/error/error.types.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/boot/init.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/boot/displayAlreadyInitializedError.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/browser/addEventListener.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/tags.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/sendToExtension.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/mergeInto.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/connectivity/connectivity.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/utils/responseUtils.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/transport/httpRequest.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/transport/eventBridge.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/browser/pageMayExitObservable.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/transport/batch.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/transport/flushController.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/abstractHooks.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/utils/arrayUtils.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/valueHistory.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/encoder.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/abstractLifeCycle.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/eventRateLimiter/createEventRateLimiter.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/browser/runOnReadyState.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/readBytesFromStream.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/requestIdleCallback.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/taskQueue.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/context/contextUtils.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/context/contextManager.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/context/defineContextMethod.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/context/storeContextManager.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/contexts/accountContext.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/contexts/globalContext.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/contexts/userContext.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/context/contextConstants.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/resourceUtils.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/domain/bufferedData.js","../../../node_modules/.pnpm/@datadog+browser-core@6.25.2/node_modules/@datadog/browser-core/esm/tools/utils/timezone.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/rawRumEvent.types.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/vital/vitalCollection.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/plugins.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/sampler/sampler.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/tracing/identifier.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/tracing/tracer.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/configuration/configuration.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/configuration/jsonPathParser.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/configuration/remoteConfiguration.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/boot/preStartRum.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/boot/rumPublicApi.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/browser/domMutationObservable.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/browser/windowOpenObservable.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/contexts/internalContext.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/lifeCycle.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/contexts/viewHistory.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceUtils.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/resource/graphql.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/requestCollection.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/discardNegativeDuration.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/trackEventCounts.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/browser/firstInputPolyfill.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/browser/performanceObservable.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/browser/htmlDomUtils.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/waitPageActivityEnd.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/action/actionNameConstants.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/getSelectorFromElement.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/privacyConstants.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/privacy.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/action/clickChain.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/action/getActionNameFromElement.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/action/listenActionEvents.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/action/computeFrustration.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/action/interactionSelectorCache.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/action/trackClickActions.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/action/actionCollection.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/error/trackConsoleError.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/error/trackReportError.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/error/errorCollection.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/resource/matchRequestResourceEntry.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/tracing/getDocumentTraceId.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/browser/performanceUtils.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/resource/retrieveInitialDocumentResourceTiming.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/resource/requestRegistry.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceCollection.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/trackViewEventCounts.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstInput.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackNavigationTimings.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstHidden.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInitialViewMetrics.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/getClsAttributionImpactedArea.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/interactionCountPolyfill.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLoadingTime.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/browser/scroll.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/browser/viewportObservable.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackScrollMetrics.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCommonViewMetrics.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/bfCacheSupport.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackBfcacheMetrics.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/trackViews.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewCollection.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/rumSessionManager.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/transport/startRumBatch.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/transport/startRumEventBridge.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/contexts/urlContexts.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/browser/locationChangeObservable.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/contexts/featureFlagContext.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/startCustomerDataTelemetry.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/contexts/pageStateHistory.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/contexts/displayContext.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/browser/cookieObservable.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/contexts/ciVisibilityContext.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/longTask/longTaskCollection.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/contexts/syntheticsContext.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/limitModification.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/assembly.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/contexts/sessionContext.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/contexts/connectivityContext.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/contexts/defaultContext.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/contexts/trackingConsentContext.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/hooks.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/event/eventCollection.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/startInitialViewMetricsTelemetry.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/boot/startRum.js","../../../node_modules/.pnpm/@datadog+browser-rum-core@6.25.2/node_modules/@datadog/browser-rum-core/esm/domain/getSessionReplayUrl.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/domain/replayStats.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/domain/deflate/deflateEncoder.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/domain/scriptLoadingError.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/domain/deflate/deflateWorker.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/boot/isBrowserSupported.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/domain/getSessionReplayLink.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/domain/startRecorderInitTelemetry.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/boot/postStartStrategy.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/boot/preStartStrategy.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/boot/recorderApi.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/boot/lazyLoadRecorder.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/domain/profiling/profilingSupported.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/domain/profiling/profilingContext.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/boot/lazyLoadProfiler.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/boot/profilerApi.js","../../../node_modules/.pnpm/@datadog+browser-rum@6.25.2_@datadog+browser-logs@6.25.2/node_modules/@datadog/browser-rum/esm/entries/main.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/logger/isAuthorized.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/createErrorFieldFromRawError.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/logger.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/contexts/commonContext.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/configuration.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/boot/preStartLogs.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/boot/logsPublicApi.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/logsSessionManager.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/assembly.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/console/consoleCollection.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/report/reportCollection.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/networkError/networkErrorCollection.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/runtimeError/runtimeErrorCollection.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/lifeCycle.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/logger/loggerCollection.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/transport/startLogsBatch.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/transport/startLogsBridge.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/contexts/internalContext.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/reportError.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/hooks.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/contexts/rumInternalContext.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/contexts/sessionContext.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/domain/contexts/trackingConsentContext.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/boot/startLogs.js","../../../node_modules/.pnpm/@datadog+browser-logs@6.25.2_@datadog+browser-rum@6.25.2/node_modules/@datadog/browser-logs/esm/entries/main.js","../../../node_modules/.pnpm/@volley+logger@1.4.1/node_modules/@volley/logger/dist/types/ILogger.js","../../../node_modules/.pnpm/@volley+logger@1.4.1/node_modules/@volley/logger/dist/types/LoggerConfig.js","../../../node_modules/.pnpm/@volley+logger@1.4.1/node_modules/@volley/logger/dist/types/ChildLoggerConfig.js","../../../node_modules/.pnpm/@volley+logger@1.4.1/node_modules/@volley/logger/dist/types/NodeConfig.js","../../../node_modules/.pnpm/@volley+logger@1.4.1/node_modules/@volley/logger/dist/types/BrowserConfig.js","../../../node_modules/.pnpm/@volley+logger@1.4.1/node_modules/@volley/logger/dist/types/BaseConfig.js","../../../node_modules/.pnpm/@volley+logger@1.4.1/node_modules/@volley/logger/dist/types/LogMethod.js","../../../node_modules/.pnpm/@volley+logger@1.4.1/node_modules/@volley/logger/dist/types/index.js","../../../node_modules/.pnpm/quick-format-unescaped@4.0.4/node_modules/quick-format-unescaped/index.js","../../../node_modules/.pnpm/pino@9.7.0/node_modules/pino/browser.js","../../../node_modules/.pnpm/@volley+logger@1.4.1/node_modules/@volley/logger/dist/utils/createLogger.js","../../../node_modules/.pnpm/@volley+logger@1.4.1/node_modules/@volley/logger/dist/utils/createLoggerHttpMiddleware.js","../../../node_modules/.pnpm/@volley+logger@1.4.1/node_modules/@volley/logger/dist/utils/index.js","../../../node_modules/.pnpm/@volley+logger@1.4.1/node_modules/@volley/logger/dist/index.js","../../vwr/src/logger.ts","../../vwr/src/datadog.ts","../src/errors/InitializationError.ts","../src/errors/index.ts","../src/logger.ts","../src/exitHandler.ts","../src/loadVwr.ts","../src/main.ts"],"sourcesContent":["'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.47.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru), 2025 CoreJS Company (core-js.io)',\n license: 'https://github.com/zloirock/core-js/blob/v3.47.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.1.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true, forced: globalThis.globalThis !== globalThis }, {\n globalThis: globalThis\n});\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.es/ecma262/#sec-flattenintoarray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg) : false;\n var element, elementLen;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n elementLen = lengthOfArrayLike(element);\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n } else {\n doesNotExceedSafeInteger(targetIndex + 1);\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n// eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, [], argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A;\n aCallable(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal');\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n else object[key] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://tc39.es/ecma262/#sec-object.fromentries\n$({ target: 'Object', stat: true }, {\n fromEntries: function fromEntries(iterable) {\n var obj = {};\n iterate(iterable, function (k, v) {\n createProperty(obj, k, v);\n }, { AS_ENTRIES: true });\n return obj;\n }\n});\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n activeXDocument = null;\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = globalThis.RegExp;\n\nvar FLAGS_GETTER_IS_CORRECT = !fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\nmodule.exports = { correct: FLAGS_GETTER_IS_CORRECT };\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlagsDetection = require('../internals/regexp-flags-detection');\nvar regExpFlagsGetterImplementation = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = regExpFlagsDetection.correct ? function (it) {\n return it.flags;\n} : function (it) {\n return (!regExpFlagsDetection.correct && isPrototypeOf(RegExpPrototype, it) && !hasOwn(it, 'flags'))\n ? call(regExpFlagsGetterImplementation, it)\n : it.flags;\n};\n","'use strict';\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a constructor');\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') !== null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') !== null;\n});\n\nmodule.exports = {\n BROKEN_CARET: BROKEN_CARET,\n MISSED_STICKY: MISSED_STICKY,\n UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.test('\\n') && re.flags === 's');\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?<a>b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$<a>c') !== 'bc';\n});\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw new $TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\n/* eslint-disable es/no-string-prototype-matchall -- safe */\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar isRegExp = require('../internals/is-regexp');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getMethod = require('../internals/get-method');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar InternalStateModule = require('../internals/internal-state');\nvar IS_PURE = require('../internals/is-pure');\n\nvar MATCH_ALL = wellKnownSymbol('matchAll');\nvar REGEXP_STRING = 'RegExp String';\nvar REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar nativeMatchAll = uncurryThis(''.matchAll);\n\nvar WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () {\n nativeMatchAll('a', /./);\n});\n\nvar $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, $global, fullUnicode) {\n setInternalState(this, {\n type: REGEXP_STRING_ITERATOR,\n regexp: regexp,\n string: string,\n global: $global,\n unicode: fullUnicode,\n done: false\n });\n}, REGEXP_STRING, function next() {\n var state = getInternalState(this);\n if (state.done) return createIterResultObject(undefined, true);\n var R = state.regexp;\n var S = state.string;\n var match = regExpExec(R, S);\n if (match === null) {\n state.done = true;\n return createIterResultObject(undefined, true);\n }\n if (state.global) {\n if (toString(match[0]) === '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode);\n return createIterResultObject(match, false);\n }\n state.done = true;\n return createIterResultObject(match, false);\n});\n\nvar $matchAll = function (string) {\n var R = anObject(this);\n var S = toString(string);\n var C = speciesConstructor(R, RegExp);\n var flags = toString(getRegExpFlags(R));\n var matcher, $global, fullUnicode;\n matcher = new C(C === RegExp ? R.source : R, flags);\n $global = !!~stringIndexOf(flags, 'g');\n fullUnicode = !!~stringIndexOf(flags, 'u');\n matcher.lastIndex = toLength(R.lastIndex);\n return new $RegExpStringIterator(matcher, S, $global, fullUnicode);\n};\n\n// `String.prototype.matchAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.matchall\n$({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {\n matchAll: function matchAll(regexp) {\n var O = requireObjectCoercible(this);\n var flags, S, matcher, rx;\n if (isObject(regexp)) {\n if (isRegExp(regexp)) {\n flags = toString(requireObjectCoercible(getRegExpFlags(regexp)));\n if (!~stringIndexOf(flags, 'g')) throw new $TypeError('`.matchAll` does not allow non-global regexes');\n }\n if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp);\n matcher = getMethod(regexp, MATCH_ALL);\n if (matcher === undefined && IS_PURE && classof(regexp) === 'RegExp') matcher = $matchAll;\n if (matcher) return call(matcher, regexp, O);\n } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp);\n S = toString(O);\n rx = new RegExp(regexp, 'g');\n return IS_PURE ? call($matchAll, rx, S) : rx[MATCH_ALL](S);\n }\n});\n\nIS_PURE || MATCH_ALL in RegExpPrototype || defineBuiltIn(RegExpPrototype, MATCH_ALL, $matchAll);\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis.Promise;\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n // eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n try {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n } catch (error) { return false; } // workaround of old WebKit + `eval` bug\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n // eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","'use strict';\n/* global Bun, Deno -- detection */\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\nvar classof = require('../internals/classof-raw');\n\nvar userAgentStartsWith = function (string) {\n return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n if (userAgentStartsWith('Bun/')) return 'BUN';\n if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n if (userAgentStartsWith('Deno/')) return 'DENO';\n if (userAgentStartsWith('Node.js/')) return 'NODE';\n if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n if (classof(globalThis.process) === 'process') return 'NODE';\n if (globalThis.window && globalThis.document) return 'BROWSER';\n return 'REST';\n})();\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar ENVIRONMENT = require('../internals/environment');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(globalThis.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n } return !GLOBAL_CORE_JS_PROMISE && (ENVIRONMENT === 'BROWSER' || ENVIRONMENT === 'DENO') && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n","'use strict';\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getSubstitution = require('../internals/get-substitution');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar $TypeError = TypeError;\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n replaceAll: function replaceAll(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, position, replacement;\n var endOfLastMatch = 0;\n var result = '';\n if (isObject(searchValue)) {\n IS_REG_EXP = isRegExp(searchValue);\n if (IS_REG_EXP) {\n flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n if (!~indexOf(flags, 'g')) throw new $TypeError('`.replaceAll` does not allow non-global regexes');\n }\n replacer = getMethod(searchValue, REPLACE);\n if (replacer) return call(replacer, searchValue, O, replaceValue);\n if (IS_PURE && IS_REG_EXP) return replace(toString(O), searchValue, replaceValue);\n }\n string = toString(O);\n searchString = toString(searchValue);\n functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n searchLength = searchString.length;\n advanceBy = max(1, searchLength);\n position = indexOf(string, searchString);\n while (position !== -1) {\n replacement = functionalReplace\n ? toString(replaceValue(searchString, position, string))\n : getSubstitution(searchString, string, position, [], undefined, replaceValue);\n result += stringSlice(string, endOfLastMatch, position) + replacement;\n endOfLastMatch = position + searchLength;\n position = position + advanceBy > string.length ? -1 : indexOf(string, searchString, position + advanceBy);\n }\n if (endOfLastMatch < string.length) {\n result += stringSlice(string, endOfLastMatch);\n }\n return result;\n }\n});\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] === undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.at` method\n// https://tc39.es/ecma262/#sec-array.prototype.at\n$({ target: 'Array', proto: true }, {\n at: function at(index) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : O[k];\n }\n});\n\naddToUnscopables('at');\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\n\nvar charAt = uncurryThis(''.charAt);\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-string-prototype-at -- safe\n return '𠮷'.at(-2) !== '\\uD842';\n});\n\n// `String.prototype.at` method\n// https://tc39.es/ecma262/#sec-string.prototype.at\n$({ target: 'String', proto: true, forced: FORCED }, {\n at: function at(index) {\n var S = toString(requireObjectCoercible(this));\n var len = S.length;\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : charAt(S, k);\n }\n});\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on <html> whenever the\n // window blurs, even if you're tabbing out of the page. ¯\\_(ツ)_/¯\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\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 const ConsoleApiName = {\n log: 'log',\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error',\n};\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport const globalConsole = console;\nexport const originalConsoleMethods = {};\nObject.keys(ConsoleApiName).forEach((name) => {\n originalConsoleMethods[name] = globalConsole[name];\n});\nconst PREFIX = 'Datadog Browser SDK:';\nexport const display = {\n debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),\n log: originalConsoleMethods.log.bind(globalConsole, PREFIX),\n info: originalConsoleMethods.info.bind(globalConsole, PREFIX),\n warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),\n error: originalConsoleMethods.error.bind(globalConsole, PREFIX),\n};\nexport const DOCS_ORIGIN = 'https://docs.datadoghq.com';\nexport const DOCS_TROUBLESHOOTING = `${DOCS_ORIGIN}/real_user_monitoring/browser/troubleshooting`;\nexport const MORE_DETAILS = 'More details:';\n//# sourceMappingURL=display.js.map","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n return (...args) => {\n try {\n return fn(...args);\n }\n catch (err) {\n display.error(errorMsg, err);\n }\n };\n}\n//# sourceMappingURL=catchUserErrors.js.map","/**\n * Return true if the draw is successful\n *\n * @param threshold - Threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n return +num.toFixed(decimals);\n}\nexport function isPercentage(value) {\n return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=numberUtils.js.map","export function shallowClone(object) {\n return { ...object };\n}\nexport function objectHasValue(object, value) {\n return Object.keys(object).some((key) => object[key] === value);\n}\nexport function isEmptyObject(object) {\n return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n const newObject = {};\n for (const key of Object.keys(object)) {\n newObject[key] = fn(object[key]);\n }\n return newObject;\n}\n//# sourceMappingURL=objectUtils.js.map","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n Object.defineProperty(Object.prototype, '_dd_temp_', {\n get() {\n return this;\n },\n configurable: true,\n });\n // @ts-ignore _dd_temp is defined using defineProperty\n let globalObject = _dd_temp_;\n // @ts-ignore _dd_temp is defined using defineProperty\n delete Object.prototype._dd_temp_;\n if (typeof globalObject !== 'object') {\n // on safari _dd_temp_ is available on window but not globally\n // fallback on other browser globals check\n if (typeof self === 'object') {\n globalObject = self;\n }\n else if (typeof window === 'object') {\n globalObject = window;\n }\n else {\n globalObject = {};\n }\n }\n return globalObject;\n}\n/**\n * Cached reference to the global object so it can be imported and re-used without\n * re-evaluating the heavyweight fallback logic in `getGlobalObject()`.\n */\n// eslint-disable-next-line local-rules/disallow-side-effects\nexport const globalObject = getGlobalObject();\nexport const isWorkerEnvironment = 'WorkerGlobalScope' in globalObject;\n//# sourceMappingURL=globalObject.js.map","import { getGlobalObject } from './globalObject';\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue(target, name) {\n const browserWindow = getGlobalObject();\n let original;\n if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n original = target[browserWindow.Zone.__symbol__(name)];\n }\n if (!original) {\n original = target[name];\n }\n return original;\n}\n//# sourceMappingURL=getZoneJsOriginalValue.js.map","import { display } from './display';\nlet onMonitorErrorCollected;\nlet debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n onMonitorErrorCollected = undefined;\n debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args) {\n const decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n return decorated.apply(this, args);\n };\n}\nexport function monitor(fn) {\n return function (...args) {\n return callMonitored(fn, this, args);\n }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n try {\n return fn.apply(context, args);\n }\n catch (e) {\n monitorError(e);\n }\n}\nexport function monitorError(e) {\n displayIfDebugEnabled(e);\n if (onMonitorErrorCollected) {\n try {\n onMonitorErrorCollected(e);\n }\n catch (e) {\n displayIfDebugEnabled(e);\n }\n }\n}\nexport function displayIfDebugEnabled(...args) {\n if (debugMode) {\n display.error('[MONITOR]', ...args);\n }\n}\n//# sourceMappingURL=monitor.js.map","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue';\nimport { monitor } from './monitor';\nimport { getGlobalObject } from './globalObject';\nexport function setTimeout(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(monitor(callback), delay);\n}\nexport function clearTimeout(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId);\n}\nexport function setInterval(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay);\n}\nexport function clearInterval(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId);\n}\n//# sourceMappingURL=timer.js.map","import { monitor } from './monitor';\nimport { globalObject } from './globalObject';\nexport function queueMicrotask(callback) {\n var _a;\n const nativeImplementation = (_a = globalObject.queueMicrotask) === null || _a === void 0 ? void 0 : _a.bind(globalObject);\n if (typeof nativeImplementation === 'function') {\n nativeImplementation(monitor(callback));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- the callback is monitored, so it'll never throw\n Promise.resolve().then(monitor(callback));\n }\n}\n//# sourceMappingURL=queueMicrotask.js.map","import { queueMicrotask } from './queueMicrotask';\n// eslint-disable-next-line no-restricted-syntax\nexport class Observable {\n constructor(onFirstSubscribe) {\n this.onFirstSubscribe = onFirstSubscribe;\n this.observers = [];\n }\n subscribe(observer) {\n this.addObserver(observer);\n return {\n unsubscribe: () => this.removeObserver(observer),\n };\n }\n notify(data) {\n this.observers.forEach((observer) => observer(data));\n }\n addObserver(observer) {\n this.observers.push(observer);\n if (this.observers.length === 1 && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined;\n }\n }\n removeObserver(observer) {\n this.observers = this.observers.filter((other) => observer !== other);\n if (!this.observers.length && this.onLastUnsubscribe) {\n this.onLastUnsubscribe();\n }\n }\n}\nexport function mergeObservables(...observables) {\n return new Observable((globalObservable) => {\n const subscriptions = observables.map((observable) => observable.subscribe((data) => globalObservable.notify(data)));\n return () => subscriptions.forEach((subscription) => subscription.unsubscribe());\n });\n}\n// eslint-disable-next-line no-restricted-syntax\nexport class BufferedObservable extends Observable {\n constructor(maxBufferSize) {\n super();\n this.maxBufferSize = maxBufferSize;\n this.buffer = [];\n }\n notify(data) {\n this.buffer.push(data);\n if (this.buffer.length > this.maxBufferSize) {\n this.buffer.shift();\n }\n super.notify(data);\n }\n subscribe(observer) {\n let closed = false;\n const subscription = {\n unsubscribe: () => {\n closed = true;\n this.removeObserver(observer);\n },\n };\n queueMicrotask(() => {\n for (const data of this.buffer) {\n if (closed) {\n return;\n }\n observer(data);\n }\n if (!closed) {\n this.addObserver(observer);\n }\n });\n return subscription;\n }\n /**\n * Drop buffered data and don't buffer future data. This is to avoid leaking memory when it's not\n * needed anymore. This can be seen as a performance optimization, and things will work probably\n * even if this method isn't called, but still useful to clarify our intent and lowering our\n * memory impact.\n */\n unbuffer() {\n queueMicrotask(() => {\n this.maxBufferSize = this.buffer.length = 0;\n });\n }\n}\n//# sourceMappingURL=observable.js.map","import { isNumber, round } from './numberUtils';\nexport const ONE_SECOND = 1000;\nexport const ONE_MINUTE = 60 * ONE_SECOND;\nexport const ONE_HOUR = 60 * ONE_MINUTE;\nexport const ONE_DAY = 24 * ONE_HOUR;\nexport const ONE_YEAR = 365 * ONE_DAY;\nexport function relativeToClocks(relative) {\n return { relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nexport function timeStampToClocks(timeStamp) {\n return { relative: getRelativeTime(timeStamp), timeStamp };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n const correctedOrigin = (dateNow() - performance.now());\n // apply correction only for positive drift\n if (correctedOrigin > getNavigationStart()) {\n return Math.round(addDuration(correctedOrigin, relativeTime));\n }\n return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n if (!isNumber(duration)) {\n return duration;\n }\n return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n // case ourselves.\n // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n return new Date().getTime();\n}\nexport function timeStampNow() {\n return dateNow();\n}\nexport function relativeNow() {\n return performance.now();\n}\nexport function clocksNow() {\n return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n return (end - start);\n}\nexport function addDuration(a, b) {\n return a + b;\n}\n// Get the time since the navigation was started.\nexport function getRelativeTime(timestamp) {\n return (timestamp - getNavigationStart());\n}\nexport function getTimeStamp(relativeTime) {\n return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nlet navigationStart;\n/**\n * Notes: this does not use `performance.timeOrigin` because:\n * - It doesn't seem to reflect the actual time on which the navigation has started: it may be much farther in the past,\n * at least in Firefox 71. (see: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926)\n * - It is not supported in Safari <15\n */\nfunction getNavigationStart() {\n var _a, _b;\n if (navigationStart === undefined) {\n // ServiceWorkers do not support navigationStart (it's deprecated), so we fallback to timeOrigin\n navigationStart = ((_b = (_a = performance.timing) === null || _a === void 0 ? void 0 : _a.navigationStart) !== null && _b !== void 0 ? _b : performance.timeOrigin);\n }\n return navigationStart;\n}\n//# sourceMappingURL=timeUtils.js.map","import { setTimeout, clearTimeout } from '../timer';\n// use lodash API\nexport function throttle(fn, wait, options) {\n const needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n const needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n let inWaitPeriod = false;\n let pendingExecutionWithParameters;\n let pendingTimeoutId;\n return {\n throttled: (...parameters) => {\n if (inWaitPeriod) {\n pendingExecutionWithParameters = parameters;\n return;\n }\n if (needLeadingExecution) {\n fn(...parameters);\n }\n else {\n pendingExecutionWithParameters = parameters;\n }\n inWaitPeriod = true;\n pendingTimeoutId = setTimeout(() => {\n if (needTrailingExecution && pendingExecutionWithParameters) {\n fn(...pendingExecutionWithParameters);\n }\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n }, wait);\n },\n cancel: () => {\n clearTimeout(pendingTimeoutId);\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n },\n };\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n//# sourceMappingURL=functionUtils.js.map","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n return placeholder\n ? // eslint-disable-next-line no-bitwise\n (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n : `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, generateUUID);\n}\nconst COMMA_SEPARATED_KEY_VALUE = /([\\w-]+)\\s*=\\s*([^;]+)/g;\n/**\n * Returns the value of the key with the given name\n * If there are multiple values with the same key, returns the first one\n */\nexport function findCommaSeparatedValue(rawString, name) {\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n if (match[1] === name) {\n return match[2];\n }\n }\n else {\n break;\n }\n }\n}\n/**\n * Returns a map of all the values with the given key\n * If there are multiple values with the same key, returns all the values\n */\nexport function findAllCommaSeparatedValues(rawString) {\n const result = new Map();\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n const key = match[1];\n const value = match[2];\n if (result.has(key)) {\n result.get(key).push(value);\n }\n else {\n result.set(key, [value]);\n }\n }\n else {\n break;\n }\n }\n return result;\n}\n/**\n * Returns a map of the values with the given key\n * ⚠️ If there are multiple values with the same key, returns the LAST one\n *\n * @deprecated use `findAllCommaSeparatedValues()` instead\n */\nexport function findCommaSeparatedValues(rawString) {\n const result = new Map();\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n result.set(match[1], match[2]);\n }\n else {\n break;\n }\n }\n return result;\n}\nexport function safeTruncate(candidate, length, suffix = '') {\n const lastChar = candidate.charCodeAt(length - 1);\n const isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n const correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n if (candidate.length <= correctedLength) {\n return candidate;\n }\n return `${candidate.slice(0, correctedLength)}${suffix}`;\n}\n//# sourceMappingURL=stringUtils.js.map","export function isChromium() {\n return detectBrowserCached() === 0 /* Browser.CHROMIUM */;\n}\nexport function isSafari() {\n return detectBrowserCached() === 1 /* Browser.SAFARI */;\n}\nlet browserCache;\nfunction detectBrowserCached() {\n return browserCache !== null && browserCache !== void 0 ? browserCache : (browserCache = detectBrowser());\n}\n// Exported only for tests\nexport function detectBrowser(browserWindow = window) {\n var _a;\n const userAgent = browserWindow.navigator.userAgent;\n if (browserWindow.chrome || /HeadlessChrome/.test(userAgent)) {\n return 0 /* Browser.CHROMIUM */;\n }\n if (\n // navigator.vendor is deprecated, but it is the most resilient way we found to detect\n // \"Apple maintained browsers\" (AKA Safari). If one day it gets removed, we still have the\n // useragent test as a semi-working fallback.\n ((_a = browserWindow.navigator.vendor) === null || _a === void 0 ? void 0 : _a.indexOf('Apple')) === 0 ||\n (/safari/i.test(userAgent) && !/chrome|android/i.test(userAgent))) {\n return 1 /* Browser.SAFARI */;\n }\n return 2 /* Browser.OTHER */;\n}\n//# sourceMappingURL=browserDetection.js.map","import { globalObject } from '../globalObject';\nexport function normalizeUrl(url) {\n return buildUrl(url, location.href).href;\n}\nexport function isValidUrl(url) {\n try {\n return !!buildUrl(url);\n }\n catch (_a) {\n return false;\n }\n}\nexport function getPathName(url) {\n const pathname = buildUrl(url).pathname;\n return pathname[0] === '/' ? pathname : `/${pathname}`;\n}\nexport function buildUrl(url, base) {\n const { URL } = getPristineWindow();\n try {\n return base !== undefined ? new URL(url, base) : new URL(url);\n }\n catch (error) {\n throw new Error(`Failed to construct URL: ${String(error)}`);\n }\n}\n/**\n * Get native URL constructor from a clean iframe\n * This avoids polyfill issues by getting the native implementation from a fresh iframe context\n * Falls back to the original URL constructor if iframe approach fails\n */\nlet getPristineGlobalObjectCache;\nexport function getPristineWindow() {\n if (!getPristineGlobalObjectCache) {\n let iframe;\n let pristineWindow;\n try {\n iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n pristineWindow = iframe.contentWindow;\n }\n catch (_a) {\n pristineWindow = globalObject;\n }\n getPristineGlobalObjectCache = {\n URL: pristineWindow.URL,\n };\n iframe === null || iframe === void 0 ? void 0 : iframe.remove();\n }\n return getPristineGlobalObjectCache;\n}\n//# sourceMappingURL=urlPolyfill.js.map","import { display } from '../tools/display';\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { findAllCommaSeparatedValues, findCommaSeparatedValue, findCommaSeparatedValues, generateUUID, } from '../tools/utils/stringUtils';\nimport { buildUrl } from '../tools/utils/urlPolyfill';\nexport function setCookie(name, value, expireDelay = 0, options) {\n const date = new Date();\n date.setTime(date.getTime() + expireDelay);\n const expires = `expires=${date.toUTCString()}`;\n const sameSite = options && options.crossSite ? 'none' : 'strict';\n const domain = options && options.domain ? `;domain=${options.domain}` : '';\n const secure = options && options.secure ? ';secure' : '';\n const partitioned = options && options.partitioned ? ';partitioned' : '';\n document.cookie = `${name}=${value};${expires};path=/;samesite=${sameSite}${domain}${secure}${partitioned}`;\n}\n/**\n * Returns the value of the cookie with the given name\n * If there are multiple cookies with the same name, returns the first one\n */\nexport function getCookie(name) {\n return findCommaSeparatedValue(document.cookie, name);\n}\n/**\n * Returns all the values of the cookies with the given name\n */\nexport function getCookies(name) {\n return findAllCommaSeparatedValues(document.cookie).get(name) || [];\n}\nlet initCookieParsed;\n/**\n * Returns a cached value of the cookie. Use this during SDK initialization (and whenever possible)\n * to avoid accessing document.cookie multiple times.\n *\n * ⚠️ If there are multiple cookies with the same name, returns the LAST one (unlike `getCookie()`)\n */\nexport function getInitCookie(name) {\n if (!initCookieParsed) {\n initCookieParsed = findCommaSeparatedValues(document.cookie);\n }\n return initCookieParsed.get(name);\n}\nexport function resetInitCookies() {\n initCookieParsed = undefined;\n}\nexport function deleteCookie(name, options) {\n setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n if (document.cookie === undefined || document.cookie === null) {\n return false;\n }\n try {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n const testCookieName = `dd_cookie_test_${generateUUID()}`;\n const testCookieValue = 'test';\n setCookie(testCookieName, testCookieValue, ONE_MINUTE, options);\n const isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n deleteCookie(testCookieName, options);\n return isCookieCorrectlySet;\n }\n catch (error) {\n display.error(error);\n return false;\n }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nlet getCurrentSiteCache;\nexport function getCurrentSite(hostname = location.hostname, referrer = document.referrer) {\n if (getCurrentSiteCache === undefined) {\n const defaultHostName = getCookieDefaultHostName(hostname, referrer);\n if (defaultHostName) {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n const testCookieName = `dd_site_test_${generateUUID()}`;\n const testCookieValue = 'test';\n const domainLevels = defaultHostName.split('.');\n let candidateDomain = domainLevels.pop();\n while (domainLevels.length && !getCookie(testCookieName)) {\n candidateDomain = `${domainLevels.pop()}.${candidateDomain}`;\n setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain });\n }\n deleteCookie(testCookieName, { domain: candidateDomain });\n getCurrentSiteCache = candidateDomain;\n }\n }\n return getCurrentSiteCache;\n}\nfunction getCookieDefaultHostName(hostname, referrer) {\n try {\n return hostname || buildUrl(referrer).hostname;\n }\n catch (_a) {\n // Ignore\n }\n}\nexport function resetGetCurrentSite() {\n getCurrentSiteCache = undefined;\n}\n//# sourceMappingURL=cookie.js.map","export const SESSION_STORE_KEY = '_dd_s';\n//# sourceMappingURL=sessionStoreStrategy.js.map","export function findLast(array, predicate) {\n for (let i = array.length - 1; i >= 0; i -= 1) {\n const item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n return undefined;\n}\n// Keep the following wrapper functions as it can be mangled and will result in smaller bundle size that using\n// the native Object.values and Object.entries directly\nexport function objectValues(object) {\n return Object.values(object);\n}\nexport function objectEntries(object) {\n return Object.entries(object);\n}\n//# sourceMappingURL=polyfills.js.map","import { ONE_HOUR, ONE_MINUTE, ONE_YEAR } from '../../tools/utils/timeUtils';\nexport const SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport const SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;\nexport const SESSION_COOKIE_EXPIRATION_DELAY = ONE_YEAR;\nexport const SESSION_NOT_TRACKED = '0';\n/**\n * @internal\n */\nexport const SessionPersistence = {\n COOKIE: 'cookie',\n LOCAL_STORAGE: 'local-storage',\n};\n//# sourceMappingURL=sessionConstants.js.map","export const SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/;\nexport const SESSION_ENTRY_SEPARATOR = '&';\nexport function isValidSessionString(sessionString) {\n return (!!sessionString &&\n (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));\n}\n//# sourceMappingURL=sessionStateValidation.js.map","import { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { objectEntries } from '../../tools/utils/polyfills';\nimport { dateNow } from '../../tools/utils/timeUtils';\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { isValidSessionString, SESSION_ENTRY_REGEXP, SESSION_ENTRY_SEPARATOR } from './sessionStateValidation';\nexport const EXPIRED = '1';\nexport function getExpiredSessionState(previousSessionState, configuration) {\n const expiredSessionState = {\n isExpired: EXPIRED,\n };\n if (configuration.trackAnonymousUser && (previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId)) {\n expiredSessionState.anonymousId = previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId;\n }\n return expiredSessionState;\n}\nexport function isSessionInNotStartedState(session) {\n return isEmptyObject(session);\n}\nexport function isSessionStarted(session) {\n return !isSessionInNotStartedState(session);\n}\nexport function isSessionInExpiredState(session) {\n return session.isExpired !== undefined || !isActiveSession(session);\n}\n// An active session is a session in either `Tracked` or `NotTracked` state\nfunction isActiveSession(sessionState) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return ((sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&\n (sessionState.expire === undefined || dateNow() < Number(sessionState.expire)));\n}\nexport function expandSessionState(session) {\n session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);\n}\nexport function toSessionString(session) {\n return (objectEntries(session)\n // we use `aid` as a key for anonymousId\n .map(([key, value]) => (key === 'anonymousId' ? `aid=${value}` : `${key}=${value}`))\n .join(SESSION_ENTRY_SEPARATOR));\n}\nexport function toSessionState(sessionString) {\n const session = {};\n if (isValidSessionString(sessionString)) {\n sessionString.split(SESSION_ENTRY_SEPARATOR).forEach((entry) => {\n const matches = SESSION_ENTRY_REGEXP.exec(entry);\n if (matches !== null) {\n const [, key, value] = matches;\n if (key === 'aid') {\n // we use `aid` as a key for anonymousId\n session.anonymousId = value;\n }\n else {\n session[key] = value;\n }\n }\n });\n }\n return session;\n}\n//# sourceMappingURL=sessionState.js.map","import { getInitCookie } from '../../browser/cookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nimport { expandSessionState, isSessionStarted } from './sessionState';\nexport const OLD_SESSION_COOKIE_NAME = '_dd';\nexport const OLD_RUM_COOKIE_NAME = '_dd_r';\nexport const OLD_LOGS_COOKIE_NAME = '_dd_l';\n// duplicate values to avoid dependency issues\nexport const RUM_SESSION_KEY = 'rum';\nexport const LOGS_SESSION_KEY = 'logs';\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(cookieStoreStrategy) {\n const sessionString = getInitCookie(SESSION_STORE_KEY);\n if (!sessionString) {\n const oldSessionId = getInitCookie(OLD_SESSION_COOKIE_NAME);\n const oldRumType = getInitCookie(OLD_RUM_COOKIE_NAME);\n const oldLogsType = getInitCookie(OLD_LOGS_COOKIE_NAME);\n const session = {};\n if (oldSessionId) {\n session.id = oldSessionId;\n }\n if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n session[LOGS_SESSION_KEY] = oldLogsType;\n }\n if (oldRumType && /^[012]$/.test(oldRumType)) {\n session[RUM_SESSION_KEY] = oldRumType;\n }\n if (isSessionStarted(session)) {\n expandSessionState(session);\n cookieStoreStrategy.persistSession(session);\n }\n }\n}\n//# sourceMappingURL=oldCookiesMigration.js.map","import { isEmptyObject } from '../../../tools/utils/objectUtils';\nimport { isChromium } from '../../../tools/utils/browserDetection';\nimport { getCurrentSite, areCookiesAuthorized, getCookies, setCookie, getCookie } from '../../../browser/cookie';\nimport { tryOldCookiesMigration } from '../oldCookiesMigration';\nimport { SESSION_COOKIE_EXPIRATION_DELAY, SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY, SessionPersistence, } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nconst SESSION_COOKIE_VERSION = 0;\nexport function selectCookieStrategy(initConfiguration) {\n const cookieOptions = buildCookieOptions(initConfiguration);\n return cookieOptions && areCookiesAuthorized(cookieOptions)\n ? { type: SessionPersistence.COOKIE, cookieOptions }\n : undefined;\n}\nexport function initCookieStrategy(configuration, cookieOptions) {\n const cookieStore = {\n /**\n * Lock strategy allows mitigating issues due to concurrent access to cookie.\n * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.\n */\n isLockEnabled: isChromium(),\n persistSession: (sessionState) => storeSessionCookie(cookieOptions, configuration, sessionState, SESSION_EXPIRATION_DELAY),\n retrieveSession: () => retrieveSessionCookie(cookieOptions, configuration),\n expireSession: (sessionState) => storeSessionCookie(cookieOptions, configuration, getExpiredSessionState(sessionState, configuration), SESSION_TIME_OUT_DELAY),\n };\n tryOldCookiesMigration(cookieStore);\n return cookieStore;\n}\nfunction storeSessionCookie(options, configuration, sessionState, defaultTimeout) {\n let sessionStateString = toSessionString(sessionState);\n if (configuration.betaEncodeCookieOptions) {\n sessionStateString = toSessionString({\n ...sessionState,\n // deleting a cookie is writing a new cookie with an empty value\n // we don't want to store the cookie options in this case otherwise the cookie will not be deleted\n ...(!isEmptyObject(sessionState) ? { c: encodeCookieOptions(options) } : {}),\n });\n }\n setCookie(SESSION_STORE_KEY, sessionStateString, configuration.trackAnonymousUser ? SESSION_COOKIE_EXPIRATION_DELAY : defaultTimeout, options);\n}\n/**\n * Retrieve the session state from the cookie that was set with the same cookie options\n * If there is no match, return the first cookie, because that's how `getCookie()` works\n */\nexport function retrieveSessionCookie(cookieOptions, configuration) {\n if (configuration.betaEncodeCookieOptions) {\n return retrieveSessionCookieFromEncodedCookie(cookieOptions);\n }\n const sessionString = getCookie(SESSION_STORE_KEY);\n const sessionState = toSessionState(sessionString);\n return sessionState;\n}\nexport function buildCookieOptions(initConfiguration) {\n const cookieOptions = {};\n cookieOptions.secure =\n !!initConfiguration.useSecureSessionCookie || !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n cookieOptions.crossSite = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n if (initConfiguration.trackSessionAcrossSubdomains) {\n const currentSite = getCurrentSite();\n if (!currentSite) {\n return;\n }\n cookieOptions.domain = currentSite;\n }\n return cookieOptions;\n}\nfunction encodeCookieOptions(cookieOptions) {\n const domainCount = cookieOptions.domain ? cookieOptions.domain.split('.').length - 1 : 0;\n /* eslint-disable no-bitwise */\n let byte = 0;\n byte |= SESSION_COOKIE_VERSION << 5; // Store version in upper 3 bits\n byte |= domainCount << 1; // Store domain count in next 4 bits\n byte |= cookieOptions.crossSite ? 1 : 0; // Store useCrossSiteScripting in next bit\n /* eslint-enable no-bitwise */\n return byte.toString(16); // Convert to hex string\n}\n/**\n * Retrieve the session state from the cookie that was set with the same cookie options.\n * If there is no match, fallback to the first cookie, (because that's how `getCookie()` works)\n * and this allows to keep the current session id when we release this feature.\n */\nfunction retrieveSessionCookieFromEncodedCookie(cookieOptions) {\n const cookies = getCookies(SESSION_STORE_KEY);\n const opts = encodeCookieOptions(cookieOptions);\n let sessionState;\n // reverse the cookies so that if there is no match, the cookie returned is the first one\n for (const cookie of cookies.reverse()) {\n sessionState = toSessionState(cookie);\n if (sessionState.c === opts) {\n break;\n }\n }\n // remove the cookie options from the session state as this is not part of the session state\n sessionState === null || sessionState === void 0 ? true : delete sessionState.c;\n return sessionState !== null && sessionState !== void 0 ? sessionState : {};\n}\n//# sourceMappingURL=sessionInCookie.js.map","import { generateUUID } from '../../../tools/utils/stringUtils';\nimport { SessionPersistence } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nconst LOCAL_STORAGE_TEST_KEY = '_dd_test_';\nexport function selectLocalStorageStrategy() {\n try {\n const id = generateUUID();\n const testKey = `${LOCAL_STORAGE_TEST_KEY}${id}`;\n localStorage.setItem(testKey, id);\n const retrievedId = localStorage.getItem(testKey);\n localStorage.removeItem(testKey);\n return id === retrievedId ? { type: SessionPersistence.LOCAL_STORAGE } : undefined;\n }\n catch (_a) {\n return undefined;\n }\n}\nexport function initLocalStorageStrategy(configuration) {\n return {\n isLockEnabled: false,\n persistSession: persistInLocalStorage,\n retrieveSession: retrieveSessionFromLocalStorage,\n expireSession: (sessionState) => expireSessionFromLocalStorage(sessionState, configuration),\n };\n}\nfunction persistInLocalStorage(sessionState) {\n localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState));\n}\nexport function retrieveSessionFromLocalStorage() {\n const sessionString = localStorage.getItem(SESSION_STORE_KEY);\n return toSessionState(sessionString);\n}\nfunction expireSessionFromLocalStorage(previousSessionState, configuration) {\n persistInLocalStorage(getExpiredSessionState(previousSessionState, configuration));\n}\n//# sourceMappingURL=sessionInLocalStorage.js.map","import { setTimeout } from '../../tools/timer';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { elapsed, ONE_SECOND, timeStampNow } from '../../tools/utils/timeUtils';\nimport { expandSessionState, isSessionInExpiredState } from './sessionState';\nexport const LOCK_RETRY_DELAY = 10;\nexport const LOCK_MAX_TRIES = 100;\n// Locks should be hold for a few milliseconds top, just the time it takes to read and write a\n// cookie. Using one second should be enough in most situations.\nexport const LOCK_EXPIRATION_DELAY = ONE_SECOND;\nconst LOCK_SEPARATOR = '--';\nconst bufferedOperations = [];\nlet ongoingOperations;\nexport function processSessionStoreOperations(operations, sessionStoreStrategy, numberOfRetries = 0) {\n var _a;\n const { isLockEnabled, persistSession, expireSession } = sessionStoreStrategy;\n const persistWithLock = (session) => persistSession({ ...session, lock: currentLock });\n const retrieveStore = () => {\n const { lock, ...session } = sessionStoreStrategy.retrieveSession();\n return {\n session,\n lock: lock && !isLockExpired(lock) ? lock : undefined,\n };\n };\n if (!ongoingOperations) {\n ongoingOperations = operations;\n }\n if (operations !== ongoingOperations) {\n bufferedOperations.push(operations);\n return;\n }\n if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {\n next(sessionStoreStrategy);\n return;\n }\n let currentLock;\n let currentStore = retrieveStore();\n if (isLockEnabled) {\n // if someone has lock, retry later\n if (currentStore.lock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n // acquire lock\n currentLock = createLock();\n persistWithLock(currentStore.session);\n // if lock is not acquired, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n let processedSession = operations.process(currentStore.session);\n if (isLockEnabled) {\n // if lock corrupted after process, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n if (processedSession) {\n if (isSessionInExpiredState(processedSession)) {\n expireSession(processedSession);\n }\n else {\n expandSessionState(processedSession);\n if (isLockEnabled) {\n persistWithLock(processedSession);\n }\n else {\n persistSession(processedSession);\n }\n }\n }\n if (isLockEnabled) {\n // correctly handle lock around expiration would require to handle this case properly at several levels\n // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n if (!(processedSession && isSessionInExpiredState(processedSession))) {\n // if lock corrupted after persist, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n persistSession(currentStore.session);\n processedSession = currentStore.session;\n }\n }\n // call after even if session is not persisted in order to perform operations on\n // up-to-date session state value => the value could have been modified by another tab\n (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentStore.session);\n next(sessionStoreStrategy);\n}\nfunction retryLater(operations, sessionStore, currentNumberOfRetries) {\n setTimeout(() => {\n processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1);\n }, LOCK_RETRY_DELAY);\n}\nfunction next(sessionStore) {\n ongoingOperations = undefined;\n const nextOperations = bufferedOperations.shift();\n if (nextOperations) {\n processSessionStoreOperations(nextOperations, sessionStore);\n }\n}\nexport function createLock() {\n return generateUUID() + LOCK_SEPARATOR + timeStampNow();\n}\nfunction isLockExpired(lock) {\n const [, timeStamp] = lock.split(LOCK_SEPARATOR);\n return !timeStamp || elapsed(Number(timeStamp), timeStampNow()) > LOCK_EXPIRATION_DELAY;\n}\n//# sourceMappingURL=sessionStoreOperations.js.map","import { clearInterval, setInterval } from '../../tools/timer';\nimport { Observable } from '../../tools/observable';\nimport { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { display } from '../../tools/display';\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie';\nimport { getExpiredSessionState, isSessionInExpiredState, isSessionInNotStartedState, isSessionStarted, } from './sessionState';\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage';\nimport { processSessionStoreOperations } from './sessionStoreOperations';\nimport { SESSION_NOT_TRACKED, SessionPersistence } from './sessionConstants';\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport const STORAGE_POLL_DELAY = ONE_SECOND;\n/**\n * Selects the correct session store strategy type based on the configuration and storage\n * availability.\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n switch (initConfiguration.sessionPersistence) {\n case SessionPersistence.COOKIE:\n return selectCookieStrategy(initConfiguration);\n case SessionPersistence.LOCAL_STORAGE:\n return selectLocalStorageStrategy();\n case undefined: {\n let sessionStoreStrategyType = selectCookieStrategy(initConfiguration);\n if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n sessionStoreStrategyType = selectLocalStorageStrategy();\n }\n return sessionStoreStrategyType;\n }\n default:\n display.error(`Invalid session persistence '${String(initConfiguration.sessionPersistence)}'`);\n }\n}\nexport function getSessionStoreStrategy(sessionStoreStrategyType, configuration) {\n return sessionStoreStrategyType.type === SessionPersistence.COOKIE\n ? initCookieStrategy(configuration, sessionStoreStrategyType.cookieOptions)\n : initLocalStorageStrategy(configuration);\n}\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(sessionStoreStrategyType, configuration, productKey, computeTrackingType, sessionStoreStrategy = getSessionStoreStrategy(sessionStoreStrategyType, configuration)) {\n const renewObservable = new Observable();\n const expireObservable = new Observable();\n const sessionStateUpdateObservable = new Observable();\n const watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);\n let sessionCache;\n startSession();\n const { throttled: throttledExpandOrRenewSession, cancel: cancelExpandOrRenewSession } = throttle(() => {\n processSessionStoreOperations({\n process: (sessionState) => {\n if (isSessionInNotStartedState(sessionState)) {\n return;\n }\n const synchronizedSession = synchronizeSession(sessionState);\n expandOrRenewSessionState(synchronizedSession);\n return synchronizedSession;\n },\n after: (sessionState) => {\n if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n renewSessionInCache(sessionState);\n }\n sessionCache = sessionState;\n },\n }, sessionStoreStrategy);\n }, STORAGE_POLL_DELAY);\n function expandSession() {\n processSessionStoreOperations({\n process: (sessionState) => (hasSessionInCache() ? synchronizeSession(sessionState) : undefined),\n }, sessionStoreStrategy);\n }\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session store\n * - if the session is not active, clear the session store and expire the session cache\n */\n function watchSession() {\n const sessionState = sessionStoreStrategy.retrieveSession();\n if (isSessionInExpiredState(sessionState)) {\n processSessionStoreOperations({\n process: (sessionState) => isSessionInExpiredState(sessionState) ? getExpiredSessionState(sessionState, configuration) : undefined,\n after: synchronizeSession,\n }, sessionStoreStrategy);\n }\n else {\n synchronizeSession(sessionState);\n }\n }\n function synchronizeSession(sessionState) {\n if (isSessionInExpiredState(sessionState)) {\n sessionState = getExpiredSessionState(sessionState, configuration);\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache();\n }\n else {\n sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState });\n sessionCache = sessionState;\n }\n }\n return sessionState;\n }\n function startSession() {\n processSessionStoreOperations({\n process: (sessionState) => {\n if (isSessionInNotStartedState(sessionState)) {\n sessionState.anonymousId = generateUUID();\n return getExpiredSessionState(sessionState, configuration);\n }\n },\n after: (sessionState) => {\n sessionCache = sessionState;\n },\n }, sessionStoreStrategy);\n }\n function expandOrRenewSessionState(sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return false;\n }\n const trackingType = computeTrackingType(sessionState[productKey]);\n sessionState[productKey] = trackingType;\n delete sessionState.isExpired;\n if (trackingType !== SESSION_NOT_TRACKED && !sessionState.id) {\n sessionState.id = generateUUID();\n sessionState.created = String(dateNow());\n }\n }\n function hasSessionInCache() {\n return (sessionCache === null || sessionCache === void 0 ? void 0 : sessionCache[productKey]) !== undefined;\n }\n function isSessionInCacheOutdated(sessionState) {\n return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey];\n }\n function expireSessionInCache() {\n sessionCache = getExpiredSessionState(sessionCache, configuration);\n expireObservable.notify();\n }\n function renewSessionInCache(sessionState) {\n sessionCache = sessionState;\n renewObservable.notify();\n }\n function updateSessionState(partialSessionState) {\n processSessionStoreOperations({\n process: (sessionState) => ({ ...sessionState, ...partialSessionState }),\n after: synchronizeSession,\n }, sessionStoreStrategy);\n }\n return {\n expandOrRenewSession: throttledExpandOrRenewSession,\n expandSession,\n getSession: () => sessionCache,\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable,\n restartSession: startSession,\n expire: (hasConsent) => {\n cancelExpandOrRenewSession();\n if (hasConsent === false && sessionCache) {\n delete sessionCache.anonymousId;\n }\n sessionStoreStrategy.expireSession(sessionCache);\n synchronizeSession(getExpiredSessionState(sessionCache, configuration));\n },\n stop: () => {\n clearInterval(watchSessionTimeoutId);\n },\n updateSessionState,\n };\n}\n//# sourceMappingURL=sessionStore.js.map","import { Observable } from '../tools/observable';\nexport const TrackingConsent = {\n GRANTED: 'granted',\n NOT_GRANTED: 'not-granted',\n};\nexport function createTrackingConsentState(currentConsent) {\n const observable = new Observable();\n return {\n tryToInit(trackingConsent) {\n if (!currentConsent) {\n currentConsent = trackingConsent;\n }\n },\n update(trackingConsent) {\n currentConsent = trackingConsent;\n observable.notify();\n },\n isGranted() {\n return currentConsent === TrackingConsent.GRANTED;\n },\n observable,\n };\n}\n//# sourceMappingURL=trackingConsent.js.map","/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return 'array';\n }\n return typeof value;\n}\n//# sourceMappingURL=typeUtils.js.map","import { display } from './display';\nimport { getType } from './utils/typeUtils';\nexport function isMatchOption(item) {\n const itemType = getType(item);\n return itemType === 'string' || itemType === 'function' || item instanceof RegExp;\n}\n/**\n * Returns true if value can be matched by at least one of the provided MatchOptions.\n * When comparing strings, setting useStartsWith to true will compare the value with the start of\n * the option, instead of requiring an exact match.\n */\nexport function matchList(list, value, useStartsWith = false) {\n return list.some((item) => {\n try {\n if (typeof item === 'function') {\n return item(value);\n }\n else if (item instanceof RegExp) {\n return item.test(value);\n }\n else if (typeof item === 'string') {\n return useStartsWith ? value.startsWith(item) : item === value;\n }\n }\n catch (e) {\n display.error(e);\n }\n return false;\n });\n}\n//# sourceMappingURL=matchOption.js.map","export const EXTENSION_PREFIXES = ['chrome-extension://', 'moz-extension://'];\nexport function containsExtensionUrl(str) {\n return EXTENSION_PREFIXES.some((prefix) => str.includes(prefix));\n}\n/**\n * Utility function to detect if the SDK is being initialized in an unsupported browser extension environment.\n *\n * @param windowLocation - The current window location to check\n * @param stack - The error stack to check for extension URLs\n * @returns true if running in an unsupported browser extension environment\n */\nexport function isUnsupportedExtensionEnvironment(windowLocation, stack = '') {\n // If the page itself is an extension page.\n if (containsExtensionUrl(windowLocation)) {\n return false;\n }\n // Since we generate the error on the init, we check the 2nd frame line.\n const frameLines = stack.split('\\n').filter((line) => {\n const trimmedLine = line.trim();\n return trimmedLine.length && /^at\\s+|@/.test(trimmedLine);\n });\n const target = frameLines[1] || '';\n return containsExtensionUrl(target);\n}\n//# sourceMappingURL=extensionUtils.js.map","import { display } from '../tools/display';\nimport { matchList } from '../tools/matchOption';\nimport { isUnsupportedExtensionEnvironment } from './extension/extensionUtils';\nexport const ERROR_DOES_NOT_HAVE_ALLOWED_TRACKING_ORIGIN = 'Running the Browser SDK in a Web extension content script is forbidden unless the `allowedTrackingOrigins` option is provided.';\nexport const ERROR_NOT_ALLOWED_TRACKING_ORIGIN = 'SDK initialized on a non-allowed domain.';\nexport function isAllowedTrackingOrigins(configuration, errorStack, windowOrigin = typeof location !== 'undefined' ? location.origin : '') {\n const allowedTrackingOrigins = configuration.allowedTrackingOrigins;\n if (!allowedTrackingOrigins) {\n if (isUnsupportedExtensionEnvironment(windowOrigin, errorStack)) {\n display.error(ERROR_DOES_NOT_HAVE_ALLOWED_TRACKING_ORIGIN);\n return false;\n }\n return true;\n }\n const isAllowed = matchList(allowedTrackingOrigins, windowOrigin);\n if (!isAllowed) {\n display.error(ERROR_NOT_ALLOWED_TRACKING_ORIGIN);\n }\n return isAllowed;\n}\n//# sourceMappingURL=allowedTrackingOrigins.js.map","export const INTAKE_SITE_STAGING = 'datad0g.com';\nexport const INTAKE_SITE_FED_STAGING = 'dd0g-gov.com';\nexport const INTAKE_SITE_US1 = 'datadoghq.com';\nexport const INTAKE_SITE_EU1 = 'datadoghq.eu';\nexport const INTAKE_SITE_US1_FED = 'ddog-gov.com';\nexport const PCI_INTAKE_HOST_US1 = 'pci.browser-intake-datadoghq.com';\nexport const INTAKE_URL_PARAMETERS = ['ddsource', 'dd-api-key', 'dd-request-id'];\n//# sourceMappingURL=intakeSites.js.map","import { timeStampNow } from '../../tools/utils/timeUtils';\nimport { normalizeUrl } from '../../tools/utils/urlPolyfill';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { INTAKE_SITE_FED_STAGING, INTAKE_SITE_US1, PCI_INTAKE_HOST_US1 } from '../intakeSites';\nexport function createEndpointBuilder(initConfiguration, trackType, extraParameters) {\n const buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType);\n return {\n build(api, payload) {\n const parameters = buildEndpointParameters(initConfiguration, trackType, api, payload, extraParameters);\n return buildUrlWithParameters(parameters);\n },\n trackType,\n };\n}\n/**\n * Create a function used to build a full endpoint url from provided parameters. The goal of this\n * function is to pre-compute some parts of the URL to avoid re-computing everything on every\n * request, as only parameters are changing.\n */\nfunction createEndpointUrlWithParametersBuilder(initConfiguration, trackType) {\n const path = `/api/v2/${trackType}`;\n const proxy = initConfiguration.proxy;\n if (typeof proxy === 'string') {\n const normalizedProxyUrl = normalizeUrl(proxy);\n return (parameters) => `${normalizedProxyUrl}?ddforward=${encodeURIComponent(`${path}?${parameters}`)}`;\n }\n if (typeof proxy === 'function') {\n return (parameters) => proxy({ path, parameters });\n }\n const host = buildEndpointHost(trackType, initConfiguration);\n return (parameters) => `https://${host}${path}?${parameters}`;\n}\nexport function buildEndpointHost(trackType, initConfiguration) {\n const { site = INTAKE_SITE_US1, internalAnalyticsSubdomain } = initConfiguration;\n if (trackType === 'logs' && initConfiguration.usePciIntake && site === INTAKE_SITE_US1) {\n return PCI_INTAKE_HOST_US1;\n }\n if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n return `${internalAnalyticsSubdomain}.${INTAKE_SITE_US1}`;\n }\n if (site === INTAKE_SITE_FED_STAGING) {\n return `http-intake.logs.${site}`;\n }\n const domainParts = site.split('.');\n const extension = domainParts.pop();\n return `browser-intake-${domainParts.join('-')}.${extension}`;\n}\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters({ clientToken, internalAnalyticsSubdomain, source = 'browser' }, trackType, api, { retry, encoding }, extraParameters = []) {\n const parameters = [\n `ddsource=${source}`,\n `dd-api-key=${clientToken}`,\n `dd-evp-origin-version=${encodeURIComponent(\"6.25.2\")}`,\n 'dd-evp-origin=browser',\n `dd-request-id=${generateUUID()}`,\n ].concat(extraParameters);\n if (encoding) {\n parameters.push(`dd-evp-encoding=${encoding}`);\n }\n if (trackType === 'rum') {\n parameters.push(`batch_time=${timeStampNow()}`, `_dd.api=${api}`);\n if (retry) {\n parameters.push(`_dd.retry_count=${retry.count}`, `_dd.retry_after=${retry.lastFailureStatus}`);\n }\n }\n if (internalAnalyticsSubdomain) {\n parameters.reverse();\n }\n return parameters.join('&');\n}\n//# sourceMappingURL=endpointBuilder.js.map","import { INTAKE_SITE_US1, INTAKE_URL_PARAMETERS } from '../intakeSites';\nimport { createEndpointBuilder } from './endpointBuilder';\nexport function computeTransportConfiguration(initConfiguration) {\n const site = initConfiguration.site || INTAKE_SITE_US1;\n const source = validateSource(initConfiguration.source);\n const endpointBuilders = computeEndpointBuilders({ ...initConfiguration, site, source });\n const replicaConfiguration = computeReplicaConfiguration({ ...initConfiguration, site, source });\n return {\n replica: replicaConfiguration,\n site,\n source,\n ...endpointBuilders,\n };\n}\nfunction validateSource(source) {\n if (source === 'flutter' || source === 'unity') {\n return source;\n }\n return 'browser';\n}\nfunction computeEndpointBuilders(initConfiguration) {\n return {\n logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs'),\n rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum'),\n profilingEndpointBuilder: createEndpointBuilder(initConfiguration, 'profile'),\n sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay'),\n exposuresEndpointBuilder: createEndpointBuilder(initConfiguration, 'exposures'),\n flagEvaluationEndpointBuilder: createEndpointBuilder(initConfiguration, 'flagevaluation'),\n };\n}\nfunction computeReplicaConfiguration(initConfiguration) {\n if (!initConfiguration.replica) {\n return;\n }\n const replicaConfiguration = {\n ...initConfiguration,\n site: INTAKE_SITE_US1,\n clientToken: initConfiguration.replica.clientToken,\n };\n return {\n logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs'),\n rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', [\n `application.id=${initConfiguration.replica.applicationId}`,\n ]),\n };\n}\nexport function isIntakeUrl(url) {\n // check if tags is present in the query string\n return INTAKE_URL_PARAMETERS.every((param) => url.includes(param));\n}\n//# sourceMappingURL=transportConfiguration.js.map","import { catchUserErrors } from '../../tools/catchUserErrors';\nimport { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nimport { isPercentage } from '../../tools/utils/numberUtils';\nimport { objectHasValue } from '../../tools/utils/objectUtils';\nimport { selectSessionStoreStrategyType } from '../session/sessionStore';\nimport { TrackingConsent } from '../trackingConsent';\nimport { isAllowedTrackingOrigins } from '../allowedTrackingOrigins';\nimport { isWorkerEnvironment } from '../../tools/globalObject';\nimport { computeTransportConfiguration } from './transportConfiguration';\n/**\n * Default privacy level for the browser SDK.\n *\n * [Replay Privacy Options](https://docs.datadoghq.com/real_user_monitoring/session_replay/browser/privacy_options) for further information.\n */\nexport const DefaultPrivacyLevel = {\n ALLOW: 'allow',\n MASK: 'mask',\n MASK_USER_INPUT: 'mask-user-input',\n MASK_UNLESS_ALLOWLISTED: 'mask-unless-allowlisted',\n};\n/**\n * Trace context injection option.\n *\n * See [Connect RUM and Traces](https://docs.datadoghq.com/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.\n */\nexport const TraceContextInjection = {\n ALL: 'all',\n SAMPLED: 'sampled',\n};\nfunction isString(tag, tagName) {\n if (tag !== undefined && tag !== null && typeof tag !== 'string') {\n display.error(`${tagName} must be defined as a string`);\n return false;\n }\n return true;\n}\nfunction isDatadogSite(site) {\n if (site && typeof site === 'string' && !/(datadog|ddog|datad0g|dd0g)/.test(site)) {\n display.error(`Site should be a valid Datadog site. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/site/.`);\n return false;\n }\n return true;\n}\nexport function isSampleRate(sampleRate, name) {\n if (sampleRate !== undefined && !isPercentage(sampleRate)) {\n display.error(`${name} Sample Rate should be a number between 0 and 100`);\n return false;\n }\n return true;\n}\nexport function validateAndBuildConfiguration(initConfiguration, errorStack) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n if (!initConfiguration || !initConfiguration.clientToken) {\n display.error('Client Token is not configured, we will not send any data.');\n return;\n }\n if (initConfiguration.allowedTrackingOrigins !== undefined &&\n !Array.isArray(initConfiguration.allowedTrackingOrigins)) {\n display.error('Allowed Tracking Origins must be an array');\n return;\n }\n if (!isDatadogSite(initConfiguration.site) ||\n !isSampleRate(initConfiguration.sessionSampleRate, 'Session') ||\n !isSampleRate(initConfiguration.telemetrySampleRate, 'Telemetry') ||\n !isSampleRate(initConfiguration.telemetryConfigurationSampleRate, 'Telemetry Configuration') ||\n !isSampleRate(initConfiguration.telemetryUsageSampleRate, 'Telemetry Usage') ||\n !isString(initConfiguration.version, 'Version') ||\n !isString(initConfiguration.env, 'Env') ||\n !isString(initConfiguration.service, 'Service') ||\n !isAllowedTrackingOrigins(initConfiguration, errorStack !== null && errorStack !== void 0 ? errorStack : '')) {\n return;\n }\n if (initConfiguration.trackingConsent !== undefined &&\n !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)) {\n display.error('Tracking Consent should be either \"granted\" or \"not-granted\"');\n return;\n }\n return {\n beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n sessionStoreStrategyType: isWorkerEnvironment ? undefined : selectSessionStoreStrategyType(initConfiguration),\n sessionSampleRate: (_a = initConfiguration.sessionSampleRate) !== null && _a !== void 0 ? _a : 100,\n telemetrySampleRate: (_b = initConfiguration.telemetrySampleRate) !== null && _b !== void 0 ? _b : 20,\n telemetryConfigurationSampleRate: (_c = initConfiguration.telemetryConfigurationSampleRate) !== null && _c !== void 0 ? _c : 5,\n telemetryUsageSampleRate: (_d = initConfiguration.telemetryUsageSampleRate) !== null && _d !== void 0 ? _d : 5,\n service: (_e = initConfiguration.service) !== null && _e !== void 0 ? _e : undefined,\n env: (_f = initConfiguration.env) !== null && _f !== void 0 ? _f : undefined,\n version: (_g = initConfiguration.version) !== null && _g !== void 0 ? _g : undefined,\n datacenter: (_h = initConfiguration.datacenter) !== null && _h !== void 0 ? _h : undefined,\n silentMultipleInit: !!initConfiguration.silentMultipleInit,\n allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,\n trackingConsent: (_j = initConfiguration.trackingConsent) !== null && _j !== void 0 ? _j : TrackingConsent.GRANTED,\n trackAnonymousUser: (_k = initConfiguration.trackAnonymousUser) !== null && _k !== void 0 ? _k : true,\n storeContextsAcrossPages: !!initConfiguration.storeContextsAcrossPages,\n betaEncodeCookieOptions: !!initConfiguration.betaEncodeCookieOptions,\n /**\n * The source of the SDK, used for support plugins purposes.\n */\n variant: initConfiguration.variant,\n sdkVersion: initConfiguration.sdkVersion,\n ...computeTransportConfiguration(initConfiguration),\n };\n}\nexport function serializeConfiguration(initConfiguration) {\n return {\n session_sample_rate: initConfiguration.sessionSampleRate,\n telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,\n use_before_send: !!initConfiguration.beforeSend,\n use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,\n use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n use_proxy: !!initConfiguration.proxy,\n silent_multiple_init: initConfiguration.silentMultipleInit,\n track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n track_anonymous_user: initConfiguration.trackAnonymousUser,\n session_persistence: initConfiguration.sessionPersistence,\n allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,\n store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,\n tracking_consent: initConfiguration.trackingConsent,\n use_allowed_tracking_origins: Array.isArray(initConfiguration.allowedTrackingOrigins),\n beta_encode_cookie_options: initConfiguration.betaEncodeCookieOptions,\n source: initConfiguration.source,\n sdk_version: initConfiguration.sdkVersion,\n variant: initConfiguration.variant,\n };\n}\n//# sourceMappingURL=configuration.js.map","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n *\n * FORMAT:\n * All feature flags should be snake_cased\n */\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected feature flag\nimport { objectHasValue } from './utils/objectUtils';\n// eslint-disable-next-line no-restricted-syntax\nexport var ExperimentalFeature;\n(function (ExperimentalFeature) {\n ExperimentalFeature[\"TRACK_INTAKE_REQUESTS\"] = \"track_intake_requests\";\n ExperimentalFeature[\"USE_TREE_WALKER_FOR_ACTION_NAME\"] = \"use_tree_walker_for_action_name\";\n ExperimentalFeature[\"FEATURE_OPERATION_VITAL\"] = \"feature_operation_vital\";\n ExperimentalFeature[\"SHORT_SESSION_INVESTIGATION\"] = \"short_session_investigation\";\n ExperimentalFeature[\"AVOID_FETCH_KEEPALIVE\"] = \"avoid_fetch_keepalive\";\n})(ExperimentalFeature || (ExperimentalFeature = {}));\nconst enabledExperimentalFeatures = new Set();\nexport function initFeatureFlags(enableExperimentalFeatures) {\n if (Array.isArray(enableExperimentalFeatures)) {\n addExperimentalFeatures(enableExperimentalFeatures.filter((flag) => objectHasValue(ExperimentalFeature, flag)));\n }\n}\nexport function addExperimentalFeatures(enabledFeatures) {\n enabledFeatures.forEach((flag) => {\n enabledExperimentalFeatures.add(flag);\n });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n return enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n enabledExperimentalFeatures.clear();\n}\nexport function getExperimentalFeatures() {\n return enabledExperimentalFeatures;\n}\n//# sourceMappingURL=experimentalFeatures.js.map","/**\n * Cross-browser stack trace computation.\n *\n * Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js\n */\nconst UNKNOWN_FUNCTION = '?';\nexport function computeStackTrace(ex) {\n var _a, _b;\n const stack = [];\n let stackProperty = tryToGetString(ex, 'stack');\n const exString = String(ex);\n if (stackProperty && stackProperty.startsWith(exString)) {\n stackProperty = stackProperty.slice(exString.length);\n }\n if (stackProperty) {\n stackProperty.split('\\n').forEach((line) => {\n const stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION;\n }\n stack.push(stackFrame);\n }\n });\n }\n if (stack.length > 0 && isWronglyReportingCustomErrors() && ex instanceof Error) {\n // if we are wrongly reporting custom errors\n const constructors = [];\n // go through each inherited constructor\n let currentPrototype = ex;\n while ((currentPrototype = Object.getPrototypeOf(currentPrototype)) &&\n isNonNativeClassPrototype(currentPrototype)) {\n const constructorName = ((_a = currentPrototype.constructor) === null || _a === void 0 ? void 0 : _a.name) || UNKNOWN_FUNCTION;\n constructors.push(constructorName);\n }\n // traverse the stacktrace in reverse order because the stacktrace starts with the last inherited constructor\n // we check constructor names to ensure we remove the correct frame (and there isn't a weird unsupported environment behavior)\n for (let i = constructors.length - 1; i >= 0 && ((_b = stack[0]) === null || _b === void 0 ? void 0 : _b.func) === constructors[i]; i--) {\n // if the first stack frame is the custom error constructor\n // null stack frames may represent frames that failed to be parsed because the error class did not have a constructor\n stack.shift(); // remove it\n }\n }\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack,\n };\n}\nconst fileUrl = '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|snippet|<anonymous>|\\\\w+\\\\.|\\\\/).*?)';\nconst filePosition = '(?::(\\\\d+))';\nconst CHROME_LINE_RE = new RegExp(`^\\\\s*at (.*?) ?\\\\(${fileUrl}${filePosition}?${filePosition}?\\\\)?\\\\s*$`, 'i');\nconst CHROME_EVAL_RE = new RegExp(`\\\\((\\\\S*)${filePosition}${filePosition}\\\\)`);\nfunction parseChromeLine(line) {\n const parts = CHROME_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n const isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n const submatch = CHROME_EVAL_RE.exec(parts[2]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined,\n };\n}\nconst CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(`^\\\\s*at ?${fileUrl}${filePosition}?${filePosition}??\\\\s*$`, 'i');\nfunction parseChromeAnonymousLine(line) {\n const parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1],\n };\n}\nconst WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n const parts = WINJS_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2],\n };\n}\nconst GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:(?:(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle|\\[wasm code\\])(?::(\\d+))?(?::(\\d+))?)|@)\\s*$/i;\nconst GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n const parts = GECKO_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n const submatch = GECKO_EVAL_RE.exec(parts[3]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = undefined; // no column when eval\n }\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3],\n };\n}\nfunction tryToGetString(candidate, property) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined;\n }\n const value = candidate[property];\n return typeof value === 'string' ? value : undefined;\n}\nexport function computeStackTraceFromOnErrorMessage(messageObj, url, line, column) {\n if (url === undefined) {\n return;\n }\n const { name, message } = tryToParseMessage(messageObj);\n return {\n name,\n message,\n stack: [{ url, column, line }],\n };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nconst ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/;\nfunction tryToParseMessage(messageObj) {\n let name;\n let message;\n if ({}.toString.call(messageObj) === '[object String]') {\n ;\n [, name, message] = ERROR_TYPES_RE.exec(messageObj);\n }\n return { name, message };\n}\n// Custom error stacktrace fix\n// Some browsers (safari/firefox) add the error constructor as a frame in the stacktrace\n// In order to normalize the stacktrace, we need to remove it\nfunction isNonNativeClassPrototype(prototype) {\n return String(prototype.constructor).startsWith('class ');\n}\nlet isWronglyReportingCustomErrorsCache;\nfunction isWronglyReportingCustomErrors() {\n if (isWronglyReportingCustomErrorsCache !== undefined) {\n return isWronglyReportingCustomErrorsCache;\n }\n /* eslint-disable no-restricted-syntax */\n class DatadogTestCustomError extends Error {\n constructor() {\n super();\n this.name = 'Error'; // set name to Error so that no browser would default to the constructor name\n }\n }\n const [customError, nativeError] = [DatadogTestCustomError, Error].map((errConstructor) => new errConstructor()); // so that both errors should exactly have the same stacktrace\n isWronglyReportingCustomErrorsCache =\n // If customError is not a class, it means that this was built with ES5 as target, converting the class to a normal object.\n // Thus, error constructors will be reported on all browsers, which is the expected behavior.\n isNonNativeClassPrototype(Object.getPrototypeOf(customError)) &&\n // If the browser is correctly reporting the stacktrace, the normal error stacktrace should be the same as the custom error stacktrace\n nativeError.stack !== customError.stack;\n return isWronglyReportingCustomErrorsCache;\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { callMonitored } from '../monitor';\nimport { computeStackTrace } from './computeStackTrace';\n/**\n * Creates a stacktrace without SDK internal frames.\n * Constraints:\n * - Has to be called at the utmost position of the call stack.\n * - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack(type) {\n /**\n * Skip the two internal frames:\n * - SDK API (console.error, ...)\n * - this function\n * in order to keep only the user calls\n */\n const internalFramesToSkip = 2;\n const error = new Error(type);\n error.name = 'HandlingStack';\n let formattedStack;\n callMonitored(() => {\n const stackTrace = computeStackTrace(error);\n stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n formattedStack = toStackTraceString(stackTrace);\n });\n return formattedStack;\n}\nexport function toStackTraceString(stack) {\n let result = formatErrorMessage(stack);\n stack.stack.forEach((frame) => {\n const func = frame.func === '?' ? '<anonymous>' : frame.func;\n const args = frame.args && frame.args.length > 0 ? `(${frame.args.join(', ')})` : '';\n const line = frame.line ? `:${frame.line}` : '';\n const column = frame.line && frame.column ? `:${frame.column}` : '';\n result += `\\n at ${func}${args} @ ${frame.url}${line}${column}`;\n });\n return result;\n}\nexport function formatErrorMessage(stack) {\n return `${stack.name || 'Error'}: ${stack.message}`;\n}\n//# sourceMappingURL=handlingStack.js.map","import { setTimeout } from './timer';\nimport { callMonitored } from './monitor';\nimport { noop } from './utils/functionUtils';\nimport { createHandlingStack } from './stackTrace/handlingStack';\n/**\n * Instruments a method on a object, calling the given callback before the original method is\n * invoked. The callback receives an object with information about the method call.\n *\n * This function makes sure that we are \"good citizens\" regarding third party instrumentations: when\n * removing the instrumentation, the original method is usually restored, but if a third party\n * instrumentation was set after ours, we keep it in place and just replace our instrumentation with\n * a noop.\n *\n * Note: it is generally better to instrument methods that are \"owned\" by the object instead of ones\n * that are inherited from the prototype chain. Example:\n * * do: `instrumentMethod(Array.prototype, 'push', ...)`\n * * don't: `instrumentMethod([], 'push', ...)`\n *\n * This method is also used to set event handler properties (ex: window.onerror = ...), as it has\n * the same requirements as instrumenting a method:\n * * if the event handler is already set by a third party, we need to call it and not just blindly\n * override it.\n * * if the event handler is set by a third party after us, we need to keep it in place when\n * removing ours.\n *\n * @example\n *\n * instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {\n * console.log('Before calling fetch on', target, 'with parameters', parameters)\n *\n * onPostCall((result) => {\n * console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)\n * })\n * })\n */\nexport function instrumentMethod(targetPrototype, method, onPreCall, { computeHandlingStack } = {}) {\n let original = targetPrototype[method];\n if (typeof original !== 'function') {\n if (method in targetPrototype && typeof method === 'string' && method.startsWith('on')) {\n original = noop;\n }\n else {\n return { stop: noop };\n }\n }\n let stopped = false;\n const instrumentation = function () {\n if (stopped) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return original.apply(this, arguments);\n }\n const parameters = Array.from(arguments);\n let postCallCallback;\n callMonitored(onPreCall, null, [\n {\n target: this,\n parameters,\n onPostCall: (callback) => {\n postCallCallback = callback;\n },\n handlingStack: computeHandlingStack ? createHandlingStack('instrumented method') : undefined,\n },\n ]);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const result = original.apply(this, parameters);\n if (postCallCallback) {\n callMonitored(postCallCallback, null, [result]);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result;\n };\n targetPrototype[method] = instrumentation;\n return {\n stop: () => {\n stopped = true;\n // If the instrumentation has been removed by a third party, keep the last one\n if (targetPrototype[method] === instrumentation) {\n targetPrototype[method] = original;\n }\n },\n };\n}\nexport function instrumentSetter(targetPrototype, property, after) {\n const originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property);\n if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n return { stop: noop };\n }\n const stoppedInstrumentation = noop;\n let instrumentation = (target, value) => {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(() => {\n if (instrumentation !== stoppedInstrumentation) {\n after(target, value);\n }\n }, 0);\n };\n const instrumentationWrapper = function (value) {\n originalDescriptor.set.call(this, value);\n instrumentation(this, value);\n };\n Object.defineProperty(targetPrototype, property, {\n set: instrumentationWrapper,\n });\n return {\n stop: () => {\n var _a;\n if (((_a = Object.getOwnPropertyDescriptor(targetPrototype, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n Object.defineProperty(targetPrototype, property, originalDescriptor);\n }\n instrumentation = stoppedInstrumentation;\n },\n };\n}\n//# sourceMappingURL=instrumentMethod.js.map","export const ONE_KIBI_BYTE = 1024;\nexport const ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// eslint-disable-next-line no-control-regex\nconst HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nexport function computeBytesCount(candidate) {\n // Accurate bytes count computations can degrade performances when there is a lot of events to process\n if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n return candidate.length;\n }\n if (window.TextEncoder !== undefined) {\n return new TextEncoder().encode(candidate).length;\n }\n return new Blob([candidate]).size;\n}\nexport function concatBuffers(buffers) {\n // Optimization: if there is a single buffer, no need to copy it\n if (buffers.length === 1) {\n return buffers[0];\n }\n const length = buffers.reduce((total, buffer) => total + buffer.length, 0);\n const result = new Uint8Array(length);\n let offset = 0;\n for (const buffer of buffers) {\n result.set(buffer, offset);\n offset += buffer.length;\n }\n return result;\n}\n//# sourceMappingURL=byteUtils.js.map","import { noop } from '../utils/functionUtils';\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n if (typeof value !== 'object' || value === null) {\n return JSON.stringify(value);\n }\n // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n // subclasses.\n const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n const restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n const restoreValueToJson = detachToJsonMethod(value);\n try {\n return JSON.stringify(value, replacer, space);\n }\n catch (_a) {\n return '<error: unable to serialize object>';\n }\n finally {\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n restoreValuePrototypeToJson();\n restoreValueToJson();\n }\n}\nexport function detachToJsonMethod(value) {\n const object = value;\n const objectToJson = object.toJSON;\n if (objectToJson) {\n delete object.toJSON;\n return () => {\n object.toJSON = objectToJson;\n };\n }\n return noop;\n}\n//# sourceMappingURL=jsonStringify.js.map","import { display } from '../display';\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils';\nimport { detachToJsonMethod } from './jsonStringify';\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nconst SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE;\n// Symbol for the root element of the JSONPath used for visited objects\nconst JSON_PATH_ROOT_ELEMENT = '$';\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nconst KEY_DECORATION_LENGTH = 3;\nexport function sanitize(source, maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT) {\n // Unbind any toJSON function we may have on [] or {} prototypes\n const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n const containerQueue = [];\n const visitedObjectsWithPath = new WeakMap();\n const sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);\n const serializedSanitizedData = JSON.stringify(sanitizedData);\n let accumulatedCharacterCount = serializedSanitizedData ? serializedSanitizedData.length : 0;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source);\n return undefined;\n }\n while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n const containerToProcess = containerQueue.shift();\n let separatorLength = 0; // 0 for the first element, 1 for subsequent elements\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (let key = 0; key < containerToProcess.source.length; key++) {\n const targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length;\n }\n else {\n // When an element of an Array (targetData) is undefined, it is serialized as null:\n // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n accumulatedCharacterCount += 4;\n }\n accumulatedCharacterCount += separatorLength;\n separatorLength = 1;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n else {\n for (const key in containerToProcess.source) {\n if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n const targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount +=\n JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;\n separatorLength = 1;\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n }\n }\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n return sanitizedData;\n}\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {\n // Start by handling toJSON, as we want to sanitize its output\n const sourceToSanitize = tryToApplyToJSON(source);\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize);\n }\n const sanitizedSource = sanitizeObjects(sourceToSanitize);\n if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n return sanitizedSource;\n }\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n const sourceAsObject = source;\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return `[Reference seen at ${visitedObjectsWithPath.get(sourceAsObject)}]`;\n }\n // Add processed source to queue\n const currentPath = key !== undefined ? `${parentPath}.${key}` : parentPath;\n const target = Array.isArray(sourceToSanitize) ? [] : {};\n visitedObjectsWithPath.set(sourceAsObject, currentPath);\n queue.push({ source: sourceToSanitize, target, path: currentPath });\n return target;\n}\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return `[BigInt] ${value.toString()}`;\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return `[Function] ${value.name || 'unknown'}`;\n }\n // JSON.stringify() does not serialize symbols.\n if (typeof value === 'symbol') {\n return `[Symbol] ${value.description || value.toString()}`;\n }\n return value;\n}\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n */\nfunction sanitizeObjects(value) {\n try {\n if (value instanceof Event) {\n return sanitizeEvent(value);\n }\n if (value instanceof RegExp) {\n return `[RegExp] ${value.toString()}`;\n }\n // Handle all remaining object types in a generic way\n const result = Object.prototype.toString.call(value);\n const match = result.match(/\\[object (.*)\\]/);\n if (match && match[1]) {\n return `[${match[1]}]`;\n }\n }\n catch (_a) {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]';\n}\nfunction sanitizeEvent(event) {\n return {\n type: event.type,\n isTrusted: event.isTrusted,\n currentTarget: event.currentTarget ? sanitizeObjects(event.currentTarget) : null,\n target: event.target ? sanitizeObjects(event.target) : null,\n };\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n const object = value;\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON();\n }\n catch (_a) {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n return value;\n}\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n display.warn(`The data provided has been ${changeType} as it is over the limit of ${maxCharacterCount} characters:`, source);\n}\n//# sourceMappingURL=sanitize.js.map","import { sanitize } from '../../tools/serialisation/sanitize';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nexport const NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error';\nfunction computeErrorBase({ originalError, stackTrace, source, useFallbackStack = true, nonErrorPrefix, }) {\n const isErrorInstance = isError(originalError);\n if (!stackTrace && isErrorInstance) {\n stackTrace = computeStackTrace(originalError);\n }\n return {\n source,\n type: stackTrace ? stackTrace.name : undefined,\n message: computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError),\n stack: stackTrace ? toStackTraceString(stackTrace) : useFallbackStack ? NO_ERROR_STACK_PRESENT_MESSAGE : undefined,\n };\n}\nexport function computeRawError({ stackTrace, originalError, handlingStack, componentStack, startClocks, nonErrorPrefix, useFallbackStack = true, source, handling, }) {\n const errorBase = computeErrorBase({ originalError, stackTrace, source, useFallbackStack, nonErrorPrefix });\n return {\n startClocks,\n handling,\n handlingStack,\n componentStack,\n originalError,\n ...errorBase,\n causes: isError(originalError) ? flattenErrorCauses(originalError, source) : undefined,\n fingerprint: tryToGetFingerprint(originalError),\n context: tryToGetErrorContext(originalError),\n };\n}\nfunction computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError) {\n // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n // TODO rework tracekit integration to avoid scattering error building logic\n return (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.message) && (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name)\n ? stackTrace.message\n : !isErrorInstance\n ? nonErrorPrefix\n ? `${nonErrorPrefix} ${jsonStringify(sanitize(originalError))}`\n : jsonStringify(sanitize(originalError))\n : 'Empty message';\n}\nexport function tryToGetFingerprint(originalError) {\n return isError(originalError) && 'dd_fingerprint' in originalError ? String(originalError.dd_fingerprint) : undefined;\n}\nexport function tryToGetErrorContext(originalError) {\n if (originalError !== null && typeof originalError === 'object' && 'dd_context' in originalError) {\n return originalError.dd_context;\n }\n}\nexport function getFileFromStackTraceString(stack) {\n var _a;\n return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function isError(error) {\n return error instanceof Error || Object.prototype.toString.call(error) === '[object Error]';\n}\nexport function flattenErrorCauses(error, parentSource) {\n const causes = [];\n let currentCause = error.cause;\n while (currentCause !== undefined && currentCause !== null && causes.length < 10) {\n const causeBase = computeErrorBase({\n originalError: currentCause,\n source: parentSource,\n useFallbackStack: false,\n });\n causes.push(causeBase);\n currentCause = isError(currentCause) ? currentCause.cause : undefined;\n }\n return causes.length ? causes : undefined;\n}\n//# sourceMappingURL=error.js.map","export const ErrorSource = {\n AGENT: 'agent',\n CONSOLE: 'console',\n CUSTOM: 'custom',\n LOGGER: 'logger',\n NETWORK: 'network',\n SOURCE: 'source',\n REPORT: 'report',\n};\n//# sourceMappingURL=error.types.js.map","import { instrumentMethod } from '../../tools/instrumentMethod';\nimport { Observable } from '../../tools/observable';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nimport { computeStackTraceFromOnErrorMessage } from '../../tools/stackTrace/computeStackTrace';\nimport { getGlobalObject } from '../../tools/globalObject';\nimport { computeRawError, isError } from './error';\nimport { ErrorSource } from './error.types';\nexport function trackRuntimeError() {\n return new Observable((observer) => {\n const handleRuntimeError = (originalError, stackTrace) => {\n const rawError = computeRawError({\n stackTrace,\n originalError,\n startClocks: clocksNow(),\n nonErrorPrefix: \"Uncaught\" /* NonErrorPrefix.UNCAUGHT */,\n source: ErrorSource.SOURCE,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n });\n observer.notify(rawError);\n };\n const { stop: stopInstrumentingOnError } = instrumentOnError(handleRuntimeError);\n const { stop: stopInstrumentingOnUnhandledRejection } = instrumentUnhandledRejection(handleRuntimeError);\n return () => {\n stopInstrumentingOnError();\n stopInstrumentingOnUnhandledRejection();\n };\n });\n}\nexport function instrumentOnError(callback) {\n return instrumentMethod(getGlobalObject(), 'onerror', ({ parameters: [messageObj, url, line, column, errorObj] }) => {\n let stackTrace;\n if (!isError(errorObj)) {\n stackTrace = computeStackTraceFromOnErrorMessage(messageObj, url, line, column);\n }\n callback(errorObj !== null && errorObj !== void 0 ? errorObj : messageObj, stackTrace);\n });\n}\nexport function instrumentUnhandledRejection(callback) {\n return instrumentMethod(getGlobalObject(), 'onunhandledrejection', ({ parameters: [e] }) => {\n callback(e.reason || 'Empty reason');\n });\n}\n//# sourceMappingURL=trackRuntimeError.js.map","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { display } from '../tools/display';\nexport function makePublicApi(stub) {\n const publicApi = {\n version: \"6.25.2\",\n // This API method is intentionally not monitored, since the only thing executed is the\n // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and\n // we don't want to interfere with the user uncaught exceptions.\n onReady(callback) {\n callback();\n },\n ...stub,\n };\n // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n // as much as possible but of course it's not a real protection.\n Object.defineProperty(publicApi, '_setDebug', {\n get() {\n return setDebugMode;\n },\n enumerable: false,\n });\n return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n const existingGlobalVariable = global[name];\n if (existingGlobalVariable && !existingGlobalVariable.q && existingGlobalVariable.version) {\n display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.');\n }\n global[name] = api;\n if (existingGlobalVariable && existingGlobalVariable.q) {\n existingGlobalVariable.q.forEach((fn) => catchUserErrors(fn, 'onReady callback threw an error:')());\n }\n}\n//# sourceMappingURL=init.js.map","import { display } from '../tools/display';\nexport function displayAlreadyInitializedError(sdkName, initConfiguration) {\n if (!initConfiguration.silentMultipleInit) {\n display.error(`${sdkName} is already initialized.`);\n }\n}\n//# sourceMappingURL=displayAlreadyInitializedError.js.map","import { monitor } from '../tools/monitor';\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue';\n/**\n * Add an event listener to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(configuration, eventTarget, eventName, listener, options) {\n return addEventListeners(configuration, eventTarget, [eventName], listener, options);\n}\n/**\n * Add event listeners to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(configuration, eventTarget, eventNames, listener, { once, capture, passive } = {}) {\n const listenerWithMonitor = monitor((event) => {\n if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {\n return;\n }\n if (once) {\n stop();\n }\n listener(event);\n });\n const options = passive ? { capture, passive } : capture;\n // Use the window.EventTarget.prototype when possible to avoid wrong overrides (e.g: https://github.com/salesforce/lwc/issues/1824)\n const listenerTarget = window.EventTarget && eventTarget instanceof EventTarget ? window.EventTarget.prototype : eventTarget;\n const add = getZoneJsOriginalValue(listenerTarget, 'addEventListener');\n eventNames.forEach((eventName) => add.call(eventTarget, eventName, listenerWithMonitor, options));\n function stop() {\n const remove = getZoneJsOriginalValue(listenerTarget, 'removeEventListener');\n eventNames.forEach((eventName) => remove.call(eventTarget, eventName, listenerWithMonitor, options));\n }\n return {\n stop,\n };\n}\n//# sourceMappingURL=addEventListener.js.map","import { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { monitor } from '../../tools/monitor';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { addEventListener } from '../../browser/addEventListener';\nimport { safeTruncate } from '../../tools/utils/stringUtils';\nimport { ErrorSource } from '../error/error.types';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nexport const RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation',\n};\nexport function initReportObservable(configuration, apis) {\n const observables = [];\n if (apis.includes(RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration));\n }\n const reportTypes = apis.filter((api) => api !== RawReportType.cspViolation);\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes));\n }\n return mergeObservables(...observables);\n}\nfunction createReportObservable(reportTypes) {\n return new Observable((observable) => {\n if (!window.ReportingObserver) {\n return;\n }\n const handleReports = monitor((reports, _) => reports.forEach((report) => observable.notify(buildRawReportErrorFromReport(report))));\n const observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true,\n });\n observer.observe();\n return () => {\n observer.disconnect();\n };\n });\n}\nfunction createCspViolationReportObservable(configuration) {\n return new Observable((observable) => {\n const { stop } = addEventListener(configuration, document, \"securitypolicyviolation\" /* DOM_EVENT.SECURITY_POLICY_VIOLATION */, (event) => {\n observable.notify(buildRawReportErrorFromCspViolation(event));\n });\n return stop;\n });\n}\nfunction buildRawReportErrorFromReport(report) {\n const { type, body } = report;\n return buildRawReportError({\n type: body.id,\n message: `${type}: ${body.message}`,\n originalError: report,\n stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n });\n}\nfunction buildRawReportErrorFromCspViolation(event) {\n const message = `'${event.blockedURI}' blocked by '${event.effectiveDirective}' directive`;\n return buildRawReportError({\n type: event.effectiveDirective,\n message: `${RawReportType.cspViolation}: ${message}`,\n originalError: event,\n csp: {\n disposition: event.disposition,\n },\n stack: buildStack(event.effectiveDirective, event.originalPolicy\n ? `${message} of the policy \"${safeTruncate(event.originalPolicy, 100, '...')}\"`\n : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber),\n });\n}\nfunction buildRawReportError(partial) {\n return {\n startClocks: clocksNow(),\n source: ErrorSource.REPORT,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n ...partial,\n };\n}\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n return sourceFile\n ? toStackTraceString({\n name,\n message,\n stack: [\n {\n func: '?',\n url: sourceFile,\n line: lineNumber !== null && lineNumber !== void 0 ? lineNumber : undefined,\n column: columnNumber !== null && columnNumber !== void 0 ? columnNumber : undefined,\n },\n ],\n })\n : undefined;\n}\n//# sourceMappingURL=reportObservable.js.map","import { DOCS_ORIGIN, MORE_DETAILS, display } from '../tools/display';\nexport const TAG_SIZE_LIMIT = 200;\nexport function buildTags(configuration) {\n const { env, service, version, datacenter, sdkVersion, variant } = configuration;\n const tags = [buildTag('sdk_version', sdkVersion !== null && sdkVersion !== void 0 ? sdkVersion : \"6.25.2\")];\n if (env) {\n tags.push(buildTag('env', env));\n }\n if (service) {\n tags.push(buildTag('service', service));\n }\n if (version) {\n tags.push(buildTag('version', version));\n }\n if (datacenter) {\n tags.push(buildTag('datacenter', datacenter));\n }\n if (variant) {\n tags.push(buildTag('variant', variant));\n }\n return tags;\n}\nexport function buildTag(key, rawValue) {\n // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n // that the backend may not follow the exact same rules, so we only want to display an informal\n // warning.\n const tag = rawValue ? `${key}:${rawValue}` : key;\n if (tag.length > TAG_SIZE_LIMIT || hasForbiddenCharacters(tag)) {\n display.warn(`Tag ${tag} doesn't meet tag requirements and will be sanitized. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/tagging/#defining-tags`);\n }\n // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n // by forging a value containing commas.\n return sanitizeTag(tag);\n}\nexport function sanitizeTag(tag) {\n return tag.replace(/,/g, '_');\n}\nfunction hasForbiddenCharacters(rawValue) {\n // Unicode property escapes is not supported in all browsers, so we use a try/catch.\n // Todo: Remove the try/catch when dropping support for Chrome 63 and Firefox 67\n // see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#browser_compatibility\n if (!supportUnicodePropertyEscapes()) {\n return false;\n }\n // We use the Unicode property escapes to match any character that is a letter including other languages like Chinese, Japanese, etc.\n // p{Ll} matches a lowercase letter.\n // p{Lo} matches a letter that is neither uppercase nor lowercase (ex: Japanese characters).\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#unicode_property_escapes_vs._character_classes\n return new RegExp('[^\\\\p{Ll}\\\\p{Lo}0-9_:./-]', 'u').test(rawValue);\n}\nexport function supportUnicodePropertyEscapes() {\n try {\n new RegExp('[\\\\p{Ll}]', 'u');\n return true;\n }\n catch (_a) {\n return false;\n }\n}\n//# sourceMappingURL=tags.js.map","import { globalObject } from './globalObject';\nexport function sendToExtension(type, payload) {\n const callback = globalObject.__ddBrowserSdkExtensionCallback;\n if (callback) {\n callback({ type, payload });\n }\n}\n//# sourceMappingURL=sendToExtension.js.map","import { getType } from './utils/typeUtils';\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto(destination, source, circularReferenceChecker = createCircularReferenceChecker()) {\n // ignore the source if it is undefined\n if (source === undefined) {\n return destination;\n }\n if (typeof source !== 'object' || source === null) {\n // primitive values - just return source\n return source;\n }\n else if (source instanceof Date) {\n return new Date(source.getTime());\n }\n else if (source instanceof RegExp) {\n const flags = source.flags ||\n // old browsers compatibility\n [\n source.global ? 'g' : '',\n source.ignoreCase ? 'i' : '',\n source.multiline ? 'm' : '',\n source.sticky ? 'y' : '',\n source.unicode ? 'u' : '',\n ].join('');\n return new RegExp(source.source, flags);\n }\n if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n // remove circular references\n return undefined;\n }\n else if (Array.isArray(source)) {\n const merged = Array.isArray(destination) ? destination : [];\n for (let i = 0; i < source.length; ++i) {\n merged[i] = mergeInto(merged[i], source[i], circularReferenceChecker);\n }\n return merged;\n }\n const merged = getType(destination) === 'object' ? destination : {};\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n }\n }\n return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n return mergeInto(undefined, value);\n}\nexport function combine(...sources) {\n let destination;\n for (const source of sources) {\n // Ignore any undefined or null sources.\n if (source === undefined || source === null) {\n continue;\n }\n destination = mergeInto(destination, source);\n }\n return destination;\n}\nfunction createCircularReferenceChecker() {\n if (typeof WeakSet !== 'undefined') {\n const set = new WeakSet();\n return {\n hasAlreadyBeenSeen(value) {\n const has = set.has(value);\n if (!has) {\n set.add(value);\n }\n return has;\n },\n };\n }\n const array = [];\n return {\n hasAlreadyBeenSeen(value) {\n const has = array.indexOf(value) >= 0;\n if (!has) {\n array.push(value);\n }\n return has;\n },\n };\n}\n//# sourceMappingURL=mergeInto.js.map","import { globalObject } from '../../tools/globalObject';\nexport function getConnectivity() {\n var _a;\n const navigator = globalObject.navigator;\n return {\n status: navigator.onLine ? 'connected' : 'not_connected',\n interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : undefined,\n effective_type: (_a = navigator.connection) === null || _a === void 0 ? void 0 : _a.effectiveType,\n };\n}\n//# sourceMappingURL=connectivity.js.map","export function isServerError(status) {\n return status >= 500;\n}\nexport function tryToClone(response) {\n try {\n return response.clone();\n }\n catch (_a) {\n // clone can throw if the response has already been used by another instrumentation or is disturbed\n return;\n }\n}\n//# sourceMappingURL=responseUtils.js.map","import { setTimeout } from '../tools/timer';\nimport { clocksNow, ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils';\nimport { isServerError } from '../tools/utils/responseUtils';\nimport { ErrorSource } from '../domain/error/error.types';\nexport const MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport const MAX_ONGOING_REQUESTS = 32;\nexport const MAX_QUEUE_BYTES_COUNT = 20 * ONE_MEBI_BYTE;\nexport const MAX_BACKOFF_TIME = ONE_MINUTE;\nexport const INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, trackType, reportError, requestObservable) {\n if (state.transportStatus === 0 /* TransportStatus.UP */ &&\n state.queuedPayloads.size() === 0 &&\n state.bandwidthMonitor.canHandle(payload)) {\n send(payload, state, sendStrategy, requestObservable, {\n onSuccess: () => retryQueuedPayloads(0 /* RetryReason.AFTER_SUCCESS */, state, sendStrategy, trackType, reportError, requestObservable),\n onFailure: () => {\n if (!state.queuedPayloads.enqueue(payload)) {\n requestObservable.notify({ type: 'queue-full', bandwidth: state.bandwidthMonitor.stats(), payload });\n }\n scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable);\n },\n });\n }\n else {\n if (!state.queuedPayloads.enqueue(payload)) {\n requestObservable.notify({ type: 'queue-full', bandwidth: state.bandwidthMonitor.stats(), payload });\n }\n }\n}\nfunction scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable) {\n if (state.transportStatus !== 2 /* TransportStatus.DOWN */) {\n return;\n }\n setTimeout(() => {\n const payload = state.queuedPayloads.first();\n send(payload, state, sendStrategy, requestObservable, {\n onSuccess: () => {\n state.queuedPayloads.dequeue();\n state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n retryQueuedPayloads(1 /* RetryReason.AFTER_RESUME */, state, sendStrategy, trackType, reportError, requestObservable);\n },\n onFailure: () => {\n state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable);\n },\n });\n }, state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, requestObservable, { onSuccess, onFailure }) {\n state.bandwidthMonitor.add(payload);\n sendStrategy(payload, (response) => {\n state.bandwidthMonitor.remove(payload);\n if (!shouldRetryRequest(response)) {\n state.transportStatus = 0 /* TransportStatus.UP */;\n requestObservable.notify({ type: 'success', bandwidth: state.bandwidthMonitor.stats(), payload });\n onSuccess();\n }\n else {\n // do not consider transport down if another ongoing request could succeed\n state.transportStatus =\n state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 /* TransportStatus.FAILURE_DETECTED */ : 2 /* TransportStatus.DOWN */;\n payload.retry = {\n count: payload.retry ? payload.retry.count + 1 : 1,\n lastFailureStatus: response.status,\n };\n requestObservable.notify({ type: 'failure', bandwidth: state.bandwidthMonitor.stats(), payload });\n onFailure();\n }\n });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, trackType, reportError, requestObservable) {\n if (reason === 0 /* RetryReason.AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n reportError({\n message: `Reached max ${trackType} events size queued for upload: ${MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE}MiB`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n });\n state.queueFullReported = true;\n }\n const previousQueue = state.queuedPayloads;\n state.queuedPayloads = newPayloadQueue();\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, trackType, reportError, requestObservable);\n }\n}\nfunction shouldRetryRequest(response) {\n return (response.type !== 'opaque' &&\n ((response.status === 0 && !navigator.onLine) ||\n response.status === 408 ||\n response.status === 429 ||\n isServerError(response.status)));\n}\nexport function newRetryState() {\n return {\n transportStatus: 0 /* TransportStatus.UP */,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false,\n };\n}\nfunction newPayloadQueue() {\n const queue = [];\n return {\n bytesCount: 0,\n enqueue(payload) {\n if (this.isFull()) {\n return false;\n }\n queue.push(payload);\n this.bytesCount += payload.bytesCount;\n return true;\n },\n first() {\n return queue[0];\n },\n dequeue() {\n const payload = queue.shift();\n if (payload) {\n this.bytesCount -= payload.bytesCount;\n }\n return payload;\n },\n size() {\n return queue.length;\n },\n isFull() {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n },\n };\n}\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle(payload) {\n return (this.ongoingRequestCount === 0 ||\n (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n this.ongoingRequestCount < MAX_ONGOING_REQUESTS));\n },\n add(payload) {\n this.ongoingRequestCount += 1;\n this.ongoingByteCount += payload.bytesCount;\n },\n remove(payload) {\n this.ongoingRequestCount -= 1;\n this.ongoingByteCount -= payload.bytesCount;\n },\n stats() {\n return {\n ongoingByteCount: this.ongoingByteCount,\n ongoingRequestCount: this.ongoingRequestCount,\n };\n },\n };\n}\n//# sourceMappingURL=sendWithRetryStrategy.js.map","import { monitor, monitorError } from '../tools/monitor';\nimport { isExperimentalFeatureEnabled, ExperimentalFeature } from '../tools/experimentalFeatures';\nimport { Observable } from '../tools/observable';\nimport { ONE_KIBI_BYTE } from '../tools/utils/byteUtils';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\n/**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\nexport const RECOMMENDED_REQUEST_BYTES_LIMIT = 16 * ONE_KIBI_BYTE;\nexport function createHttpRequest(endpointBuilders, reportError, bytesLimit = RECOMMENDED_REQUEST_BYTES_LIMIT) {\n const observable = new Observable();\n const retryState = newRetryState();\n return {\n observable,\n send: (payload) => {\n for (const endpointBuilder of endpointBuilders) {\n sendWithRetryStrategy(payload, retryState, (payload, onResponse) => {\n if (isExperimentalFeatureEnabled(ExperimentalFeature.AVOID_FETCH_KEEPALIVE)) {\n fetchStrategy(endpointBuilder, payload, onResponse);\n }\n else {\n fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse);\n }\n }, endpointBuilder.trackType, reportError, observable);\n }\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: (payload) => {\n for (const endpointBuilder of endpointBuilders) {\n sendBeaconStrategy(endpointBuilder, bytesLimit, payload);\n }\n },\n };\n}\nfunction sendBeaconStrategy(endpointBuilder, bytesLimit, payload) {\n const canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit;\n if (canUseBeacon) {\n try {\n const beaconUrl = endpointBuilder.build('beacon', payload);\n const isQueued = navigator.sendBeacon(beaconUrl, payload.data);\n if (isQueued) {\n return;\n }\n }\n catch (e) {\n reportBeaconError(e);\n }\n }\n fetchStrategy(endpointBuilder, payload);\n}\nlet hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true;\n monitorError(e);\n }\n}\nexport function fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse) {\n const canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit;\n if (canUseKeepAlive) {\n const fetchUrl = endpointBuilder.build('fetch-keepalive', payload);\n fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' })\n .then(monitor((response) => onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type })))\n .catch(monitor(() => fetchStrategy(endpointBuilder, payload, onResponse)));\n }\n else {\n fetchStrategy(endpointBuilder, payload, onResponse);\n }\n}\nexport function fetchStrategy(endpointBuilder, payload, onResponse) {\n const fetchUrl = endpointBuilder.build('fetch', payload);\n fetch(fetchUrl, { method: 'POST', body: payload.data, mode: 'cors' })\n .then(monitor((response) => onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type })))\n .catch(monitor(() => onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: 0 })));\n}\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a');\n }\n catch (_a) {\n return false;\n }\n}\n//# sourceMappingURL=httpRequest.js.map","import { getGlobalObject } from '../tools/globalObject';\nexport function getEventBridge() {\n const eventBridgeGlobal = getEventBridgeGlobal();\n if (!eventBridgeGlobal) {\n return;\n }\n return {\n getCapabilities() {\n var _a;\n return JSON.parse(((_a = eventBridgeGlobal.getCapabilities) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal)) || '[]');\n },\n getPrivacyLevel() {\n var _a;\n return (_a = eventBridgeGlobal.getPrivacyLevel) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal);\n },\n getAllowedWebViewHosts() {\n return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n },\n send(eventType, event, viewId) {\n const view = viewId ? { id: viewId } : undefined;\n eventBridgeGlobal.send(JSON.stringify({ eventType, event, view }));\n },\n };\n}\nexport function bridgeSupports(capability) {\n const bridge = getEventBridge();\n return !!bridge && bridge.getCapabilities().includes(capability);\n}\nexport function canUseEventBridge(currentHost) {\n var _a;\n if (currentHost === void 0) { currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n const bridge = getEventBridge();\n return (!!bridge &&\n bridge\n .getAllowedWebViewHosts()\n .some((allowedHost) => currentHost === allowedHost || currentHost.endsWith(`.${allowedHost}`)));\n}\nfunction getEventBridgeGlobal() {\n return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","import { Observable } from '../tools/observable';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { addEventListeners, addEventListener } from './addEventListener';\nexport const PageExitReason = {\n HIDDEN: 'visibility_hidden',\n UNLOADING: 'before_unload',\n PAGEHIDE: 'page_hide',\n FROZEN: 'page_frozen',\n};\nexport function createPageMayExitObservable(configuration) {\n return new Observable((observable) => {\n const { stop: stopListeners } = addEventListeners(configuration, window, [\"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, \"freeze\" /* DOM_EVENT.FREEZE */], (event) => {\n if (event.type === \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */ && document.visibilityState === 'hidden') {\n /**\n * Only event that guarantee to fire on mobile devices when the page transitions to background state\n * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n */\n observable.notify({ reason: PageExitReason.HIDDEN });\n }\n else if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n /**\n * After transitioning in background a tab can be freezed to preserve resources. (cf: https://developer.chrome.com/blog/page-lifecycle-api)\n * Allow to collect events happening between hidden and frozen state.\n */\n observable.notify({ reason: PageExitReason.FROZEN });\n }\n }, { capture: true });\n const stopBeforeUnloadListener = addEventListener(configuration, window, \"beforeunload\" /* DOM_EVENT.BEFORE_UNLOAD */, () => {\n observable.notify({ reason: PageExitReason.UNLOADING });\n }).stop;\n return () => {\n stopListeners();\n stopBeforeUnloadListener();\n };\n });\n}\nexport function isPageExitReason(reason) {\n return objectValues(PageExitReason).includes(reason);\n}\n//# sourceMappingURL=pageMayExitObservable.js.map","import { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../tools/display';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { isPageExitReason } from '../browser/pageMayExitObservable';\nimport { jsonStringify } from '../tools/serialisation/jsonStringify';\nimport { computeBytesCount, ONE_KIBI_BYTE } from '../tools/utils/byteUtils';\nexport const MESSAGE_BYTES_LIMIT = 256 * ONE_KIBI_BYTE;\nexport function createBatch({ encoder, request, flushController, }) {\n let upsertBuffer = {};\n const flushSubscription = flushController.flushObservable.subscribe((event) => flush(event));\n function push(serializedMessage, estimatedMessageBytesCount, key) {\n flushController.notifyBeforeAddMessage(estimatedMessageBytesCount);\n if (key !== undefined) {\n upsertBuffer[key] = serializedMessage;\n flushController.notifyAfterAddMessage();\n }\n else {\n encoder.write(encoder.isEmpty ? serializedMessage : `\\n${serializedMessage}`, (realMessageBytesCount) => {\n flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount);\n });\n }\n }\n function hasMessageFor(key) {\n return key !== undefined && upsertBuffer[key] !== undefined;\n }\n function remove(key) {\n const removedMessage = upsertBuffer[key];\n delete upsertBuffer[key];\n const messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage);\n flushController.notifyAfterRemoveMessage(messageBytesCount);\n }\n function addOrUpdate(message, key) {\n const serializedMessage = jsonStringify(message);\n const estimatedMessageBytesCount = encoder.estimateEncodedBytesCount(serializedMessage);\n if (estimatedMessageBytesCount >= MESSAGE_BYTES_LIMIT) {\n display.warn(`Discarded a message whose size was bigger than the maximum allowed size ${MESSAGE_BYTES_LIMIT / ONE_KIBI_BYTE}KiB. ${MORE_DETAILS} ${DOCS_TROUBLESHOOTING}/#technical-limitations`);\n return;\n }\n if (hasMessageFor(key)) {\n remove(key);\n }\n push(serializedMessage, estimatedMessageBytesCount, key);\n }\n function flush(event) {\n const upsertMessages = objectValues(upsertBuffer).join('\\n');\n upsertBuffer = {};\n const pageMightExit = isPageExitReason(event.reason);\n const send = pageMightExit ? request.sendOnExit : request.send;\n if (pageMightExit &&\n // Note: checking that the encoder is async is not strictly needed, but it's an optimization:\n // if the encoder is async we need to send two requests in some cases (one for encoded data\n // and the other for non-encoded data). But if it's not async, we don't have to worry about\n // it and always send a single request.\n encoder.isAsync) {\n const encoderResult = encoder.finishSync();\n // Send encoded messages\n if (encoderResult.outputBytesCount) {\n send(formatPayloadFromEncoder(encoderResult));\n }\n // Send messages that are not yet encoded at this point\n const pendingMessages = [encoderResult.pendingData, upsertMessages].filter(Boolean).join('\\n');\n if (pendingMessages) {\n send({\n data: pendingMessages,\n bytesCount: computeBytesCount(pendingMessages),\n });\n }\n }\n else {\n if (upsertMessages) {\n encoder.write(encoder.isEmpty ? upsertMessages : `\\n${upsertMessages}`);\n }\n encoder.finish((encoderResult) => {\n send(formatPayloadFromEncoder(encoderResult));\n });\n }\n }\n return {\n flushController,\n add: addOrUpdate,\n upsert: addOrUpdate,\n stop: flushSubscription.unsubscribe,\n };\n}\nfunction formatPayloadFromEncoder(encoderResult) {\n let data;\n if (typeof encoderResult.output === 'string') {\n data = encoderResult.output;\n }\n else {\n data = new Blob([encoderResult.output], {\n // This will set the 'Content-Type: text/plain' header. Reasoning:\n // * The intake rejects the request if there is no content type.\n // * The browser will issue CORS preflight requests if we set it to 'application/json', which\n // could induce higher intake load (and maybe has other impacts).\n // * Also it's not quite JSON, since we are concatenating multiple JSON objects separated by\n // new lines.\n type: 'text/plain',\n });\n }\n return {\n data,\n bytesCount: encoderResult.outputBytesCount,\n encoding: encoderResult.encoding,\n };\n}\n//# sourceMappingURL=batch.js.map","import { isWorkerEnvironment } from '../tools/globalObject';\nimport { Observable } from '../tools/observable';\nimport { clearTimeout, setTimeout } from '../tools/timer';\nimport { ONE_SECOND } from '../tools/utils/timeUtils';\nimport { RECOMMENDED_REQUEST_BYTES_LIMIT } from './httpRequest';\n/**\n * flush automatically, aim to be lower than ALB connection timeout\n * to maximize connection reuse.\n */\nexport const FLUSH_DURATION_LIMIT = (30 * ONE_SECOND);\n/**\n * When using the SDK in a Worker Environment, we limit the batch size to 1 to ensure it can be sent\n * in a single event.\n */\nexport const MESSAGES_LIMIT = isWorkerEnvironment ? 1 : 50;\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({ pageMayExitObservable, sessionExpireObservable }) {\n const pageMayExitSubscription = pageMayExitObservable.subscribe((event) => flush(event.reason));\n const sessionExpireSubscription = sessionExpireObservable.subscribe(() => flush('session_expire'));\n const flushObservable = new Observable(() => () => {\n pageMayExitSubscription.unsubscribe();\n sessionExpireSubscription.unsubscribe();\n });\n let currentBytesCount = 0;\n let currentMessagesCount = 0;\n function flush(flushReason) {\n if (currentMessagesCount === 0) {\n return;\n }\n const messagesCount = currentMessagesCount;\n const bytesCount = currentBytesCount;\n currentMessagesCount = 0;\n currentBytesCount = 0;\n cancelDurationLimitTimeout();\n flushObservable.notify({\n reason: flushReason,\n messagesCount,\n bytesCount,\n });\n }\n let durationLimitTimeoutId;\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(() => {\n flush('duration_limit');\n }, FLUSH_DURATION_LIMIT);\n }\n }\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId);\n durationLimitTimeoutId = undefined;\n }\n return {\n flushObservable,\n get messagesCount() {\n return currentMessagesCount;\n },\n /**\n * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right before adding the message, so no flush\n * event can happen after `notifyBeforeAddMessage` and before adding the message.\n *\n * @param estimatedMessageBytesCount - an estimation of the message bytes count once it is\n * actually added.\n */\n notifyBeforeAddMessage(estimatedMessageBytesCount) {\n if (currentBytesCount + estimatedMessageBytesCount >= RECOMMENDED_REQUEST_BYTES_LIMIT) {\n flush('bytes_limit');\n }\n // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n // to notify when a flush is needed (for example on page exit).\n currentMessagesCount += 1;\n currentBytesCount += estimatedMessageBytesCount;\n scheduleDurationLimitTimeout();\n },\n /**\n * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n *\n * This function can be called asynchronously after the message was added, but in this case it\n * should not be called if a flush event occurred in between.\n *\n * @param messageBytesCountDiff - the difference between the estimated message bytes count and\n * its actual bytes count once added to the pool.\n */\n notifyAfterAddMessage(messageBytesCountDiff = 0) {\n currentBytesCount += messageBytesCountDiff;\n if (currentMessagesCount >= MESSAGES_LIMIT) {\n flush('messages_limit');\n }\n else if (currentBytesCount >= RECOMMENDED_REQUEST_BYTES_LIMIT) {\n flush('bytes_limit');\n }\n },\n /**\n * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right after removing the message, so no flush\n * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n *\n * @param messageBytesCount - the message bytes count that was added to the pool. Should\n * correspond to the sum of bytes counts passed to `notifyBeforeAddMessage` and\n * `notifyAfterAddMessage`.\n */\n notifyAfterRemoveMessage(messageBytesCount) {\n currentBytesCount -= messageBytesCount;\n currentMessagesCount -= 1;\n if (currentMessagesCount === 0) {\n cancelDurationLimitTimeout();\n }\n },\n };\n}\n//# sourceMappingURL=flushController.js.map","import { combine } from './mergeInto';\n// Discards the event from being sent\nexport const DISCARDED = 'DISCARDED';\n// Skips from the assembly of the event\nexport const SKIPPED = 'SKIPPED';\nexport function abstractHooks() {\n const callbacks = {};\n return {\n register(hookName, callback) {\n if (!callbacks[hookName]) {\n callbacks[hookName] = [];\n }\n callbacks[hookName].push(callback);\n return {\n unregister: () => {\n callbacks[hookName] = callbacks[hookName].filter((cb) => cb !== callback);\n },\n };\n },\n triggerHook(hookName, param) {\n const hookCallbacks = callbacks[hookName] || [];\n const results = [];\n for (const callback of hookCallbacks) {\n const result = callback(param);\n if (result === DISCARDED) {\n return DISCARDED;\n }\n if (result === SKIPPED) {\n continue;\n }\n results.push(result);\n }\n return combine(...results);\n },\n };\n}\n//# sourceMappingURL=abstractHooks.js.map","export const TelemetryType = {\n LOG: 'log',\n CONFIGURATION: 'configuration',\n USAGE: 'usage',\n};\n//# sourceMappingURL=rawTelemetryEvent.types.js.map","import { ConsoleApiName } from '../../tools/display';\nimport { NO_ERROR_STACK_PRESENT_MESSAGE, isError } from '../error/error';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures';\nimport { buildTags } from '../tags';\nimport { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../intakeSites';\nimport { BufferedObservable, Observable } from '../../tools/observable';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { sendToExtension } from '../../tools/sendToExtension';\nimport { performDraw } from '../../tools/utils/numberUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { combine } from '../../tools/mergeInto';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { getConnectivity } from '../connectivity';\nimport { canUseEventBridge, createFlushController, createHttpRequest, getEventBridge, createBatch, } from '../../transport';\nimport { DISCARDED } from '../../tools/abstractHooks';\nimport { globalObject, isWorkerEnvironment } from '../../tools/globalObject';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nconst ALLOWED_FRAME_URLS = [\n 'https://www.datadoghq-browser-agent.com',\n 'https://www.datad0g-browser-agent.com',\n 'https://d3uc069fcn7uxw.cloudfront.net',\n 'https://d20xtzwzcl0ceb.cloudfront.net',\n 'http://localhost',\n '<anonymous>',\n];\nconst METRIC_SAMPLE_RATE = 1;\nconst TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\nconst MAX_TELEMETRY_EVENTS_PER_PAGE = 15;\nlet telemetryObservable;\nexport function getTelemetryObservable() {\n if (!telemetryObservable) {\n telemetryObservable = new BufferedObservable(100);\n }\n return telemetryObservable;\n}\nexport function startTelemetry(telemetryService, configuration, hooks, reportError, pageMayExitObservable, createEncoder) {\n const observable = new Observable();\n const { stop } = startTelemetryTransport(configuration, reportError, pageMayExitObservable, createEncoder, observable);\n const { enabled, metricsEnabled } = startTelemetryCollection(telemetryService, configuration, hooks, observable);\n return {\n stop,\n enabled,\n metricsEnabled,\n };\n}\nexport function startTelemetryCollection(telemetryService, configuration, hooks, observable, metricSampleRate = METRIC_SAMPLE_RATE, maxTelemetryEventsPerPage = MAX_TELEMETRY_EVENTS_PER_PAGE) {\n const alreadySentEventsByKind = {};\n const telemetryEnabled = !TELEMETRY_EXCLUDED_SITES.includes(configuration.site) && performDraw(configuration.telemetrySampleRate);\n const telemetryEnabledPerType = {\n [TelemetryType.LOG]: telemetryEnabled,\n [TelemetryType.CONFIGURATION]: telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate),\n [TelemetryType.USAGE]: telemetryEnabled && performDraw(configuration.telemetryUsageSampleRate),\n // not an actual \"type\" but using a single draw for all metrics\n metric: telemetryEnabled && performDraw(metricSampleRate),\n };\n const runtimeEnvInfo = getRuntimeEnvInfo();\n const telemetryObservable = getTelemetryObservable();\n telemetryObservable.subscribe(({ rawEvent, metricName }) => {\n if ((metricName && !telemetryEnabledPerType['metric']) || !telemetryEnabledPerType[rawEvent.type]) {\n return;\n }\n const kind = metricName || rawEvent.status || rawEvent.type;\n let alreadySentEvents = alreadySentEventsByKind[kind];\n if (!alreadySentEvents) {\n alreadySentEvents = alreadySentEventsByKind[kind] = new Set();\n }\n if (alreadySentEvents.size >= maxTelemetryEventsPerPage) {\n return;\n }\n const stringifiedEvent = jsonStringify(rawEvent);\n if (alreadySentEvents.has(stringifiedEvent)) {\n return;\n }\n const defaultTelemetryEventAttributes = hooks.triggerHook(1 /* HookNames.AssembleTelemetry */, {\n startTime: clocksNow().relative,\n });\n if (defaultTelemetryEventAttributes === DISCARDED) {\n return;\n }\n const event = toTelemetryEvent(defaultTelemetryEventAttributes, telemetryService, rawEvent, runtimeEnvInfo);\n observable.notify(event);\n sendToExtension('telemetry', event);\n alreadySentEvents.add(stringifiedEvent);\n });\n telemetryObservable.unbuffer();\n startMonitorErrorCollection(addTelemetryError);\n return {\n enabled: telemetryEnabled,\n metricsEnabled: telemetryEnabledPerType['metric'],\n };\n function toTelemetryEvent(defaultTelemetryEventAttributes, telemetryService, rawEvent, runtimeEnvInfo) {\n const clockNow = clocksNow();\n const event = {\n type: 'telemetry',\n date: clockNow.timeStamp,\n service: telemetryService,\n version: \"6.25.2\",\n source: 'browser',\n _dd: {\n format_version: 2,\n },\n telemetry: combine(rawEvent, {\n runtime_env: runtimeEnvInfo,\n connectivity: getConnectivity(),\n sdk_setup: \"npm\",\n }),\n ddtags: buildTags(configuration).join(','),\n experimental_features: Array.from(getExperimentalFeatures()),\n };\n return combine(event, defaultTelemetryEventAttributes);\n }\n}\nfunction startTelemetryTransport(configuration, reportError, pageMayExitObservable, createEncoder, telemetryObservable) {\n const cleanupTasks = [];\n if (canUseEventBridge()) {\n const bridge = getEventBridge();\n const telemetrySubscription = telemetryObservable.subscribe((event) => bridge.send('internal_telemetry', event));\n cleanupTasks.push(telemetrySubscription.unsubscribe);\n }\n else {\n const endpoints = [configuration.rumEndpointBuilder];\n if (configuration.replica && isTelemetryReplicationAllowed(configuration)) {\n endpoints.push(configuration.replica.rumEndpointBuilder);\n }\n const telemetryBatch = createBatch({\n encoder: createEncoder(4 /* DeflateEncoderStreamId.TELEMETRY */),\n request: createHttpRequest(endpoints, reportError),\n flushController: createFlushController({\n pageMayExitObservable,\n // We don't use an actual session expire observable here, to make telemetry collection\n // independent of the session. This allows to start and send telemetry events earlier.\n sessionExpireObservable: new Observable(),\n }),\n });\n cleanupTasks.push(telemetryBatch.stop);\n const telemetrySubscription = telemetryObservable.subscribe(telemetryBatch.add);\n cleanupTasks.push(telemetrySubscription.unsubscribe);\n }\n return {\n stop: () => cleanupTasks.forEach((task) => task()),\n };\n}\nfunction getRuntimeEnvInfo() {\n var _a;\n return {\n is_local_file: ((_a = globalObject.location) === null || _a === void 0 ? void 0 : _a.protocol) === 'file:',\n is_worker: isWorkerEnvironment,\n };\n}\nexport function resetTelemetry() {\n telemetryObservable = undefined;\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nfunction isTelemetryReplicationAllowed(configuration) {\n return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.LOG,\n message,\n status: \"debug\" /* StatusType.debug */,\n ...context,\n },\n });\n}\nexport function addTelemetryError(e, context) {\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.LOG,\n status: \"error\" /* StatusType.error */,\n ...formatError(e),\n ...context,\n },\n });\n}\nexport function addTelemetryConfiguration(configuration) {\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.CONFIGURATION,\n configuration,\n },\n });\n}\nexport function addTelemetryMetrics(metricName, context) {\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.LOG,\n message: metricName,\n status: \"debug\" /* StatusType.debug */,\n ...context,\n },\n metricName,\n });\n}\nexport function addTelemetryUsage(usage) {\n getTelemetryObservable().notify({\n rawEvent: {\n type: TelemetryType.USAGE,\n usage,\n },\n });\n}\nexport function formatError(e) {\n if (isError(e)) {\n const stackTrace = computeStackTrace(e);\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n },\n message: stackTrace.message,\n };\n }\n return {\n error: {\n stack: NO_ERROR_STACK_PRESENT_MESSAGE,\n },\n message: `${\"Uncaught\" /* NonErrorPrefix.UNCAUGHT */} ${jsonStringify(e)}`,\n };\n}\nexport function scrubCustomerFrames(stackTrace) {\n stackTrace.stack = stackTrace.stack.filter((frame) => !frame.url || ALLOWED_FRAME_URLS.some((allowedFrameUrl) => frame.url.startsWith(allowedFrameUrl)));\n return stackTrace;\n}\n//# sourceMappingURL=telemetry.js.map","export function removeDuplicates(array) {\n const set = new Set();\n array.forEach((item) => set.add(item));\n return Array.from(set);\n}\nexport function removeItem(array, item) {\n const index = array.indexOf(item);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\nexport function isNonEmptyArray(value) {\n return Array.isArray(value) && value.length > 0;\n}\n//# sourceMappingURL=arrayUtils.js.map","import { setInterval, clearInterval } from './timer';\nimport { removeItem } from './utils/arrayUtils';\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils';\nconst END_OF_TIMES = Infinity;\nexport const CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE;\nlet cleanupHistoriesInterval = null;\nconst cleanupTasks = new Set();\nfunction cleanupHistories() {\n cleanupTasks.forEach((task) => task());\n}\nexport function createValueHistory({ expireDelay, maxEntries, }) {\n let entries = [];\n if (!cleanupHistoriesInterval) {\n cleanupHistoriesInterval = setInterval(() => cleanupHistories(), CLEAR_OLD_VALUES_INTERVAL);\n }\n const clearExpiredValues = () => {\n const oldTimeThreshold = relativeNow() - expireDelay;\n while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {\n entries.pop();\n }\n };\n cleanupTasks.add(clearExpiredValues);\n /**\n * Add a value to the history associated with a start time. Returns a reference to this newly\n * added entry that can be removed or closed.\n */\n function add(value, startTime) {\n const entry = {\n value,\n startTime,\n endTime: END_OF_TIMES,\n remove: () => {\n removeItem(entries, entry);\n },\n close: (endTime) => {\n entry.endTime = endTime;\n },\n };\n if (maxEntries && entries.length >= maxEntries) {\n entries.pop();\n }\n entries.unshift(entry);\n return entry;\n }\n /**\n * Return the latest value that was active during `startTime`, or the currently active value\n * if no `startTime` is provided. This method assumes that entries are not overlapping.\n *\n * If `option.returnInactive` is true, returns the value at `startTime` (active or not).\n */\n function find(startTime = END_OF_TIMES, options = { returnInactive: false }) {\n for (const entry of entries) {\n if (entry.startTime <= startTime) {\n if (options.returnInactive || startTime <= entry.endTime) {\n return entry.value;\n }\n break;\n }\n }\n }\n /**\n * Helper function to close the currently active value, if any. This method assumes that entries\n * are not overlapping.\n */\n function closeActive(endTime) {\n const latestEntry = entries[0];\n if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n latestEntry.close(endTime);\n }\n }\n /**\n * Return all values with an active period overlapping with the duration,\n * or all values that were active during `startTime` if no duration is provided,\n * or all currently active values if no `startTime` is provided.\n */\n function findAll(startTime = END_OF_TIMES, duration = 0) {\n const endTime = addDuration(startTime, duration);\n return entries\n .filter((entry) => entry.startTime <= endTime && startTime <= entry.endTime)\n .map((entry) => entry.value);\n }\n /**\n * Remove all entries from this collection.\n */\n function reset() {\n entries = [];\n }\n /**\n * Stop internal garbage collection of past entries.\n */\n function stop() {\n cleanupTasks.delete(clearExpiredValues);\n if (cleanupTasks.size === 0 && cleanupHistoriesInterval) {\n clearInterval(cleanupHistoriesInterval);\n cleanupHistoriesInterval = null;\n }\n }\n return { add, find, closeActive, findAll, reset, stop };\n}\n//# sourceMappingURL=valueHistory.js.map","import { getInitCookie } from '../../browser/cookie';\nimport { globalObject, isWorkerEnvironment } from '../../tools/globalObject';\nexport const SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport const SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport const SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function willSyntheticsInjectRum() {\n if (isWorkerEnvironment) {\n // We don't expect to run synthetics tests in a worker environment\n return false;\n }\n return Boolean(globalObject._DATADOG_SYNTHETICS_INJECTS_RUM || getInitCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n const value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getInitCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n const value = window._DATADOG_SYNTHETICS_RESULT_ID || getInitCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\nexport function isSyntheticsTest() {\n return Boolean(getSyntheticsTestId() && getSyntheticsResultId());\n}\n//# sourceMappingURL=syntheticsWorkerValues.js.map","import { Observable } from '../../tools/observable';\nimport { createValueHistory } from '../../tools/valueHistory';\nimport { clocksOrigin, dateNow, ONE_MINUTE, relativeNow } from '../../tools/utils/timeUtils';\nimport { addEventListener, addEventListeners } from '../../browser/addEventListener';\nimport { clearInterval, setInterval } from '../../tools/timer';\nimport { addTelemetryDebug } from '../telemetry';\nimport { isSyntheticsTest } from '../synthetics/syntheticsWorkerValues';\nimport { getCurrentSite } from '../../browser/cookie';\nimport { ExperimentalFeature, isExperimentalFeatureEnabled } from '../../tools/experimentalFeatures';\nimport { findLast } from '../../tools/utils/polyfills';\nimport { monitorError } from '../../tools/monitor';\nimport { SESSION_NOT_TRACKED, SESSION_TIME_OUT_DELAY, SessionPersistence } from './sessionConstants';\nimport { startSessionStore } from './sessionStore';\nimport { toSessionState } from './sessionState';\nimport { retrieveSessionCookie } from './storeStrategies/sessionInCookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nimport { retrieveSessionFromLocalStorage } from './storeStrategies/sessionInLocalStorage';\nexport const VISIBILITY_CHECK_DELAY = ONE_MINUTE;\nconst SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nlet stopCallbacks = [];\nexport function startSessionManager(configuration, productKey, computeTrackingType, trackingConsentState) {\n const renewObservable = new Observable();\n const expireObservable = new Observable();\n // TODO - Improve configuration type and remove assertion\n const sessionStore = startSessionStore(configuration.sessionStoreStrategyType, configuration, productKey, computeTrackingType);\n stopCallbacks.push(() => sessionStore.stop());\n const sessionContextHistory = createValueHistory({\n expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY,\n });\n stopCallbacks.push(() => sessionContextHistory.stop());\n sessionStore.renewObservable.subscribe(() => {\n sessionContextHistory.add(buildSessionContext(), relativeNow());\n renewObservable.notify();\n });\n sessionStore.expireObservable.subscribe(() => {\n expireObservable.notify();\n sessionContextHistory.closeActive(relativeNow());\n });\n // We expand/renew session unconditionally as tracking consent is always granted when the session\n // manager is started.\n sessionStore.expandOrRenewSession();\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);\n if (isExperimentalFeatureEnabled(ExperimentalFeature.SHORT_SESSION_INVESTIGATION)) {\n const session = sessionStore.getSession();\n if (session) {\n detectSessionIdChange(configuration, session);\n }\n }\n trackingConsentState.observable.subscribe(() => {\n if (trackingConsentState.isGranted()) {\n sessionStore.expandOrRenewSession();\n }\n else {\n sessionStore.expire(false);\n }\n });\n trackActivity(configuration, () => {\n if (trackingConsentState.isGranted()) {\n sessionStore.expandOrRenewSession();\n }\n });\n trackVisibility(configuration, () => sessionStore.expandSession());\n trackResume(configuration, () => sessionStore.restartSession());\n function buildSessionContext() {\n const session = sessionStore.getSession();\n if (!session) {\n reportUnexpectedSessionState(configuration).catch(() => void 0); // Ignore errors\n return {\n id: 'invalid',\n trackingType: SESSION_NOT_TRACKED,\n isReplayForced: false,\n anonymousId: undefined,\n };\n }\n return {\n id: session.id,\n trackingType: session[productKey],\n isReplayForced: !!session.forcedReplay,\n anonymousId: session.anonymousId,\n };\n }\n return {\n findSession: (startTime, options) => sessionContextHistory.find(startTime, options),\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,\n expire: sessionStore.expire,\n updateSessionState: sessionStore.updateSessionState,\n };\n}\nexport function stopSessionManager() {\n stopCallbacks.forEach((e) => e());\n stopCallbacks = [];\n}\nfunction trackActivity(configuration, expandOrRenewSession) {\n const { stop } = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"scroll\" /* DOM_EVENT.SCROLL */], expandOrRenewSession, { capture: true, passive: true });\n stopCallbacks.push(stop);\n}\nfunction trackVisibility(configuration, expandSession) {\n const expandSessionWhenVisible = () => {\n if (document.visibilityState === 'visible') {\n expandSession();\n }\n };\n const { stop } = addEventListener(configuration, document, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, expandSessionWhenVisible);\n stopCallbacks.push(stop);\n const visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);\n stopCallbacks.push(() => {\n clearInterval(visibilityCheckInterval);\n });\n}\nfunction trackResume(configuration, cb) {\n const { stop } = addEventListener(configuration, window, \"resume\" /* DOM_EVENT.RESUME */, cb, { capture: true });\n stopCallbacks.push(stop);\n}\nasync function reportUnexpectedSessionState(configuration) {\n const sessionStoreStrategyType = configuration.sessionStoreStrategyType;\n if (!sessionStoreStrategyType) {\n return;\n }\n let rawSession;\n let cookieContext;\n if (sessionStoreStrategyType.type === SessionPersistence.COOKIE) {\n rawSession = retrieveSessionCookie(sessionStoreStrategyType.cookieOptions, configuration);\n cookieContext = {\n cookie: await getSessionCookies(),\n currentDomain: `${window.location.protocol}//${window.location.hostname}`,\n };\n }\n else {\n rawSession = retrieveSessionFromLocalStorage();\n }\n // monitor-until: forever, could be handy to troubleshoot issues until session manager rework\n addTelemetryDebug('Unexpected session state', {\n sessionStoreStrategyType: sessionStoreStrategyType.type,\n session: rawSession,\n isSyntheticsTest: isSyntheticsTest(),\n createdTimestamp: rawSession === null || rawSession === void 0 ? void 0 : rawSession.created,\n expireTimestamp: rawSession === null || rawSession === void 0 ? void 0 : rawSession.expire,\n ...cookieContext,\n });\n}\nfunction detectSessionIdChange(configuration, initialSessionState) {\n if (!window.cookieStore || !initialSessionState.created) {\n return;\n }\n const sessionCreatedTime = Number(initialSessionState.created);\n const sdkInitTime = dateNow();\n const { stop } = addEventListener(configuration, cookieStore, \"change\" /* DOM_EVENT.CHANGE */, listener);\n stopCallbacks.push(stop);\n function listener(event) {\n const changed = findLast(event.changed, (change) => change.name === SESSION_STORE_KEY);\n if (!changed) {\n return;\n }\n const sessionAge = dateNow() - sessionCreatedTime;\n if (sessionAge > 14 * ONE_MINUTE) {\n // The session might have expired just because it's too old or lack activity\n stop();\n }\n else {\n const newSessionState = toSessionState(changed.value);\n if (newSessionState.id && newSessionState.id !== initialSessionState.id) {\n stop();\n const time = dateNow() - sdkInitTime;\n getSessionCookies()\n .then((cookie) => {\n // monitor-until: 2026-04-01, after RUM-10845 investigation done\n addTelemetryDebug('Session cookie changed', {\n time,\n session_age: sessionAge,\n old: initialSessionState,\n new: newSessionState,\n cookie,\n });\n })\n .catch(monitorError);\n }\n }\n }\n}\nasync function getSessionCookies() {\n let sessionCookies;\n if ('cookieStore' in window) {\n sessionCookies = await window.cookieStore.getAll(SESSION_STORE_KEY);\n }\n else {\n sessionCookies = document.cookie.split(/\\s*;\\s*/).filter((cookie) => cookie.startsWith(SESSION_STORE_KEY));\n }\n return {\n count: sessionCookies.length,\n domain: getCurrentSite() || 'undefined',\n ...sessionCookies,\n };\n}\n//# sourceMappingURL=sessionManager.js.map","import { computeBytesCount } from './utils/byteUtils';\nexport function createIdentityEncoder() {\n let output = '';\n let outputBytesCount = 0;\n return {\n isAsync: false,\n get isEmpty() {\n return !output;\n },\n write(data, callback) {\n const additionalEncodedBytesCount = computeBytesCount(data);\n outputBytesCount += additionalEncodedBytesCount;\n output += data;\n if (callback) {\n callback(additionalEncodedBytesCount);\n }\n },\n finish(callback) {\n callback(this.finishSync());\n },\n finishSync() {\n const result = {\n output,\n outputBytesCount,\n rawBytesCount: outputBytesCount,\n pendingData: '',\n };\n output = '';\n outputBytesCount = 0;\n return result;\n },\n estimateEncodedBytesCount(data) {\n return data.length;\n },\n };\n}\n//# sourceMappingURL=encoder.js.map","// eslint-disable-next-line no-restricted-syntax\nexport class AbstractLifeCycle {\n constructor() {\n this.callbacks = {};\n }\n notify(eventType, data) {\n const eventCallbacks = this.callbacks[eventType];\n if (eventCallbacks) {\n eventCallbacks.forEach((callback) => callback(data));\n }\n }\n subscribe(eventType, callback) {\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = [];\n }\n this.callbacks[eventType].push(callback);\n return {\n unsubscribe: () => {\n this.callbacks[eventType] = this.callbacks[eventType].filter((other) => callback !== other);\n },\n };\n }\n}\n//# sourceMappingURL=abstractLifeCycle.js.map","import { setTimeout } from '../../tools/timer';\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { ErrorSource } from '../error/error.types';\n// Limit the maximum number of actions, errors and logs per minutes\nconst EVENT_RATE_LIMIT = 3000;\nexport function createEventRateLimiter(eventType, onLimitReached, limit = EVENT_RATE_LIMIT) {\n let eventCount = 0;\n let allowNextEvent = false;\n return {\n isLimitReached() {\n if (eventCount === 0) {\n setTimeout(() => {\n eventCount = 0;\n }, ONE_MINUTE);\n }\n eventCount += 1;\n if (eventCount <= limit || allowNextEvent) {\n allowNextEvent = false;\n return false;\n }\n if (eventCount === limit + 1) {\n allowNextEvent = true;\n try {\n onLimitReached({\n message: `Reached max number of ${eventType}s by minute: ${limit}`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n });\n }\n finally {\n allowNextEvent = false;\n }\n }\n return true;\n },\n };\n}\n//# sourceMappingURL=createEventRateLimiter.js.map","import { noop } from '../tools/utils/functionUtils';\nimport { addEventListener } from './addEventListener';\nexport function runOnReadyState(configuration, expectedReadyState, callback) {\n if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n callback();\n return { stop: noop };\n }\n const eventName = expectedReadyState === 'complete' ? \"load\" /* DOM_EVENT.LOAD */ : \"DOMContentLoaded\" /* DOM_EVENT.DOM_CONTENT_LOADED */;\n return addEventListener(configuration, window, eventName, callback, { once: true });\n}\nexport function asyncRunOnReadyState(configuration, expectedReadyState) {\n return new Promise((resolve) => {\n runOnReadyState(configuration, expectedReadyState, resolve);\n });\n}\n//# sourceMappingURL=runOnReadyState.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, clocksNow, timeStampNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { shallowClone } from '../tools/utils/objectUtils';\nimport { addEventListener } from './addEventListener';\nlet xhrObservable;\nconst xhrContexts = new WeakMap();\nexport function initXhrObservable(configuration) {\n if (!xhrObservable) {\n xhrObservable = createXhrObservable(configuration);\n }\n return xhrObservable;\n}\nfunction createXhrObservable(configuration) {\n return new Observable((observable) => {\n const { stop: stopInstrumentingStart } = instrumentMethod(XMLHttpRequest.prototype, 'open', openXhr);\n const { stop: stopInstrumentingSend } = instrumentMethod(XMLHttpRequest.prototype, 'send', (call) => {\n sendXhr(call, configuration, observable);\n }, { computeHandlingStack: true });\n const { stop: stopInstrumentingAbort } = instrumentMethod(XMLHttpRequest.prototype, 'abort', abortXhr);\n return () => {\n stopInstrumentingStart();\n stopInstrumentingSend();\n stopInstrumentingAbort();\n };\n });\n}\nfunction openXhr({ target: xhr, parameters: [method, url] }) {\n xhrContexts.set(xhr, {\n state: 'open',\n method: String(method).toUpperCase(),\n url: normalizeUrl(String(url)),\n });\n}\nfunction sendXhr({ target: xhr, parameters: [body], handlingStack }, configuration, observable) {\n const context = xhrContexts.get(xhr);\n if (!context) {\n return;\n }\n const startContext = context;\n startContext.state = 'start';\n startContext.startClocks = clocksNow();\n startContext.isAborted = false;\n startContext.xhr = xhr;\n startContext.handlingStack = handlingStack;\n startContext.requestBody = body;\n let hasBeenReported = false;\n const { stop: stopInstrumentingOnReadyStateChange } = instrumentMethod(xhr, 'onreadystatechange', () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n // application during a future event. For example, Angular is calling .abort() on\n // completed requests during an onreadystatechange event, so the status becomes '0'\n // before the request is collected.\n onEnd();\n }\n });\n const onEnd = () => {\n unsubscribeLoadEndListener();\n stopInstrumentingOnReadyStateChange();\n if (hasBeenReported) {\n return;\n }\n hasBeenReported = true;\n const completeContext = context;\n completeContext.state = 'complete';\n completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n completeContext.status = xhr.status;\n if (typeof xhr.response === 'string') {\n completeContext.responseBody = xhr.response;\n }\n observable.notify(shallowClone(completeContext));\n };\n const { stop: unsubscribeLoadEndListener } = addEventListener(configuration, xhr, 'loadend', onEnd);\n observable.notify(startContext);\n}\nfunction abortXhr({ target: xhr }) {\n const context = xhrContexts.get(xhr);\n if (context) {\n context.isAborted = true;\n }\n}\n//# sourceMappingURL=xhrObservable.js.map","import { concatBuffers } from './utils/byteUtils';\nimport { noop } from './utils/functionUtils';\n/**\n * Read bytes from a ReadableStream until the end of the stream.\n * Returns the bytes if collectStreamBody is true, otherwise returns undefined.\n */\nexport async function readBytesFromStream(stream, options) {\n const reader = stream.getReader();\n const chunks = [];\n while (true) {\n const result = await reader.read();\n if (result.done) {\n break;\n }\n if (options.collectStreamBody) {\n chunks.push(result.value);\n }\n }\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 return options.collectStreamBody ? concatBuffers(chunks) : undefined;\n}\n//# sourceMappingURL=readBytesFromStream.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { monitorError } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { clocksNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { globalObject } from '../tools/globalObject';\nimport { readBytesFromStream } from '../tools/readBytesFromStream';\nimport { tryToClone } from '../tools/utils/responseUtils';\nlet fetchObservable;\nconst responseBodyActionGetters = [];\nexport function initFetchObservable({ responseBodyAction } = {}) {\n if (responseBodyAction) {\n responseBodyActionGetters.push(responseBodyAction);\n }\n if (!fetchObservable) {\n fetchObservable = createFetchObservable();\n }\n return fetchObservable;\n}\nexport function resetFetchObservable() {\n fetchObservable = undefined;\n responseBodyActionGetters.length = 0;\n}\nfunction createFetchObservable() {\n return new Observable((observable) => {\n if (!globalObject.fetch) {\n return;\n }\n const { stop } = instrumentMethod(globalObject, 'fetch', (call) => beforeSend(call, observable), {\n computeHandlingStack: true,\n });\n return stop;\n });\n}\nfunction beforeSend({ parameters, onPostCall, handlingStack }, observable) {\n const [input, init] = parameters;\n let methodFromParams = init && init.method;\n if (methodFromParams === undefined && input instanceof Request) {\n methodFromParams = input.method;\n }\n const method = methodFromParams !== undefined ? String(methodFromParams).toUpperCase() : 'GET';\n const url = input instanceof Request ? input.url : normalizeUrl(String(input));\n const startClocks = clocksNow();\n const context = {\n state: 'start',\n init,\n input,\n method,\n startClocks,\n url,\n handlingStack,\n };\n observable.notify(context);\n // Those properties can be changed by observable subscribers\n parameters[0] = context.input;\n parameters[1] = context.init;\n onPostCall((responsePromise) => {\n afterSend(observable, responsePromise, context).catch(monitorError);\n });\n}\nasync function afterSend(observable, responsePromise, startContext) {\n var _a, _b;\n const context = startContext;\n context.state = 'resolve';\n let response;\n try {\n response = await responsePromise;\n }\n catch (error) {\n context.status = 0;\n context.isAborted =\n ((_b = (_a = context.init) === null || _a === void 0 ? void 0 : _a.signal) === null || _b === void 0 ? void 0 : _b.aborted) || (error instanceof DOMException && error.code === DOMException.ABORT_ERR);\n context.error = error;\n observable.notify(context);\n return;\n }\n context.response = response;\n context.status = response.status;\n context.responseType = response.type;\n context.isAborted = false;\n const responseBodyCondition = responseBodyActionGetters.reduce((action, getter) => Math.max(action, getter(context)), 0 /* ResponseBodyAction.IGNORE */);\n if (responseBodyCondition !== 0 /* ResponseBodyAction.IGNORE */) {\n const clonedResponse = tryToClone(response);\n if (clonedResponse && clonedResponse.body) {\n try {\n const bytes = await readBytesFromStream(clonedResponse.body, {\n collectStreamBody: responseBodyCondition === 2 /* ResponseBodyAction.COLLECT */,\n });\n context.responseBody = bytes && new TextDecoder().decode(bytes);\n }\n catch (_c) {\n // Ignore errors when reading the response body (e.g., stream aborted, network errors)\n // This is not critical and should not be reported as an SDK error\n }\n }\n }\n observable.notify(context);\n}\n//# sourceMappingURL=fetchObservable.js.map","import { setTimeout, clearTimeout } from './timer';\nimport { monitor } from './monitor';\nimport { dateNow } from './utils/timeUtils';\n/**\n * 'requestIdleCallback' with a shim.\n */\nexport function requestIdleCallback(callback, opts) {\n // Note: check both 'requestIdleCallback' and 'cancelIdleCallback' existence because some polyfills only implement 'requestIdleCallback'.\n if (window.requestIdleCallback && window.cancelIdleCallback) {\n const id = window.requestIdleCallback(monitor(callback), opts);\n return () => window.cancelIdleCallback(id);\n }\n return requestIdleCallbackShim(callback);\n}\nexport const MAX_TASK_TIME = 50;\n/*\n * Shim from https://developer.chrome.com/blog/using-requestidlecallback#checking_for_requestidlecallback\n * Note: there is no simple way to support the \"timeout\" option, so we ignore it.\n */\nexport function requestIdleCallbackShim(callback) {\n const start = dateNow();\n const timeoutId = setTimeout(() => {\n callback({\n didTimeout: false,\n timeRemaining: () => Math.max(0, MAX_TASK_TIME - (dateNow() - start)),\n });\n }, 0);\n return () => clearTimeout(timeoutId);\n}\n//# sourceMappingURL=requestIdleCallback.js.map","import { ONE_SECOND } from './utils/timeUtils';\nimport { requestIdleCallback } from './requestIdleCallback';\n/**\n * Maximum delay before starting to execute tasks in the queue. We don't want to wait too long\n * before running tasks, as it might hurt reliability (ex: if the user navigates away, we might lose\n * the opportunity to send some data). We also don't want to run tasks too often, as it might hurt\n * performance.\n */\nconst IDLE_CALLBACK_TIMEOUT = ONE_SECOND;\n/**\n * Maximum amount of time allocated to running tasks when a timeout (`IDLE_CALLBACK_TIMEOUT`) is\n * reached. We should not run tasks for too long as it will hurt performance, but we should still\n * run some tasks to avoid postponing them forever.\n *\n * Rational: Running tasks for 30ms every second (IDLE_CALLBACK_TIMEOUT) should be acceptable.\n */\nexport const MAX_EXECUTION_TIME_ON_TIMEOUT = 30;\nexport function createTaskQueue() {\n const pendingTasks = [];\n function run(deadline) {\n let executionTimeRemaining;\n if (deadline.didTimeout) {\n const start = performance.now();\n executionTimeRemaining = () => MAX_EXECUTION_TIME_ON_TIMEOUT - (performance.now() - start);\n }\n else {\n executionTimeRemaining = deadline.timeRemaining.bind(deadline);\n }\n while (executionTimeRemaining() > 0 && pendingTasks.length) {\n pendingTasks.shift()();\n }\n if (pendingTasks.length) {\n scheduleNextRun();\n }\n }\n function scheduleNextRun() {\n requestIdleCallback(run, { timeout: IDLE_CALLBACK_TIMEOUT });\n }\n return {\n push(task) {\n if (pendingTasks.push(task) === 1) {\n scheduleNextRun();\n }\n },\n stop() {\n pendingTasks.length = 0;\n },\n };\n}\n//# sourceMappingURL=taskQueue.js.map","import { isError, computeRawError } from '../error/error';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { ConsoleApiName, globalConsole } from '../../tools/display';\nimport { callMonitored } from '../../tools/monitor';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { ErrorSource } from '../error/error.types';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { createHandlingStack, formatErrorMessage } from '../../tools/stackTrace/handlingStack';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nlet consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n const consoleObservables = apis.map((api) => {\n if (!consoleObservablesByApi[api]) {\n consoleObservablesByApi[api] = createConsoleObservable(api); // we are sure that the observable created for this api will yield the expected ConsoleLog type\n }\n return consoleObservablesByApi[api];\n });\n return mergeObservables(...consoleObservables);\n}\nexport function resetConsoleObservable() {\n consoleObservablesByApi = {};\n}\nfunction createConsoleObservable(api) {\n return new Observable((observable) => {\n const originalConsoleApi = globalConsole[api];\n globalConsole[api] = (...params) => {\n originalConsoleApi.apply(console, params);\n const handlingStack = createHandlingStack('console error');\n callMonitored(() => {\n observable.notify(buildConsoleLog(params, api, handlingStack));\n });\n };\n return () => {\n globalConsole[api] = originalConsoleApi;\n };\n });\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n const message = params.map((param) => formatConsoleParameters(param)).join(' ');\n if (api === ConsoleApiName.error) {\n const firstErrorParam = params.find(isError);\n const rawError = computeRawError({\n originalError: firstErrorParam,\n handlingStack,\n startClocks: clocksNow(),\n source: ErrorSource.CONSOLE,\n handling: \"handled\" /* ErrorHandling.HANDLED */,\n nonErrorPrefix: \"Provided\" /* NonErrorPrefix.PROVIDED */,\n // if no good stack is computed from the error, let's not use the fallback stack message\n // advising the user to use an instance of Error, as console.error is commonly used without an\n // Error instance.\n useFallbackStack: false,\n });\n // Use the full log message as the error message instead of just the error instance message.\n rawError.message = message;\n return {\n api,\n message,\n handlingStack,\n error: rawError,\n };\n }\n return {\n api,\n message,\n error: undefined,\n handlingStack,\n };\n}\nfunction formatConsoleParameters(param) {\n if (typeof param === 'string') {\n return sanitize(param);\n }\n if (isError(param)) {\n return formatErrorMessage(computeStackTrace(param));\n }\n return jsonStringify(sanitize(param), undefined, 2);\n}\n//# sourceMappingURL=consoleObservable.js.map","import { removeItem } from './utils/arrayUtils';\nconst BUFFER_LIMIT = 500;\n/**\n * createBoundedBuffer creates a BoundedBuffer.\n *\n * @deprecated Use `BufferedObservable` instead.\n */\nexport function createBoundedBuffer() {\n const buffer = [];\n const add = (callback) => {\n const length = buffer.push(callback);\n if (length > BUFFER_LIMIT) {\n buffer.splice(0, 1);\n }\n };\n const remove = (callback) => {\n removeItem(buffer, callback);\n };\n const drain = (arg) => {\n buffer.forEach((callback) => callback(arg));\n buffer.length = 0;\n };\n return {\n add,\n remove,\n drain,\n };\n}\n//# sourceMappingURL=boundedBuffer.js.map","import { display } from '../../tools/display';\nimport { getType } from '../../tools/utils/typeUtils';\n/**\n * Simple check to ensure an object is a valid context\n */\nexport function checkContext(maybeContext) {\n const isValid = getType(maybeContext) === 'object';\n if (!isValid) {\n display.error('Unsupported context:', maybeContext);\n }\n return isValid;\n}\n//# sourceMappingURL=contextUtils.js.map","import { deepClone } from '../../tools/mergeInto';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { Observable } from '../../tools/observable';\nimport { display } from '../../tools/display';\nimport { checkContext } from './contextUtils';\nfunction ensureProperties(context, propertiesConfig, name) {\n const newContext = { ...context };\n for (const [key, { required, type }] of Object.entries(propertiesConfig)) {\n /**\n * Ensure specified properties are strings as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\n if (type === 'string' && !isDefined(newContext[key])) {\n /* eslint-disable @typescript-eslint/no-base-to-string */\n newContext[key] = String(newContext[key]);\n }\n if (required && isDefined(newContext[key])) {\n display.warn(`The property ${key} of ${name} is required; context will not be sent to the intake.`);\n }\n }\n return newContext;\n}\nfunction isDefined(value) {\n return value === undefined || value === null || value === '';\n}\nexport function createContextManager(name = '', { propertiesConfig = {}, } = {}) {\n let context = {};\n const changeObservable = new Observable();\n const contextManager = {\n getContext: () => deepClone(context),\n setContext: (newContext) => {\n if (checkContext(newContext)) {\n context = sanitize(ensureProperties(newContext, propertiesConfig, name));\n }\n else {\n contextManager.clearContext();\n }\n changeObservable.notify();\n },\n setContextProperty: (key, property) => {\n context = sanitize(ensureProperties({ ...context, [key]: property }, propertiesConfig, name));\n changeObservable.notify();\n },\n removeContextProperty: (key) => {\n delete context[key];\n ensureProperties(context, propertiesConfig, name);\n changeObservable.notify();\n },\n clearContext: () => {\n context = {};\n changeObservable.notify();\n },\n changeObservable,\n };\n return contextManager;\n}\n//# sourceMappingURL=contextManager.js.map","import { addTelemetryUsage } from '../telemetry';\nimport { monitor } from '../../tools/monitor';\nexport function defineContextMethod(getStrategy, contextName, methodName, usage) {\n return monitor((...args) => {\n if (usage) {\n addTelemetryUsage({ feature: usage });\n }\n return getStrategy()[contextName][methodName](...args);\n });\n}\nexport function bufferContextCalls(preStartContextManager, name, bufferApiCalls) {\n preStartContextManager.changeObservable.subscribe(() => {\n const context = preStartContextManager.getContext();\n bufferApiCalls.add((startResult) => startResult[name].setContext(context));\n });\n}\n//# sourceMappingURL=defineContextMethod.js.map","import { addEventListener } from '../../browser/addEventListener';\nimport { combine } from '../../tools/mergeInto';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\nconst CONTEXT_STORE_KEY_PREFIX = '_dd_c';\nconst storageListeners = [];\nexport function storeContextManager(configuration, contextManager, productKey, customerDataType) {\n const storageKey = buildStorageKey(productKey, customerDataType);\n storageListeners.push(addEventListener(configuration, window, \"storage\" /* DOM_EVENT.STORAGE */, ({ key }) => {\n if (storageKey === key) {\n synchronizeWithStorage();\n }\n }));\n contextManager.changeObservable.subscribe(dumpToStorage);\n const contextFromStorage = combine(getFromStorage(), contextManager.getContext());\n if (!isEmptyObject(contextFromStorage)) {\n contextManager.setContext(contextFromStorage);\n }\n function synchronizeWithStorage() {\n contextManager.setContext(getFromStorage());\n }\n function dumpToStorage() {\n localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()));\n }\n function getFromStorage() {\n const rawContext = localStorage.getItem(storageKey);\n return rawContext ? JSON.parse(rawContext) : {};\n }\n}\nexport function buildStorageKey(productKey, customerDataType) {\n return `${CONTEXT_STORE_KEY_PREFIX}_${productKey}_${customerDataType}`;\n}\nexport function removeStorageListeners() {\n storageListeners.map((listener) => listener.stop());\n}\n//# sourceMappingURL=storeContextManager.js.map","import { storeContextManager } from '../context/storeContextManager';\nimport { SKIPPED } from '../../tools/abstractHooks';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { createContextManager } from '../context/contextManager';\nexport function startAccountContext(hooks, configuration, productKey) {\n const accountContextManager = buildAccountContextManager();\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(configuration, accountContextManager, productKey, 4 /* CustomerDataType.Account */);\n }\n hooks.register(0 /* HookNames.Assemble */, () => {\n const account = accountContextManager.getContext();\n if (isEmptyObject(account) || !account.id) {\n return SKIPPED;\n }\n return {\n account,\n };\n });\n return accountContextManager;\n}\nexport function buildAccountContextManager() {\n return createContextManager('account', {\n propertiesConfig: {\n id: { type: 'string', required: true },\n name: { type: 'string' },\n },\n });\n}\n//# sourceMappingURL=accountContext.js.map","import { storeContextManager } from '../context/storeContextManager';\nimport { createContextManager } from '../context/contextManager';\nexport function startGlobalContext(hooks, configuration, productKey, useContextNamespace) {\n const globalContextManager = buildGlobalContextManager();\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(configuration, globalContextManager, productKey, 2 /* CustomerDataType.GlobalContext */);\n }\n hooks.register(0 /* HookNames.Assemble */, () => {\n const context = globalContextManager.getContext();\n return useContextNamespace ? { context } : context;\n });\n return globalContextManager;\n}\nexport function buildGlobalContextManager() {\n return createContextManager('global context');\n}\n//# sourceMappingURL=globalContext.js.map","import { storeContextManager } from '../context/storeContextManager';\nimport { SKIPPED } from '../../tools/abstractHooks';\nimport { createContextManager } from '../context/contextManager';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\nexport function startUserContext(hooks, configuration, sessionManager, productKey) {\n const userContextManager = buildUserContextManager();\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(configuration, userContextManager, productKey, 1 /* CustomerDataType.User */);\n }\n hooks.register(0 /* HookNames.Assemble */, ({ eventType, startTime }) => {\n const user = userContextManager.getContext();\n const session = sessionManager.findTrackedSession(startTime);\n if (session && session.anonymousId && !user.anonymous_id && !!configuration.trackAnonymousUser) {\n user.anonymous_id = session.anonymousId;\n }\n if (isEmptyObject(user)) {\n return SKIPPED;\n }\n return {\n type: eventType,\n usr: user,\n };\n });\n hooks.register(1 /* HookNames.AssembleTelemetry */, ({ startTime }) => {\n var _a;\n return ({\n anonymous_id: (_a = sessionManager.findTrackedSession(startTime)) === null || _a === void 0 ? void 0 : _a.anonymousId,\n });\n });\n return userContextManager;\n}\nexport function buildUserContextManager() {\n return createContextManager('user', {\n propertiesConfig: {\n id: { type: 'string' },\n name: { type: 'string' },\n email: { type: 'string' },\n },\n });\n}\n//# sourceMappingURL=userContext.js.map","// Use a const instead of const enum to avoid inlining the enum values in the bundle and save bytes\nexport const CustomerContextKey = {\n userContext: 'userContext',\n globalContext: 'globalContext',\n accountContext: 'accountContext',\n};\n// Use a const instead of const enum to avoid inlining the enum values in the bundle and save bytes\nexport const ContextManagerMethod = {\n getContext: 'getContext',\n setContext: 'setContext',\n setContextProperty: 'setContextProperty',\n removeContextProperty: 'removeContextProperty',\n clearContext: 'clearContext',\n};\n//# sourceMappingURL=contextConstants.js.map","export const ResourceType = {\n DOCUMENT: 'document',\n XHR: 'xhr',\n BEACON: 'beacon',\n FETCH: 'fetch',\n CSS: 'css',\n JS: 'js',\n IMAGE: 'image',\n FONT: 'font',\n MEDIA: 'media',\n OTHER: 'other',\n};\nexport const RequestType = {\n FETCH: ResourceType.FETCH,\n XHR: ResourceType.XHR,\n};\n//# sourceMappingURL=resourceUtils.js.map","import { BufferedObservable } from '../tools/observable';\nimport { trackRuntimeError } from './error/trackRuntimeError';\nconst BUFFER_LIMIT = 500;\nexport function startBufferingData(trackRuntimeErrorImpl = trackRuntimeError) {\n const observable = new BufferedObservable(BUFFER_LIMIT);\n const runtimeErrorSubscription = trackRuntimeErrorImpl().subscribe((error) => {\n observable.notify({\n type: 0 /* BufferedDataType.RUNTIME_ERROR */,\n error,\n });\n });\n return {\n observable,\n stop: () => {\n runtimeErrorSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=bufferedData.js.map","export function getTimeZone() {\n try {\n const intl = new Intl.DateTimeFormat();\n return intl.resolvedOptions().timeZone;\n }\n catch (_a) {\n return undefined;\n }\n}\n//# sourceMappingURL=timezone.js.map","export const RumEventType = {\n ACTION: 'action',\n ERROR: 'error',\n LONG_TASK: 'long_task',\n VIEW: 'view',\n RESOURCE: 'resource',\n VITAL: 'vital',\n};\nexport const RumLongTaskEntryType = {\n LONG_TASK: 'long-task',\n LONG_ANIMATION_FRAME: 'long-animation-frame',\n};\nexport const ViewLoadingType = {\n INITIAL_LOAD: 'initial_load',\n ROUTE_CHANGE: 'route_change',\n BF_CACHE: 'bf_cache',\n};\nexport const ActionType = {\n CLICK: 'click',\n CUSTOM: 'custom',\n};\nexport const FrustrationType = {\n RAGE_CLICK: 'rage_click',\n ERROR_CLICK: 'error_click',\n DEAD_CLICK: 'dead_click',\n};\nexport const VitalType = {\n DURATION: 'duration',\n OPERATION_STEP: 'operation_step',\n};\n//# sourceMappingURL=rawRumEvent.types.js.map","import { clocksNow, combine, elapsed, ExperimentalFeature, generateUUID, isExperimentalFeatureEnabled, sanitize, toServerDuration, } from '@datadog/browser-core';\nimport { RumEventType, VitalType } from '../../rawRumEvent.types';\nexport function createCustomVitalsState() {\n const vitalsByName = new Map();\n const vitalsByReference = new WeakMap();\n return { vitalsByName, vitalsByReference };\n}\nexport function startVitalCollection(lifeCycle, pageStateHistory, customVitalsState) {\n function isValid(vital) {\n return !pageStateHistory.wasInPageStateDuringPeriod(\"frozen\" /* PageState.FROZEN */, vital.startClocks.relative, vital.duration);\n }\n function addDurationVital(vital) {\n if (isValid(vital)) {\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processVital(vital));\n }\n }\n function addOperationStepVital(name, stepType, options, failureReason) {\n if (!isExperimentalFeatureEnabled(ExperimentalFeature.FEATURE_OPERATION_VITAL)) {\n return;\n }\n const { operationKey, context, description } = options || {};\n const vital = {\n name,\n type: VitalType.OPERATION_STEP,\n operationKey,\n failureReason,\n stepType,\n startClocks: clocksNow(),\n context: sanitize(context),\n description,\n };\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processVital(vital));\n }\n return {\n addOperationStepVital,\n addDurationVital,\n startDurationVital: (name, options = {}) => startDurationVital(customVitalsState, name, options),\n stopDurationVital: (nameOrRef, options = {}) => {\n stopDurationVital(addDurationVital, customVitalsState, nameOrRef, options);\n },\n };\n}\nexport function startDurationVital({ vitalsByName, vitalsByReference }, name, options = {}) {\n const vital = {\n name,\n startClocks: clocksNow(),\n ...options,\n };\n // To avoid leaking implementation details of the vital, we return a reference to it.\n const reference = { __dd_vital_reference: true };\n vitalsByName.set(name, vital);\n // To avoid memory leaks caused by the creation of numerous references (e.g., from improper useEffect implementations), we use a WeakMap.\n vitalsByReference.set(reference, vital);\n return reference;\n}\nexport function stopDurationVital(stopCallback, { vitalsByName, vitalsByReference }, nameOrRef, options = {}) {\n const vitalStart = typeof nameOrRef === 'string' ? vitalsByName.get(nameOrRef) : vitalsByReference.get(nameOrRef);\n if (!vitalStart) {\n return;\n }\n stopCallback(buildDurationVital(vitalStart, vitalStart.startClocks, options, clocksNow()));\n if (typeof nameOrRef === 'string') {\n vitalsByName.delete(nameOrRef);\n }\n else {\n vitalsByReference.delete(nameOrRef);\n }\n}\nfunction buildDurationVital(vitalStart, startClocks, stopOptions, stopClocks) {\n var _a;\n return {\n name: vitalStart.name,\n type: VitalType.DURATION,\n startClocks,\n duration: elapsed(startClocks.timeStamp, stopClocks.timeStamp),\n context: combine(vitalStart.context, stopOptions.context),\n description: (_a = stopOptions.description) !== null && _a !== void 0 ? _a : vitalStart.description,\n };\n}\nfunction processVital(vital) {\n const { startClocks, type, name, description, context } = vital;\n const vitalData = {\n id: generateUUID(),\n type,\n name,\n description,\n ...(type === VitalType.DURATION\n ? { duration: toServerDuration(vital.duration) }\n : {\n step_type: vital.stepType,\n operation_key: vital.operationKey,\n failure_reason: vital.failureReason,\n }),\n };\n return {\n rawRumEvent: {\n date: startClocks.timeStamp,\n vital: vitalData,\n type: RumEventType.VITAL,\n context,\n },\n startTime: startClocks.relative,\n duration: type === VitalType.DURATION ? vital.duration : undefined,\n domainContext: {},\n };\n}\n//# sourceMappingURL=vitalCollection.js.map","export function callPluginsMethod(plugins, methodName, parameter) {\n if (!plugins) {\n return;\n }\n for (const plugin of plugins) {\n const method = plugin[methodName];\n if (method) {\n method(parameter);\n }\n }\n}\n//# sourceMappingURL=plugins.js.map","import { performDraw } from '@datadog/browser-core';\nconst sampleDecisionCache = new Map();\nexport function isSampled(sessionId, sampleRate) {\n // Shortcuts for common cases. This is not strictly necessary, but it makes the code faster for\n // customers willing to ingest all traces.\n if (sampleRate === 100) {\n return true;\n }\n if (sampleRate === 0) {\n return false;\n }\n const cachedDecision = sampleDecisionCache.get(sampleRate);\n if (cachedDecision && sessionId === cachedDecision.sessionId) {\n return cachedDecision.decision;\n }\n let decision;\n // @ts-expect-error BigInt might not be defined in every browser we support\n if (window.BigInt) {\n decision = sampleUsingKnuthFactor(BigInt(`0x${sessionId.split('-')[4]}`), sampleRate);\n }\n else {\n // For simplicity, we don't use consistent sampling for browser without BigInt support\n // TODO: remove this when all browser we support have BigInt support\n decision = performDraw(sampleRate);\n }\n sampleDecisionCache.set(sampleRate, { sessionId, decision });\n return decision;\n}\n// Exported for tests\nexport function resetSampleDecisionCache() {\n sampleDecisionCache.clear();\n}\n/**\n * Perform sampling using the Knuth factor method. This method offer consistent sampling result\n * based on the provided identifier.\n *\n * @param identifier - The identifier to use for sampling.\n * @param sampleRate - The sample rate in percentage between 0 and 100.\n */\nexport function sampleUsingKnuthFactor(identifier, sampleRate) {\n // The formula is:\n //\n // (identifier * knuthFactor) % 2^64 < sampleRate * 2^64\n //\n // Because JavaScript numbers are 64-bit floats, we can't represent 64-bit integers, and the\n // modulo would be incorrect. Thus, we are using BigInts here.\n //\n // Implementation in other languages:\n // * Go https://github.com/DataDog/dd-trace-go/blob/ec6fbb1f2d517b7b8e69961052adf7136f3af773/ddtrace/tracer/sampler.go#L86-L91\n // * Python https://github.com/DataDog/dd-trace-py/blob/0cee2f066fb6e79aa15947c1514c0f406dea47c5/ddtrace/sampling_rule.py#L197\n // * Ruby https://github.com/DataDog/dd-trace-rb/blob/1a6e255cdcb7e7e22235ea5955f90f6dfa91045d/lib/datadog/tracing/sampling/rate_sampler.rb#L42\n // * C++ https://github.com/DataDog/dd-trace-cpp/blob/159629edc438ae45f2bb318eb7bd51abd05e94b5/src/datadog/trace_sampler.cpp#L58\n // * Java https://github.com/DataDog/dd-trace-java/blob/896dd6b380533216e0bdee59614606c8272d313e/dd-trace-core/src/main/java/datadog/trace/common/sampling/DeterministicSampler.java#L48\n //\n // Note: All implementations have slight variations. Some of them use '<=' instead of '<', and\n // use `sampleRate * 2^64 - 1` instead of `sampleRate * 2^64`. The following implementation\n // should adhere to the spec and is a bit simpler than using a 2^64-1 limit as there are less\n // BigInt arithmetic to write. In practice this does not matter, as we are using floating point\n // numbers in the end, and Number(2n**64n-1n) === Number(2n**64n).\n const knuthFactor = BigInt('1111111111111111111');\n const twoPow64 = BigInt('0x10000000000000000'); // 2n ** 64n\n const hash = (identifier * knuthFactor) % twoPow64;\n return Number(hash) <= (sampleRate / 100) * Number(twoPow64);\n}\n//# sourceMappingURL=sampler.js.map","export function createTraceIdentifier() {\n return createIdentifier(64);\n}\nexport function createSpanIdentifier() {\n return createIdentifier(63);\n}\nfunction createIdentifier(bits) {\n const buffer = crypto.getRandomValues(new Uint32Array(2));\n if (bits === 63) {\n // eslint-disable-next-line no-bitwise\n buffer[buffer.length - 1] >>>= 1; // force 63-bit\n }\n // The `.toString` function is intentionally similar to Number and BigInt `.toString` method.\n //\n // JavaScript numbers can represent integers up to 48 bits, this is why we need two of them to\n // represent a 64 bits identifier. But BigInts don't have this limitation and can represent larger\n // integer values.\n //\n // In the future, when we drop browsers without BigInts support, we could use BigInts directly\n // represent identifiers by simply returning a BigInt from this function (as all we need is a\n // value with a `.toString` method).\n //\n // Examples:\n // const buffer = getCrypto().getRandomValues(new Uint32Array(2))\n // return BigInt(buffer[0]) + BigInt(buffer[1]) << 32n\n //\n // // Alternative with BigUint64Array (different Browser support than plain bigints!):\n // return crypto.getRandomValues(new BigUint64Array(1))[0]\n //\n // For now, let's keep using two plain numbers as having two different implementations (one for\n // browsers with BigInt support and one for older browsers) don't bring much value.\n return {\n toString(radix = 10) {\n let high = buffer[1];\n let low = buffer[0];\n let str = '';\n do {\n const mod = (high % radix) * 4294967296 + low;\n high = Math.floor(high / radix);\n low = Math.floor(mod / radix);\n str = (mod % radix).toString(radix) + str;\n } while (high || low);\n return str;\n },\n };\n}\nexport function toPaddedHexadecimalString(id) {\n return id.toString(16).padStart(16, '0');\n}\n//# sourceMappingURL=identifier.js.map","import { objectEntries, shallowClone, getType, isMatchOption, matchList, TraceContextInjection, } from '@datadog/browser-core';\nimport { isSampled } from '../sampler/sampler';\nimport { createSpanIdentifier, createTraceIdentifier, toPaddedHexadecimalString } from './identifier';\nexport function isTracingOption(item) {\n const expectedItem = item;\n return (getType(expectedItem) === 'object' &&\n isMatchOption(expectedItem.match) &&\n 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, userContext, accountContext) {\n return {\n clearTracingIfNeeded,\n traceFetch: (context) => injectHeadersIfTracingAllowed(configuration, context, sessionManager, userContext, accountContext, (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((key) => {\n ;\n context.input.headers.append(key, tracingHeaders[key]);\n });\n }\n else {\n context.init = shallowClone(context.init);\n const headers = [];\n if (context.init.headers instanceof Headers) {\n context.init.headers.forEach((value, key) => {\n headers.push([key, value]);\n });\n }\n else if (Array.isArray(context.init.headers)) {\n context.init.headers.forEach((header) => {\n headers.push(header);\n });\n }\n else if (context.init.headers) {\n Object.keys(context.init.headers).forEach((key) => {\n headers.push([key, context.init.headers[key]]);\n });\n }\n context.init.headers = headers.concat(objectEntries(tracingHeaders));\n }\n }),\n traceXhr: (context, xhr) => injectHeadersIfTracingAllowed(configuration, context, sessionManager, userContext, accountContext, (tracingHeaders) => {\n Object.keys(tracingHeaders).forEach((name) => {\n xhr.setRequestHeader(name, tracingHeaders[name]);\n });\n }),\n };\n}\nfunction injectHeadersIfTracingAllowed(configuration, context, sessionManager, userContext, accountContext, inject) {\n const session = sessionManager.findTrackedSession();\n if (!session) {\n return;\n }\n const tracingOption = configuration.allowedTracingUrls.find((tracingOption) => matchList([tracingOption.match], context.url, true));\n if (!tracingOption) {\n return;\n }\n const traceSampled = isSampled(session.id, configuration.traceSampleRate);\n const shouldInjectHeaders = traceSampled || configuration.traceContextInjection === TraceContextInjection.ALL;\n if (!shouldInjectHeaders) {\n return;\n }\n context.traceSampled = traceSampled;\n context.traceId = createTraceIdentifier();\n context.spanId = createSpanIdentifier();\n inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled, session.id, tracingOption.propagatorTypes, userContext, accountContext, configuration));\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, sessionId, propagatorTypes, userContext, accountContext, configuration) {\n const tracingHeaders = {};\n propagatorTypes.forEach((propagatorType) => {\n switch (propagatorType) {\n case 'datadog': {\n Object.assign(tracingHeaders, {\n 'x-datadog-origin': 'rum',\n 'x-datadog-parent-id': spanId.toString(),\n 'x-datadog-sampling-priority': traceSampled ? '1' : '0',\n 'x-datadog-trace-id': traceId.toString(),\n });\n break;\n }\n // https://www.w3.org/TR/trace-context/\n case 'tracecontext': {\n Object.assign(tracingHeaders, {\n traceparent: `00-0000000000000000${toPaddedHexadecimalString(traceId)}-${toPaddedHexadecimalString(spanId)}-0${traceSampled ? '1' : '0'}`,\n tracestate: `dd=s:${traceSampled ? '1' : '0'};o:rum`,\n });\n break;\n }\n // https://github.com/openzipkin/b3-propagation\n case 'b3': {\n Object.assign(tracingHeaders, {\n b3: `${toPaddedHexadecimalString(traceId)}-${toPaddedHexadecimalString(spanId)}-${traceSampled ? '1' : '0'}`,\n });\n break;\n }\n case 'b3multi': {\n Object.assign(tracingHeaders, {\n 'X-B3-TraceId': toPaddedHexadecimalString(traceId),\n 'X-B3-SpanId': toPaddedHexadecimalString(spanId),\n 'X-B3-Sampled': traceSampled ? '1' : '0',\n });\n break;\n }\n }\n });\n if (configuration.propagateTraceBaggage) {\n const baggageItems = {\n 'session.id': sessionId,\n };\n const userId = userContext.getContext().id;\n if (typeof userId === 'string') {\n baggageItems['user.id'] = userId;\n }\n const accountId = accountContext.getContext().id;\n if (typeof accountId === 'string') {\n baggageItems['account.id'] = accountId;\n }\n const baggageHeader = Object.entries(baggageItems)\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join(',');\n if (baggageHeader) {\n tracingHeaders['baggage'] = baggageHeader;\n }\n }\n return tracingHeaders;\n}\n//# sourceMappingURL=tracer.js.map","import { getType, isMatchOption, serializeConfiguration, DefaultPrivacyLevel, TraceContextInjection, display, objectHasValue, validateAndBuildConfiguration, isSampleRate, isNumber, isNonEmptyArray, } from '@datadog/browser-core';\nimport { isTracingOption } from '../tracing/tracer';\nexport const DEFAULT_PROPAGATOR_TYPES = ['tracecontext', 'datadog'];\nexport function validateAndBuildRumConfiguration(initConfiguration, errorStack) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (initConfiguration.trackFeatureFlagsForEvents !== undefined &&\n !Array.isArray(initConfiguration.trackFeatureFlagsForEvents)) {\n display.warn('trackFeatureFlagsForEvents should be an array');\n }\n if (!initConfiguration.applicationId) {\n display.error('Application ID is not configured, no RUM data will be collected.');\n return;\n }\n if (!isSampleRate(initConfiguration.sessionReplaySampleRate, 'Session Replay') ||\n !isSampleRate(initConfiguration.traceSampleRate, 'Trace')) {\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 const allowedTracingUrls = validateAndBuildTracingOptions(initConfiguration);\n if (!allowedTracingUrls) {\n return;\n }\n const baseConfiguration = validateAndBuildConfiguration(initConfiguration, errorStack);\n const allowedGraphQlUrls = validateAndBuildGraphQlOptions(initConfiguration);\n if (!baseConfiguration) {\n return;\n }\n const sessionReplaySampleRate = (_a = initConfiguration.sessionReplaySampleRate) !== null && _a !== void 0 ? _a : 0;\n return {\n applicationId: initConfiguration.applicationId,\n actionNameAttribute: initConfiguration.actionNameAttribute,\n sessionReplaySampleRate,\n startSessionReplayRecordingManually: initConfiguration.startSessionReplayRecordingManually !== undefined\n ? !!initConfiguration.startSessionReplayRecordingManually\n : sessionReplaySampleRate === 0,\n traceSampleRate: (_b = initConfiguration.traceSampleRate) !== null && _b !== void 0 ? _b : 100,\n rulePsr: isNumber(initConfiguration.traceSampleRate) ? initConfiguration.traceSampleRate / 100 : undefined,\n allowedTracingUrls,\n excludedActivityUrls: (_c = initConfiguration.excludedActivityUrls) !== null && _c !== void 0 ? _c : [],\n workerUrl: initConfiguration.workerUrl,\n compressIntakeRequests: !!initConfiguration.compressIntakeRequests,\n trackUserInteractions: !!((_d = initConfiguration.trackUserInteractions) !== null && _d !== void 0 ? _d : true),\n trackViewsManually: !!initConfiguration.trackViewsManually,\n trackResources: !!((_e = initConfiguration.trackResources) !== null && _e !== void 0 ? _e : true),\n trackLongTasks: !!((_f = initConfiguration.trackLongTasks) !== null && _f !== void 0 ? _f : true),\n trackBfcacheViews: !!initConfiguration.trackBfcacheViews,\n trackEarlyRequests: !!initConfiguration.trackEarlyRequests,\n subdomain: initConfiguration.subdomain,\n defaultPrivacyLevel: objectHasValue(DefaultPrivacyLevel, initConfiguration.defaultPrivacyLevel)\n ? initConfiguration.defaultPrivacyLevel\n : DefaultPrivacyLevel.MASK,\n enablePrivacyForActionName: !!initConfiguration.enablePrivacyForActionName,\n traceContextInjection: objectHasValue(TraceContextInjection, initConfiguration.traceContextInjection)\n ? initConfiguration.traceContextInjection\n : TraceContextInjection.SAMPLED,\n plugins: initConfiguration.plugins || [],\n trackFeatureFlagsForEvents: initConfiguration.trackFeatureFlagsForEvents || [],\n profilingSampleRate: (_g = initConfiguration.profilingSampleRate) !== null && _g !== void 0 ? _g : 0,\n propagateTraceBaggage: !!initConfiguration.propagateTraceBaggage,\n allowedGraphQlUrls,\n ...baseConfiguration,\n };\n}\n/**\n * Validates allowedTracingUrls and converts match options to tracing options\n */\nfunction validateAndBuildTracingOptions(initConfiguration) {\n if (initConfiguration.allowedTracingUrls === undefined) {\n return [];\n }\n if (!Array.isArray(initConfiguration.allowedTracingUrls)) {\n display.error('Allowed Tracing URLs should be an array');\n return;\n }\n if (initConfiguration.allowedTracingUrls.length !== 0 && initConfiguration.service === undefined) {\n display.error('Service needs to be configured when tracing is enabled');\n return;\n }\n // Convert from (MatchOption | TracingOption) to TracingOption, remove unknown properties\n const tracingOptions = [];\n initConfiguration.allowedTracingUrls.forEach((option) => {\n if (isMatchOption(option)) {\n tracingOptions.push({ match: option, propagatorTypes: DEFAULT_PROPAGATOR_TYPES });\n }\n else if (isTracingOption(option)) {\n tracingOptions.push(option);\n }\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;\n}\n/**\n * Combines the selected tracing propagators from the different options in allowedTracingUrls\n */\nfunction getSelectedTracingPropagators(configuration) {\n const usedTracingPropagators = new Set();\n if (isNonEmptyArray(configuration.allowedTracingUrls)) {\n configuration.allowedTracingUrls.forEach((option) => {\n if (isMatchOption(option)) {\n DEFAULT_PROPAGATOR_TYPES.forEach((propagatorType) => usedTracingPropagators.add(propagatorType));\n }\n else if (getType(option) === 'object' && Array.isArray(option.propagatorTypes)) {\n // Ensure we have an array, as we cannot rely on types yet (configuration is provided by users)\n option.propagatorTypes.forEach((propagatorType) => usedTracingPropagators.add(propagatorType));\n }\n });\n }\n return Array.from(usedTracingPropagators);\n}\n/**\n * Build GraphQL options from configuration\n */\nfunction validateAndBuildGraphQlOptions(initConfiguration) {\n if (!initConfiguration.allowedGraphQlUrls) {\n return [];\n }\n if (!Array.isArray(initConfiguration.allowedGraphQlUrls)) {\n display.warn('allowedGraphQlUrls should be an array');\n return [];\n }\n const graphQlOptions = [];\n initConfiguration.allowedGraphQlUrls.forEach((option) => {\n if (isMatchOption(option)) {\n graphQlOptions.push({ match: option, trackPayload: false, trackResponseErrors: false });\n }\n else if (option && typeof option === 'object' && 'match' in option && isMatchOption(option.match)) {\n graphQlOptions.push({\n match: option.match,\n trackPayload: !!option.trackPayload,\n trackResponseErrors: !!option.trackResponseErrors,\n });\n }\n });\n return graphQlOptions;\n}\nfunction hasGraphQlPayloadTracking(allowedGraphQlUrls) {\n return (isNonEmptyArray(allowedGraphQlUrls) &&\n allowedGraphQlUrls.some((option) => {\n if (typeof option === 'object' && 'trackPayload' in option) {\n return !!option.trackPayload;\n }\n return false;\n }));\n}\nfunction hasGraphQlResponseErrorsTracking(allowedGraphQlUrls) {\n return (isNonEmptyArray(allowedGraphQlUrls) &&\n allowedGraphQlUrls.some((option) => {\n if (typeof option === 'object' && 'trackResponseErrors' in option) {\n return !!option.trackResponseErrors;\n }\n return false;\n }));\n}\nexport function serializeRumConfiguration(configuration) {\n var _a;\n const baseSerializedConfiguration = serializeConfiguration(configuration);\n return {\n session_replay_sample_rate: configuration.sessionReplaySampleRate,\n start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n trace_sample_rate: configuration.traceSampleRate,\n trace_context_injection: configuration.traceContextInjection,\n propagate_trace_baggage: configuration.propagateTraceBaggage,\n action_name_attribute: configuration.actionNameAttribute,\n use_allowed_tracing_urls: isNonEmptyArray(configuration.allowedTracingUrls),\n use_allowed_graph_ql_urls: isNonEmptyArray(configuration.allowedGraphQlUrls),\n use_track_graph_ql_payload: hasGraphQlPayloadTracking(configuration.allowedGraphQlUrls),\n use_track_graph_ql_response_errors: hasGraphQlResponseErrorsTracking(configuration.allowedGraphQlUrls),\n selected_tracing_propagators: getSelectedTracingPropagators(configuration),\n default_privacy_level: configuration.defaultPrivacyLevel,\n enable_privacy_for_action_name: configuration.enablePrivacyForActionName,\n use_excluded_activity_urls: isNonEmptyArray(configuration.excludedActivityUrls),\n use_worker_url: !!configuration.workerUrl,\n compress_intake_requests: configuration.compressIntakeRequests,\n track_views_manually: configuration.trackViewsManually,\n track_user_interactions: configuration.trackUserInteractions,\n track_resources: configuration.trackResources,\n track_long_task: configuration.trackLongTasks,\n track_bfcache_views: configuration.trackBfcacheViews,\n track_early_requests: configuration.trackEarlyRequests,\n plugins: (_a = configuration.plugins) === null || _a === void 0 ? void 0 : _a.map((plugin) => {\n var _a;\n return ({\n name: plugin.name,\n ...(_a = plugin.getConfigurationTelemetry) === null || _a === void 0 ? void 0 : _a.call(plugin),\n });\n }),\n track_feature_flags_for_events: configuration.trackFeatureFlagsForEvents,\n remote_configuration_id: configuration.remoteConfigurationId,\n profiling_sample_rate: configuration.profilingSampleRate,\n use_remote_configuration_proxy: !!configuration.remoteConfigurationProxy,\n ...baseSerializedConfiguration,\n };\n}\n//# sourceMappingURL=configuration.js.map","/**\n * Terminology inspired from https://www.rfc-editor.org/rfc/rfc9535.html\n *\n * jsonpath-query = segment*\n * segment = .name-shorthand / bracketed-selection\n * bracketed-selection = ['name-selector'] / [\"name-selector\"] / [index-selector]\n *\n * Useful references:\n * - https://goessner.net/articles/JsonPath/\n * - https://jsonpath.com/\n * - https://github.com/jsonpath-standard\n */\n/**\n * Extract selectors from a simple JSON path expression, return [] for an invalid path\n *\n * Supports:\n * - Dot notation: `foo.bar.baz`\n * - Bracket notation: `['foo'][\"bar\"]`\n * - Array indices: `items[0]`, `data['users'][1]`\n *\n * Examples:\n * parseJsonPath(\"['foo'].bar[12]\")\n * => ['foo', 'bar', '12']\n *\n * parseJsonPath(\"['foo\")\n * => []\n */\nexport function parseJsonPath(path) {\n const selectors = [];\n let previousToken = 0 /* Token.START */;\n let currentToken;\n const parsingContext = { quote: undefined, escapeSequence: undefined };\n let currentSelector = '';\n for (const char of path) {\n // find which kind of token is this char\n currentToken = ALLOWED_NEXT_TOKENS[previousToken].find((token) => TOKEN_PREDICATE[token](char, parsingContext));\n if (!currentToken) {\n return [];\n }\n if (parsingContext.escapeSequence !== undefined && currentToken !== 12 /* Token.ESCAPE_SEQUENCE_CHAR */) {\n if (!isValidEscapeSequence(parsingContext.escapeSequence)) {\n return [];\n }\n currentSelector += resolveEscapeSequence(parsingContext.escapeSequence);\n parsingContext.escapeSequence = undefined;\n }\n if (ALLOWED_SELECTOR_TOKENS.includes(currentToken)) {\n // buffer the char if it belongs to the selector\n // ex: foo['bar']\n // ^ ^\n currentSelector += char;\n }\n else if (ALLOWED_SELECTOR_DELIMITER_TOKENS.includes(currentToken) && currentSelector !== '') {\n // close the current path part if we have reach a path part delimiter\n // ex: foo.bar['qux']\n // ^ ^ ^\n selectors.push(currentSelector);\n currentSelector = '';\n }\n else if (currentToken === 12 /* Token.ESCAPE_SEQUENCE_CHAR */) {\n parsingContext.escapeSequence = parsingContext.escapeSequence ? `${parsingContext.escapeSequence}${char}` : char;\n }\n else if (currentToken === 8 /* Token.QUOTE_START */) {\n parsingContext.quote = char;\n }\n else if (currentToken === 9 /* Token.QUOTE_END */) {\n parsingContext.quote = undefined;\n }\n previousToken = currentToken;\n }\n if (!ALLOWED_NEXT_TOKENS[previousToken].includes(1 /* Token.END */)) {\n return [];\n }\n if (currentSelector !== '') {\n selectors.push(currentSelector);\n }\n return selectors;\n}\nconst NAME_SHORTHAND_FIRST_CHAR_REGEX = /[a-zA-Z_$]/;\nconst NAME_SHORTHAND_CHAR_REGEX = /[a-zA-Z0-9_$]/;\nconst DIGIT_REGEX = /[0-9]/;\nconst UNICODE_CHAR_REGEX = /[a-fA-F0-9]/;\nconst QUOTE_CHARS = '\\'\"';\nconst TOKEN_PREDICATE = {\n // no char should match to START or END\n [0 /* Token.START */]: () => false,\n [1 /* Token.END */]: () => false,\n [2 /* Token.NAME_SHORTHAND_FIRST_CHAR */]: (char) => NAME_SHORTHAND_FIRST_CHAR_REGEX.test(char),\n [3 /* Token.NAME_SHORTHAND_CHAR */]: (char) => NAME_SHORTHAND_CHAR_REGEX.test(char),\n [4 /* Token.DOT */]: (char) => char === '.',\n [5 /* Token.BRACKET_START */]: (char) => char === '[',\n [6 /* Token.BRACKET_END */]: (char) => char === ']',\n [7 /* Token.DIGIT */]: (char) => DIGIT_REGEX.test(char),\n [8 /* Token.QUOTE_START */]: (char) => QUOTE_CHARS.includes(char),\n [9 /* Token.QUOTE_END */]: (char, parsingContext) => char === parsingContext.quote,\n [10 /* Token.NAME_SELECTOR_CHAR */]: () => true, // any char can be used in name selector\n [11 /* Token.ESCAPE */]: (char) => char === '\\\\',\n [12 /* Token.ESCAPE_SEQUENCE_CHAR */]: (char, parsingContext) => {\n if (parsingContext.escapeSequence === undefined) {\n // see https://www.rfc-editor.org/rfc/rfc9535.html#name-semantics-3\n return `${parsingContext.quote}/\\\\bfnrtu`.includes(char);\n }\n else if (parsingContext.escapeSequence.startsWith('u') && parsingContext.escapeSequence.length < 5) {\n return UNICODE_CHAR_REGEX.test(char);\n }\n return false;\n },\n};\nconst ALLOWED_NEXT_TOKENS = {\n [0 /* Token.START */]: [2 /* Token.NAME_SHORTHAND_FIRST_CHAR */, 5 /* Token.BRACKET_START */],\n [1 /* Token.END */]: [],\n [2 /* Token.NAME_SHORTHAND_FIRST_CHAR */]: [3 /* Token.NAME_SHORTHAND_CHAR */, 4 /* Token.DOT */, 5 /* Token.BRACKET_START */, 1 /* Token.END */],\n [3 /* Token.NAME_SHORTHAND_CHAR */]: [3 /* Token.NAME_SHORTHAND_CHAR */, 4 /* Token.DOT */, 5 /* Token.BRACKET_START */, 1 /* Token.END */],\n [4 /* Token.DOT */]: [2 /* Token.NAME_SHORTHAND_FIRST_CHAR */],\n [5 /* Token.BRACKET_START */]: [8 /* Token.QUOTE_START */, 7 /* Token.DIGIT */],\n [6 /* Token.BRACKET_END */]: [4 /* Token.DOT */, 5 /* Token.BRACKET_START */, 1 /* Token.END */],\n [7 /* Token.DIGIT */]: [7 /* Token.DIGIT */, 6 /* Token.BRACKET_END */],\n [8 /* Token.QUOTE_START */]: [11 /* Token.ESCAPE */, 9 /* Token.QUOTE_END */, 10 /* Token.NAME_SELECTOR_CHAR */],\n [9 /* Token.QUOTE_END */]: [6 /* Token.BRACKET_END */],\n [10 /* Token.NAME_SELECTOR_CHAR */]: [11 /* Token.ESCAPE */, 9 /* Token.QUOTE_END */, 10 /* Token.NAME_SELECTOR_CHAR */],\n [11 /* Token.ESCAPE */]: [12 /* Token.ESCAPE_SEQUENCE_CHAR */],\n [12 /* Token.ESCAPE_SEQUENCE_CHAR */]: [12 /* Token.ESCAPE_SEQUENCE_CHAR */, 11 /* Token.ESCAPE */, 9 /* Token.QUOTE_END */, 10 /* Token.NAME_SELECTOR_CHAR */],\n};\n// foo['bar\\n'][12]\n// ^^ ^ ^^ ^\nconst ALLOWED_SELECTOR_TOKENS = [\n 2 /* Token.NAME_SHORTHAND_FIRST_CHAR */,\n 3 /* Token.NAME_SHORTHAND_CHAR */,\n 7 /* Token.DIGIT */,\n 10 /* Token.NAME_SELECTOR_CHAR */,\n];\n// foo.bar['qux']\n// ^ ^ ^\nconst ALLOWED_SELECTOR_DELIMITER_TOKENS = [4 /* Token.DOT */, 5 /* Token.BRACKET_START */, 6 /* Token.BRACKET_END */];\nfunction isValidEscapeSequence(escapeSequence) {\n return '\"\\'/\\\\bfnrt'.includes(escapeSequence) || (escapeSequence.startsWith('u') && escapeSequence.length === 5);\n}\nconst ESCAPED_CHARS = {\n '\"': '\"',\n \"'\": \"'\",\n '/': '/',\n '\\\\': '\\\\',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t',\n};\nfunction resolveEscapeSequence(escapeSequence) {\n if (escapeSequence.startsWith('u')) {\n // build Unicode char from code\n return String.fromCharCode(parseInt(escapeSequence.slice(1), 16));\n }\n return ESCAPED_CHARS[escapeSequence];\n}\n//# sourceMappingURL=jsonPathParser.js.map","import { display, buildEndpointHost, mapValues, getCookie, addTelemetryMetrics, } from '@datadog/browser-core';\nimport { parseJsonPath } from './jsonPathParser';\nconst REMOTE_CONFIGURATION_VERSION = 'v1';\nconst SUPPORTED_FIELDS = [\n 'applicationId',\n 'service',\n 'env',\n 'version',\n 'sessionSampleRate',\n 'sessionReplaySampleRate',\n 'defaultPrivacyLevel',\n 'enablePrivacyForActionName',\n 'traceSampleRate',\n 'trackSessionAcrossSubdomains',\n 'allowedTracingUrls',\n 'allowedTrackingOrigins',\n];\nexport async function fetchAndApplyRemoteConfiguration(initConfiguration, supportedContextManagers) {\n let rumInitConfiguration;\n const metrics = initMetrics();\n const fetchResult = await fetchRemoteConfiguration(initConfiguration);\n if (!fetchResult.ok) {\n metrics.increment('fetch', 'failure');\n display.error(fetchResult.error);\n }\n else {\n metrics.increment('fetch', 'success');\n rumInitConfiguration = applyRemoteConfiguration(initConfiguration, fetchResult.value, supportedContextManagers, metrics);\n }\n // monitor-until: forever\n addTelemetryMetrics(\"remote configuration metrics\" /* TelemetryMetrics.REMOTE_CONFIGURATION_METRIC_NAME */, { metrics: metrics.get() });\n return rumInitConfiguration;\n}\nexport function applyRemoteConfiguration(initConfiguration, rumRemoteConfiguration, supportedContextManagers, metrics) {\n // intents:\n // - explicitly set each supported field to limit risk in case an attacker can create configurations\n // - check the existence in the remote config to avoid clearing a provided init field\n const appliedConfiguration = { ...initConfiguration };\n SUPPORTED_FIELDS.forEach((option) => {\n if (option in rumRemoteConfiguration) {\n appliedConfiguration[option] = resolveConfigurationProperty(rumRemoteConfiguration[option]);\n }\n });\n Object.keys(supportedContextManagers).forEach((context) => {\n if (rumRemoteConfiguration[context] !== undefined) {\n resolveContextProperty(supportedContextManagers[context], rumRemoteConfiguration[context]);\n }\n });\n return appliedConfiguration;\n // share context to access metrics\n function resolveConfigurationProperty(property) {\n if (Array.isArray(property)) {\n return property.map(resolveConfigurationProperty);\n }\n if (isObject(property)) {\n if (isSerializedOption(property)) {\n const type = property.rcSerializedType;\n switch (type) {\n case 'string':\n return property.value;\n case 'regex':\n return resolveRegex(property.value);\n case 'dynamic':\n return resolveDynamicOption(property);\n default:\n display.error(`Unsupported remote configuration: \"rcSerializedType\": \"${type}\"`);\n return;\n }\n }\n return mapValues(property, resolveConfigurationProperty);\n }\n return property;\n }\n function resolveContextProperty(contextManager, contextItems) {\n contextItems.forEach(({ key, value }) => {\n contextManager.setContextProperty(key, resolveConfigurationProperty(value));\n });\n }\n function resolveDynamicOption(property) {\n const strategy = property.strategy;\n let resolvedValue;\n switch (strategy) {\n case 'cookie':\n resolvedValue = resolveCookieValue(property);\n break;\n case 'dom':\n resolvedValue = resolveDomValue(property);\n break;\n case 'js':\n resolvedValue = resolveJsValue(property);\n break;\n default:\n display.error(`Unsupported remote configuration: \"strategy\": \"${strategy}\"`);\n return;\n }\n const extractor = property.extractor;\n if (extractor !== undefined && typeof resolvedValue === 'string') {\n return extractValue(extractor, resolvedValue);\n }\n return resolvedValue;\n }\n function resolveCookieValue({ name }) {\n const value = getCookie(name);\n metrics.increment('cookie', value !== undefined ? 'success' : 'missing');\n return value;\n }\n function resolveDomValue({ selector, attribute }) {\n let element;\n try {\n element = document.querySelector(selector);\n }\n catch (_a) {\n display.error(`Invalid selector in the remote configuration: '${selector}'`);\n metrics.increment('dom', 'failure');\n return;\n }\n if (!element) {\n metrics.increment('dom', 'missing');\n return;\n }\n if (isForbidden(element, attribute)) {\n display.error(`Forbidden element selected by the remote configuration: '${selector}'`);\n metrics.increment('dom', 'failure');\n return;\n }\n const domValue = attribute !== undefined ? element.getAttribute(attribute) : element.textContent;\n if (domValue === null) {\n metrics.increment('dom', 'missing');\n return;\n }\n metrics.increment('dom', 'success');\n return domValue;\n }\n function isForbidden(element, attribute) {\n return element.getAttribute('type') === 'password' && attribute === 'value';\n }\n function resolveJsValue({ path }) {\n let current = window;\n const pathParts = parseJsonPath(path);\n if (pathParts.length === 0) {\n display.error(`Invalid JSON path in the remote configuration: '${path}'`);\n metrics.increment('js', 'failure');\n return;\n }\n for (const pathPart of pathParts) {\n if (!(pathPart in current)) {\n metrics.increment('js', 'missing');\n return;\n }\n try {\n current = current[pathPart];\n }\n catch (e) {\n display.error(`Error accessing: '${path}'`, e);\n metrics.increment('js', 'failure');\n return;\n }\n }\n metrics.increment('js', 'success');\n return current;\n }\n}\nexport function initMetrics() {\n const metrics = { fetch: {} };\n return {\n get: () => metrics,\n increment: (metricName, type) => {\n if (!metrics[metricName]) {\n metrics[metricName] = {};\n }\n if (!metrics[metricName][type]) {\n metrics[metricName][type] = 0;\n }\n metrics[metricName][type] = metrics[metricName][type] + 1;\n },\n };\n}\nfunction isObject(property) {\n return typeof property === 'object' && property !== null;\n}\nfunction isSerializedOption(value) {\n return 'rcSerializedType' in value;\n}\nfunction resolveRegex(pattern) {\n try {\n return new RegExp(pattern);\n }\n catch (_a) {\n display.error(`Invalid regex in the remote configuration: '${pattern}'`);\n }\n}\nfunction extractValue(extractor, candidate) {\n const resolvedExtractor = resolveRegex(extractor.value);\n if (resolvedExtractor === undefined) {\n return;\n }\n const regexResult = resolvedExtractor.exec(candidate);\n if (regexResult === null) {\n return;\n }\n const [match, capture] = regexResult;\n return capture ? capture : match;\n}\nexport async function fetchRemoteConfiguration(configuration) {\n let response;\n try {\n response = await fetch(buildEndpoint(configuration));\n }\n catch (_a) {\n response = undefined;\n }\n if (!response || !response.ok) {\n return {\n ok: false,\n error: new Error('Error fetching the remote configuration.'),\n };\n }\n const remoteConfiguration = await response.json();\n if (remoteConfiguration.rum) {\n return {\n ok: true,\n value: remoteConfiguration.rum,\n };\n }\n return {\n ok: false,\n error: new Error('No remote configuration for RUM.'),\n };\n}\nexport function buildEndpoint(configuration) {\n if (configuration.remoteConfigurationProxy) {\n return configuration.remoteConfigurationProxy;\n }\n return `https://sdk-configuration.${buildEndpointHost('rum', configuration)}/${REMOTE_CONFIGURATION_VERSION}/${encodeURIComponent(configuration.remoteConfigurationId)}.json`;\n}\n//# sourceMappingURL=remoteConfiguration.js.map","import { createBoundedBuffer, display, canUseEventBridge, displayAlreadyInitializedError, willSyntheticsInjectRum, noop, timeStampNow, clocksNow, getEventBridge, initFeatureFlags, addTelemetryConfiguration, initFetchObservable, CustomerContextKey, buildAccountContextManager, buildGlobalContextManager, buildUserContextManager, monitorError, sanitize, } from '@datadog/browser-core';\nimport { validateAndBuildRumConfiguration, fetchAndApplyRemoteConfiguration, serializeRumConfiguration, } from '../domain/configuration';\nimport { startDurationVital, stopDurationVital } from '../domain/vital/vitalCollection';\nimport { callPluginsMethod } from '../domain/plugins';\nexport function createPreStartStrategy({ ignoreInitIfSyntheticsWillInjectRum = true, startDeflateWorker }, trackingConsentState, customVitalsState, doStartRum) {\n const bufferApiCalls = createBoundedBuffer();\n // TODO next major: remove the globalContextManager, userContextManager and accountContextManager from preStartStrategy and use an empty context instead\n const globalContext = buildGlobalContextManager();\n bufferContextCalls(globalContext, CustomerContextKey.globalContext, bufferApiCalls);\n const userContext = buildUserContextManager();\n bufferContextCalls(userContext, CustomerContextKey.userContext, bufferApiCalls);\n const accountContext = buildAccountContextManager();\n bufferContextCalls(accountContext, CustomerContextKey.accountContext, bufferApiCalls);\n let firstStartViewCall;\n let deflateWorker;\n let cachedInitConfiguration;\n let cachedConfiguration;\n const trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartRum);\n const emptyContext = {};\n function tryStartRum() {\n if (!cachedInitConfiguration || !cachedConfiguration || !trackingConsentState.isGranted()) {\n return;\n }\n trackingConsentStateSubscription.unsubscribe();\n let initialViewOptions;\n if (cachedConfiguration.trackViewsManually) {\n if (!firstStartViewCall) {\n return;\n }\n // An initial view is always created when starting RUM.\n // When tracking views automatically, any startView call before RUM start creates an extra\n // view.\n // When tracking views manually, we use the ViewOptions from the first startView call as the\n // initial view options, and we remove the actual startView call so we don't create an extra\n // view.\n bufferApiCalls.remove(firstStartViewCall.callback);\n initialViewOptions = firstStartViewCall.options;\n }\n const startRumResult = doStartRum(cachedConfiguration, deflateWorker, initialViewOptions);\n bufferApiCalls.drain(startRumResult);\n }\n function doInit(initConfiguration, errorStack) {\n const eventBridgeAvailable = canUseEventBridge();\n if (eventBridgeAvailable) {\n initConfiguration = overrideInitConfigurationForBridge(initConfiguration);\n }\n // Update the exposed initConfiguration to reflect the bridge and remote configuration overrides\n cachedInitConfiguration = initConfiguration;\n addTelemetryConfiguration(serializeRumConfiguration(initConfiguration));\n if (cachedConfiguration) {\n displayAlreadyInitializedError('DD_RUM', initConfiguration);\n return;\n }\n const configuration = validateAndBuildRumConfiguration(initConfiguration, errorStack);\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.compressIntakeRequests && !eventBridgeAvailable && startDeflateWorker) {\n deflateWorker = startDeflateWorker(configuration, 'Datadog RUM', \n // Worker initialization can fail asynchronously, especially in Firefox where even CSP\n // issues are reported asynchronously. For now, the SDK will continue its execution even if\n // data won't be sent to Datadog. We could improve this behavior in the future.\n noop);\n if (!deflateWorker) {\n // `startDeflateWorker` should have logged an error message explaining the issue\n return;\n }\n }\n cachedConfiguration = configuration;\n // Instrument fetch to track network requests\n // This is needed in case the consent is not granted and some customer\n // library (Apollo Client) is storing uninstrumented fetch to be used later\n // The subscription is needed so that the instrumentation process is completed\n initFetchObservable().subscribe(noop);\n trackingConsentState.tryToInit(configuration.trackingConsent);\n tryStartRum();\n }\n const addDurationVital = (vital) => {\n bufferApiCalls.add((startRumResult) => startRumResult.addDurationVital(vital));\n };\n const addOperationStepVital = (name, stepType, options, failureReason) => {\n bufferApiCalls.add((startRumResult) => startRumResult.addOperationStepVital(sanitize(name), stepType, sanitize(options), sanitize(failureReason)));\n };\n const strategy = {\n init(initConfiguration, publicApi, errorStack) {\n if (!initConfiguration) {\n display.error('Missing configuration');\n return;\n }\n // Set the experimental feature flags as early as possible, so we can use them in most places\n initFeatureFlags(initConfiguration.enableExperimentalFeatures);\n // Expose the initial configuration regardless of initialization success.\n cachedInitConfiguration = initConfiguration;\n // If we are in a Synthetics test configured to automatically inject a RUM instance, we want\n // to completely discard the customer application RUM instance by ignoring their init() call.\n // But, we should not ignore the init() call from the Synthetics-injected RUM instance, so the\n // internal `ignoreInitIfSyntheticsWillInjectRum` option is here to bypass this condition.\n if (ignoreInitIfSyntheticsWillInjectRum && willSyntheticsInjectRum()) {\n return;\n }\n callPluginsMethod(initConfiguration.plugins, 'onInit', { initConfiguration, publicApi });\n if (initConfiguration.remoteConfigurationId) {\n fetchAndApplyRemoteConfiguration(initConfiguration, { user: userContext, context: globalContext })\n .then((initConfiguration) => {\n if (initConfiguration) {\n doInit(initConfiguration, errorStack);\n }\n })\n .catch(monitorError);\n }\n else {\n doInit(initConfiguration, errorStack);\n }\n },\n get initConfiguration() {\n return cachedInitConfiguration;\n },\n getInternalContext: noop,\n stopSession: noop,\n addTiming(name, time = timeStampNow()) {\n bufferApiCalls.add((startRumResult) => startRumResult.addTiming(name, time));\n },\n startView(options, startClocks = clocksNow()) {\n const callback = (startRumResult) => {\n startRumResult.startView(options, startClocks);\n };\n bufferApiCalls.add(callback);\n if (!firstStartViewCall) {\n firstStartViewCall = { options, callback };\n tryStartRum();\n }\n },\n setViewName(name) {\n bufferApiCalls.add((startRumResult) => startRumResult.setViewName(name));\n },\n // View context APIs\n setViewContext(context) {\n bufferApiCalls.add((startRumResult) => startRumResult.setViewContext(context));\n },\n setViewContextProperty(key, value) {\n bufferApiCalls.add((startRumResult) => startRumResult.setViewContextProperty(key, value));\n },\n getViewContext: () => emptyContext,\n globalContext,\n userContext,\n accountContext,\n addAction(action) {\n bufferApiCalls.add((startRumResult) => startRumResult.addAction(action));\n },\n addError(providedError) {\n bufferApiCalls.add((startRumResult) => startRumResult.addError(providedError));\n },\n addFeatureFlagEvaluation(key, value) {\n bufferApiCalls.add((startRumResult) => startRumResult.addFeatureFlagEvaluation(key, value));\n },\n startDurationVital(name, options) {\n return startDurationVital(customVitalsState, name, options);\n },\n stopDurationVital(name, options) {\n stopDurationVital(addDurationVital, customVitalsState, name, options);\n },\n addDurationVital,\n addOperationStepVital,\n };\n return strategy;\n}\nfunction overrideInitConfigurationForBridge(initConfiguration) {\n var _a, _b;\n return {\n ...initConfiguration,\n applicationId: '00000000-aaaa-0000-aaaa-000000000000',\n clientToken: 'empty',\n sessionSampleRate: 100,\n defaultPrivacyLevel: (_a = initConfiguration.defaultPrivacyLevel) !== null && _a !== void 0 ? _a : (_b = getEventBridge()) === null || _b === void 0 ? void 0 : _b.getPrivacyLevel(),\n };\n}\nfunction bufferContextCalls(preStartContextManager, name, bufferApiCalls) {\n preStartContextManager.changeObservable.subscribe(() => {\n const context = preStartContextManager.getContext();\n bufferApiCalls.add((startRumResult) => startRumResult[name].setContext(context));\n });\n}\n//# sourceMappingURL=preStartRum.js.map","import { ContextManagerMethod, addTelemetryUsage, deepClone, makePublicApi, monitor, clocksNow, callMonitored, createHandlingStack, sanitize, createIdentityEncoder, displayAlreadyInitializedError, createTrackingConsentState, timeStampToClocks, CustomerContextKey, defineContextMethod, startBufferingData, } from '@datadog/browser-core';\nimport { ActionType, VitalType } from '../rawRumEvent.types';\nimport { createCustomVitalsState } from '../domain/vital/vitalCollection';\nimport { callPluginsMethod } from '../domain/plugins';\nimport { createPreStartStrategy } from './preStartRum';\nexport function makeRumPublicApi(startRumImpl, recorderApi, profilerApi, options = {}) {\n const trackingConsentState = createTrackingConsentState();\n const customVitalsState = createCustomVitalsState();\n const bufferedDataObservable = startBufferingData().observable;\n let strategy = createPreStartStrategy(options, trackingConsentState, customVitalsState, (configuration, deflateWorker, initialViewOptions) => {\n const createEncoder = deflateWorker && options.createDeflateEncoder\n ? (streamId) => options.createDeflateEncoder(configuration, deflateWorker, streamId)\n : createIdentityEncoder;\n const startRumResult = startRumImpl(configuration, recorderApi, profilerApi, initialViewOptions, createEncoder, trackingConsentState, customVitalsState, bufferedDataObservable, options.sdkName);\n recorderApi.onRumStart(startRumResult.lifeCycle, configuration, startRumResult.session, startRumResult.viewHistory, deflateWorker, startRumResult.telemetry);\n profilerApi.onRumStart(startRumResult.lifeCycle, startRumResult.hooks, configuration, startRumResult.session, startRumResult.viewHistory, startRumResult.longTaskContexts, createEncoder);\n strategy = createPostStartStrategy(strategy, startRumResult);\n callPluginsMethod(configuration.plugins, 'onRumStart', {\n strategy, // TODO: remove this in the next major release\n addEvent: startRumResult.addEvent,\n });\n return startRumResult;\n });\n const getStrategy = () => strategy;\n const startView = monitor((options) => {\n const sanitizedOptions = typeof options === 'object' ? options : { name: options };\n strategy.startView(sanitizedOptions);\n addTelemetryUsage({ feature: 'start-view' });\n });\n const rumPublicApi = makePublicApi({\n init: (initConfiguration) => {\n const errorStack = new Error().stack;\n callMonitored(() => strategy.init(initConfiguration, rumPublicApi, errorStack));\n },\n setTrackingConsent: monitor((trackingConsent) => {\n trackingConsentState.update(trackingConsent);\n addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent });\n }),\n setViewName: monitor((name) => {\n strategy.setViewName(name);\n addTelemetryUsage({ feature: 'set-view-name' });\n }),\n setViewContext: monitor((context) => {\n strategy.setViewContext(context);\n addTelemetryUsage({ feature: 'set-view-context' });\n }),\n setViewContextProperty: monitor((key, value) => {\n strategy.setViewContextProperty(key, value);\n addTelemetryUsage({ feature: 'set-view-context-property' });\n }),\n getViewContext: monitor(() => {\n addTelemetryUsage({ feature: 'set-view-context-property' });\n return strategy.getViewContext();\n }),\n getInternalContext: monitor((startTime) => strategy.getInternalContext(startTime)),\n getInitConfiguration: monitor(() => deepClone(strategy.initConfiguration)),\n addAction: (name, context) => {\n const handlingStack = createHandlingStack('action');\n callMonitored(() => {\n strategy.addAction({\n name: sanitize(name),\n context: sanitize(context),\n startClocks: clocksNow(),\n type: ActionType.CUSTOM,\n handlingStack,\n });\n addTelemetryUsage({ feature: 'add-action' });\n });\n },\n addError: (error, context) => {\n const handlingStack = createHandlingStack('error');\n callMonitored(() => {\n strategy.addError({\n error, // Do not sanitize error here, it is needed unserialized by computeRawError()\n handlingStack,\n context: sanitize(context),\n startClocks: clocksNow(),\n });\n addTelemetryUsage({ feature: 'add-error' });\n });\n },\n addTiming: monitor((name, time) => {\n // TODO: next major decide to drop relative time support or update its behaviour\n strategy.addTiming(sanitize(name), time);\n }),\n setGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.setContext, 'set-global-context'),\n getGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.getContext, 'get-global-context'),\n setGlobalContextProperty: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.setContextProperty, 'set-global-context-property'),\n removeGlobalContextProperty: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.removeContextProperty, 'remove-global-context-property'),\n clearGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.clearContext, 'clear-global-context'),\n setUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.setContext, 'set-user'),\n getUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.getContext, 'get-user'),\n setUserProperty: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.setContextProperty, 'set-user-property'),\n removeUserProperty: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.removeContextProperty, 'remove-user-property'),\n clearUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.clearContext, 'clear-user'),\n setAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.setContext, 'set-account'),\n getAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.getContext, 'get-account'),\n setAccountProperty: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.setContextProperty, 'set-account-property'),\n removeAccountProperty: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.removeContextProperty, 'remove-account-property'),\n clearAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.clearContext, 'clear-account'),\n startView,\n stopSession: monitor(() => {\n strategy.stopSession();\n addTelemetryUsage({ feature: 'stop-session' });\n }),\n addFeatureFlagEvaluation: monitor((key, value) => {\n strategy.addFeatureFlagEvaluation(sanitize(key), sanitize(value));\n addTelemetryUsage({ feature: 'add-feature-flag-evaluation' });\n }),\n getSessionReplayLink: monitor(() => recorderApi.getSessionReplayLink()),\n startSessionReplayRecording: monitor((options) => {\n recorderApi.start(options);\n addTelemetryUsage({ feature: 'start-session-replay-recording', force: options && options.force });\n }),\n stopSessionReplayRecording: monitor(() => recorderApi.stop()),\n addDurationVital: monitor((name, options) => {\n addTelemetryUsage({ feature: 'add-duration-vital' });\n strategy.addDurationVital({\n name: sanitize(name),\n type: VitalType.DURATION,\n startClocks: timeStampToClocks(options.startTime),\n duration: options.duration,\n context: sanitize(options && options.context),\n description: sanitize(options && options.description),\n });\n }),\n startDurationVital: monitor((name, options) => {\n addTelemetryUsage({ feature: 'start-duration-vital' });\n return strategy.startDurationVital(sanitize(name), {\n context: sanitize(options && options.context),\n description: sanitize(options && options.description),\n });\n }),\n stopDurationVital: monitor((nameOrRef, options) => {\n addTelemetryUsage({ feature: 'stop-duration-vital' });\n strategy.stopDurationVital(typeof nameOrRef === 'string' ? sanitize(nameOrRef) : nameOrRef, {\n context: sanitize(options && options.context),\n description: sanitize(options && options.description),\n });\n }),\n startFeatureOperation: monitor((name, options) => {\n addTelemetryUsage({ feature: 'add-operation-step-vital', action_type: 'start' });\n strategy.addOperationStepVital(name, 'start', options);\n }),\n succeedFeatureOperation: monitor((name, options) => {\n addTelemetryUsage({ feature: 'add-operation-step-vital', action_type: 'succeed' });\n strategy.addOperationStepVital(name, 'end', options);\n }),\n failFeatureOperation: monitor((name, failureReason, options) => {\n addTelemetryUsage({ feature: 'add-operation-step-vital', action_type: 'fail' });\n strategy.addOperationStepVital(name, 'end', options, failureReason);\n }),\n });\n return rumPublicApi;\n}\nfunction createPostStartStrategy(preStartStrategy, startRumResult) {\n return {\n init: (initConfiguration) => {\n displayAlreadyInitializedError('DD_RUM', initConfiguration);\n },\n initConfiguration: preStartStrategy.initConfiguration,\n ...startRumResult,\n };\n}\n//# sourceMappingURL=rumPublicApi.js.map","import { monitor, noop, Observable, getZoneJsOriginalValue } from '@datadog/browser-core';\nexport function createDOMMutationObservable() {\n const MutationObserver = getMutationObserverConstructor();\n return new Observable((observable) => {\n if (!MutationObserver) {\n return;\n }\n const observer = new MutationObserver(monitor((records) => observable.notify(records)));\n observer.observe(document, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n });\n return () => observer.disconnect();\n });\n}\nexport function getMutationObserverConstructor() {\n let constructor;\n const 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 const patchedInstance = new browserWindow.MutationObserver(noop);\n const originalInstance = getZoneJsOriginalValue(patchedInstance, 'originalInstance');\n constructor = originalInstance && originalInstance.constructor;\n }\n }\n if (!constructor) {\n constructor = browserWindow.MutationObserver;\n }\n return constructor;\n}\n//# sourceMappingURL=domMutationObservable.js.map","import { instrumentMethod, Observable } from '@datadog/browser-core';\nexport function createWindowOpenObservable() {\n const observable = new Observable();\n const { stop } = instrumentMethod(window, 'open', () => observable.notify());\n return { observable, stop };\n}\n//# sourceMappingURL=windowOpenObservable.js.map","/**\n * Internal context keep returning v1 format\n * to not break compatibility with logs data format\n */\nexport function startInternalContext(applicationId, sessionManager, viewHistory, actionContexts, urlContexts) {\n return {\n get: (startTime) => {\n const viewContext = viewHistory.findView(startTime);\n const urlContext = urlContexts.findUrl(startTime);\n const session = sessionManager.findTrackedSession(startTime);\n if (session && viewContext && urlContext) {\n const actionId = actionContexts.findActionId(startTime);\n return {\n application_id: applicationId,\n session_id: session.id,\n user_action: actionId ? { id: actionId } : undefined,\n view: { id: viewContext.id, name: viewContext.name, referrer: urlContext.referrer, url: urlContext.url },\n };\n }\n },\n };\n}\n//# sourceMappingURL=internalContext.js.map","import { AbstractLifeCycle } from '@datadog/browser-core';\nexport const LifeCycle = (AbstractLifeCycle);\n//# sourceMappingURL=lifeCycle.js.map","import { SESSION_TIME_OUT_DELAY, createValueHistory } from '@datadog/browser-core';\nexport const VIEW_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startViewHistory(lifeCycle) {\n const viewValueHistory = createValueHistory({ expireDelay: VIEW_CONTEXT_TIME_OUT_DELAY });\n lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, (view) => {\n viewValueHistory.add(buildViewHistoryEntry(view), view.startClocks.relative);\n });\n lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, ({ endClocks }) => {\n viewValueHistory.closeActive(endClocks.relative);\n });\n lifeCycle.subscribe(3 /* LifeCycleEventType.BEFORE_VIEW_UPDATED */, (viewUpdate) => {\n const currentView = viewValueHistory.find(viewUpdate.startClocks.relative);\n if (!currentView) {\n return;\n }\n if (viewUpdate.name) {\n currentView.name = viewUpdate.name;\n }\n if (viewUpdate.context) {\n currentView.context = viewUpdate.context;\n }\n currentView.sessionIsActive = viewUpdate.sessionIsActive;\n });\n lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, () => {\n viewValueHistory.reset();\n });\n function buildViewHistoryEntry(view) {\n return {\n service: view.service,\n version: view.version,\n context: view.context,\n id: view.id,\n name: view.name,\n startClocks: view.startClocks,\n };\n }\n return {\n findView: (startTime) => viewValueHistory.find(startTime),\n stop: () => {\n viewValueHistory.stop();\n },\n };\n}\n//# sourceMappingURL=viewHistory.js.map","import { elapsed, getPathName, isValidUrl, ResourceType, toServerDuration, isIntakeUrl, isExperimentalFeatureEnabled, ExperimentalFeature, } from '@datadog/browser-core';\nexport const FAKE_INITIAL_DOCUMENT = 'initial_document';\nconst RESOURCE_TYPES = [\n [ResourceType.DOCUMENT, (initiatorType) => FAKE_INITIAL_DOCUMENT === initiatorType],\n [ResourceType.XHR, (initiatorType) => 'xmlhttprequest' === initiatorType],\n [ResourceType.FETCH, (initiatorType) => 'fetch' === initiatorType],\n [ResourceType.BEACON, (initiatorType) => 'beacon' === initiatorType],\n [ResourceType.CSS, (_, path) => /\\.css$/i.test(path)],\n [ResourceType.JS, (_, path) => /\\.js$/i.test(path)],\n [\n ResourceType.IMAGE,\n (initiatorType, path) => ['image', 'img', 'icon'].includes(initiatorType) || /\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i.exec(path) !== null,\n ],\n [ResourceType.FONT, (_, path) => /\\.(woff|eot|woff2|ttf)$/i.exec(path) !== null],\n [\n ResourceType.MEDIA,\n (initiatorType, path) => ['audio', 'video'].includes(initiatorType) || /\\.(mp3|mp4)$/i.exec(path) !== null,\n ],\n];\nexport function computeResourceEntryType(entry) {\n const url = entry.name;\n if (!isValidUrl(url)) {\n return ResourceType.OTHER;\n }\n const path = getPathName(url);\n for (const [type, isType] of RESOURCE_TYPES) {\n if (isType(entry.initiatorType, path)) {\n return type;\n }\n }\n return ResourceType.OTHER;\n}\nfunction areInOrder(...numbers) {\n for (let i = 1; i < numbers.length; i += 1) {\n if (numbers[i - 1] > numbers[i]) {\n return false;\n }\n }\n return true;\n}\nexport function isResourceEntryRequestType(entry) {\n return entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch';\n}\nexport function computeResourceEntryDuration(entry) {\n const { duration, startTime, responseEnd } = entry;\n // Safari duration is always 0 on timings blocked by cross origin policies.\n if (duration === 0 && startTime < responseEnd) {\n return elapsed(startTime, responseEnd);\n }\n return duration;\n}\nexport function computeResourceEntryDetails(entry) {\n if (!hasValidResourceEntryTimings(entry)) {\n return undefined;\n }\n const { startTime, fetchStart, workerStart, redirectStart, redirectEnd, domainLookupStart, domainLookupEnd, connectStart, secureConnectionStart, connectEnd, requestStart, responseStart, responseEnd, } = entry;\n const details = {\n download: formatTiming(startTime, responseStart, responseEnd),\n first_byte: formatTiming(startTime, requestStart, responseStart),\n };\n // Make sure a worker processing time is recorded\n if (0 < workerStart && workerStart < fetchStart) {\n details.worker = formatTiming(startTime, workerStart, fetchStart);\n }\n // Make sure a connection occurred\n if (fetchStart < connectEnd) {\n details.connect = formatTiming(startTime, connectStart, connectEnd);\n // Make sure a secure connection occurred\n if (connectStart <= secureConnectionStart && secureConnectionStart <= connectEnd) {\n details.ssl = formatTiming(startTime, secureConnectionStart, connectEnd);\n }\n }\n // Make sure a domain lookup occurred\n if (fetchStart < domainLookupEnd) {\n details.dns = formatTiming(startTime, domainLookupStart, domainLookupEnd);\n }\n // Make sure a redirection occurred\n if (startTime < redirectEnd) {\n details.redirect = formatTiming(startTime, redirectStart, redirectEnd);\n }\n return details;\n}\n/**\n * Entries with negative duration are unexpected and should be dismissed. The intake will ignore RUM\n * Resource events with negative durations anyway.\n * Since Chromium 128, more entries have unexpected negative durations, see\n * https://issues.chromium.org/issues/363031537\n */\nexport function hasValidResourceEntryDuration(entry) {\n return entry.duration >= 0;\n}\nexport function hasValidResourceEntryTimings(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 const areCommonTimingsInOrder = areInOrder(entry.startTime, entry.fetchStart, entry.domainLookupStart, entry.domainLookupEnd, entry.connectStart, entry.connectEnd, entry.requestStart, entry.responseStart, entry.responseEnd);\n const areRedirectionTimingsInOrder = hasRedirection(entry)\n ? areInOrder(entry.startTime, entry.redirectStart, entry.redirectEnd, entry.fetchStart)\n : true;\n return areCommonTimingsInOrder && areRedirectionTimingsInOrder;\n}\nfunction hasRedirection(entry) {\n return entry.redirectEnd > entry.startTime;\n}\nfunction formatTiming(origin, start, end) {\n if (origin <= start && start <= end) {\n return {\n duration: toServerDuration(elapsed(start, end)),\n start: toServerDuration(elapsed(origin, start)),\n };\n }\n}\n/**\n * The 'nextHopProtocol' is an empty string for cross-origin resources without CORS headers,\n * meaning the protocol is unknown, and we shouldn't report it.\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/nextHopProtocol#cross-origin_resources\n */\nexport function computeResourceEntryProtocol(entry) {\n return entry.nextHopProtocol === '' ? undefined : entry.nextHopProtocol;\n}\n/**\n * Handles the 'deliveryType' property to distinguish between supported values ('cache', 'navigational-prefetch'),\n * undefined (unsupported in some browsers), and other cases ('other' for unknown or unrecognized values).\n * see: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/deliveryType\n */\nexport function computeResourceEntryDeliveryType(entry) {\n return entry.deliveryType === '' ? 'other' : entry.deliveryType;\n}\nexport function computeResourceEntrySize(entry) {\n // Make sure a request actually occurred\n if (entry.startTime < entry.responseStart) {\n const { encodedBodySize, decodedBodySize, transferSize } = entry;\n return {\n size: decodedBodySize,\n encoded_body_size: encodedBodySize,\n decoded_body_size: decodedBodySize,\n transfer_size: transferSize,\n };\n }\n return {\n size: undefined,\n encoded_body_size: undefined,\n decoded_body_size: undefined,\n transfer_size: undefined,\n };\n}\nexport function isAllowedRequestUrl(url) {\n return url && (!isIntakeUrl(url) || isExperimentalFeatureEnabled(ExperimentalFeature.TRACK_INTAKE_REQUESTS));\n}\nconst DATA_URL_REGEX = /data:(.+)?(;base64)?,/g;\nexport const MAX_RESOURCE_VALUE_CHAR_LENGTH = 24000;\nexport function sanitizeIfLongDataUrl(url, lengthLimit = MAX_RESOURCE_VALUE_CHAR_LENGTH) {\n if (url.length <= lengthLimit || !url.startsWith('data:')) {\n return url;\n }\n // truncate url first to a random length to prevent match error when the url is too long\n const dataUrlMatchArray = url.substring(0, 100).match(DATA_URL_REGEX);\n if (!dataUrlMatchArray) {\n return url;\n }\n return `${dataUrlMatchArray[0]}[...]`;\n}\n//# sourceMappingURL=resourceUtils.js.map","import { isNonEmptyArray, matchList, ONE_KIBI_BYTE, safeTruncate } from '@datadog/browser-core';\n/**\n * arbitrary value, byte precision not needed\n */\nconst GRAPHQL_PAYLOAD_LIMIT = 32 * ONE_KIBI_BYTE;\nexport function extractGraphQlMetadata(request, graphQlConfig) {\n const metadata = extractGraphQlRequestMetadata(request.requestBody, graphQlConfig.trackPayload);\n if (!metadata) {\n return;\n }\n if (graphQlConfig.trackResponseErrors && request.responseBody) {\n const responseErrors = parseGraphQlResponse(request.responseBody);\n if (responseErrors) {\n metadata.error_count = responseErrors.length;\n metadata.errors = responseErrors;\n }\n }\n return metadata;\n}\nexport function parseGraphQlResponse(responseText) {\n let response;\n try {\n response = JSON.parse(responseText);\n }\n catch (_a) {\n // Invalid JSON response\n return;\n }\n if (!response || typeof response !== 'object') {\n return;\n }\n const responseObj = response;\n if (!isNonEmptyArray(responseObj.errors)) {\n return;\n }\n const errors = responseObj.errors.map((error) => {\n var _a;\n const graphqlError = {\n message: error.message,\n path: error.path,\n locations: error.locations,\n code: (_a = error.extensions) === null || _a === void 0 ? void 0 : _a.code,\n };\n return graphqlError;\n });\n return errors;\n}\nexport function findGraphQlConfiguration(url, configuration) {\n return configuration.allowedGraphQlUrls.find((graphQlOption) => matchList([graphQlOption.match], url));\n}\nexport function extractGraphQlRequestMetadata(requestBody, trackPayload = false) {\n if (!requestBody || typeof requestBody !== 'string') {\n return;\n }\n let graphqlBody;\n try {\n graphqlBody = JSON.parse(requestBody);\n }\n catch (_a) {\n // Not valid JSON\n return;\n }\n if (!graphqlBody) {\n return;\n }\n let operationType;\n let payload;\n if (graphqlBody.query) {\n const trimmedQuery = graphqlBody.query.trim();\n operationType = getOperationType(trimmedQuery);\n if (trackPayload) {\n payload = safeTruncate(trimmedQuery, GRAPHQL_PAYLOAD_LIMIT, '...');\n }\n }\n const operationName = graphqlBody.operationName;\n let variables;\n if (graphqlBody.variables) {\n variables = JSON.stringify(graphqlBody.variables);\n }\n return {\n operationType,\n operationName,\n variables,\n payload,\n };\n}\nfunction getOperationType(query) {\n var _a;\n return (_a = query.match(/^\\s*(query|mutation|subscription)\\b/i)) === null || _a === void 0 ? void 0 : _a[1];\n}\n//# sourceMappingURL=graphql.js.map","import { RequestType, elapsed, initFetchObservable, initXhrObservable, timeStampNow, } from '@datadog/browser-core';\nimport { isAllowedRequestUrl } from './resource/resourceUtils';\nimport { startTracer } from './tracing/tracer';\nimport { findGraphQlConfiguration } from './resource/graphql';\nlet nextRequestIndex = 1;\nexport function startRequestCollection(lifeCycle, configuration, sessionManager, userContext, accountContext) {\n const tracer = startTracer(configuration, sessionManager, userContext, accountContext);\n trackXhr(lifeCycle, configuration, tracer);\n trackFetch(lifeCycle, configuration, tracer);\n}\nexport function trackXhr(lifeCycle, configuration, tracer) {\n const subscription = initXhrObservable(configuration).subscribe((rawContext) => {\n const context = rawContext;\n if (!isAllowedRequestUrl(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(7 /* LifeCycleEventType.REQUEST_STARTED */, {\n requestIndex: context.requestIndex,\n url: context.url,\n });\n break;\n case 'complete':\n tracer.clearTracingIfNeeded(context);\n lifeCycle.notify(8 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n duration: context.duration,\n method: context.method,\n requestIndex: context.requestIndex,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: RequestType.XHR,\n url: context.url,\n xhr: context.xhr,\n isAborted: context.isAborted,\n handlingStack: context.handlingStack,\n requestBody: context.requestBody,\n responseBody: context.responseBody,\n });\n break;\n }\n });\n return { stop: () => subscription.unsubscribe() };\n}\nexport function trackFetch(lifeCycle, configuration, tracer) {\n const subscription = initFetchObservable({\n responseBodyAction: (context) => {\n var _a;\n if ((_a = findGraphQlConfiguration(context.url, configuration)) === null || _a === void 0 ? void 0 : _a.trackResponseErrors) {\n return 2 /* ResponseBodyAction.COLLECT */;\n }\n return 1 /* ResponseBodyAction.WAIT */;\n },\n }).subscribe((rawContext) => {\n var _a;\n const context = rawContext;\n if (!isAllowedRequestUrl(context.url)) {\n return;\n }\n switch (context.state) {\n case 'start':\n tracer.traceFetch(context);\n context.requestIndex = getNextRequestIndex();\n lifeCycle.notify(7 /* LifeCycleEventType.REQUEST_STARTED */, {\n requestIndex: context.requestIndex,\n url: context.url,\n });\n break;\n case 'resolve':\n tracer.clearTracingIfNeeded(context);\n lifeCycle.notify(8 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n duration: elapsed(context.startClocks.timeStamp, timeStampNow()),\n method: context.method,\n requestIndex: context.requestIndex,\n responseType: context.responseType,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: RequestType.FETCH,\n url: context.url,\n response: context.response,\n init: context.init,\n input: context.input,\n isAborted: context.isAborted,\n handlingStack: context.handlingStack,\n requestBody: (_a = context.init) === null || _a === void 0 ? void 0 : _a.body,\n responseBody: context.responseBody,\n });\n break;\n }\n });\n return { stop: () => subscription.unsubscribe() };\n}\nfunction getNextRequestIndex() {\n const result = nextRequestIndex;\n nextRequestIndex += 1;\n return result;\n}\n//# sourceMappingURL=requestCollection.js.map","import { isNumber } from '@datadog/browser-core';\nexport function discardNegativeDuration(duration) {\n return isNumber(duration) && duration < 0 ? undefined : duration;\n}\n//# sourceMappingURL=discardNegativeDuration.js.map","import { noop } from '@datadog/browser-core';\nimport { RumEventType } from '../rawRumEvent.types';\nexport function trackEventCounts({ lifeCycle, isChildEvent, onChange: callback = noop, }) {\n const eventCounts = {\n errorCount: 0,\n longTaskCount: 0,\n resourceCount: 0,\n actionCount: 0,\n frustrationCount: 0,\n };\n const subscription = lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, (event) => {\n var _a;\n if (event.type === 'view' || event.type === 'vital' || !isChildEvent(event)) {\n return;\n }\n switch (event.type) {\n case RumEventType.ERROR:\n eventCounts.errorCount += 1;\n callback();\n break;\n case RumEventType.ACTION:\n eventCounts.actionCount += 1;\n if (event.action.frustration) {\n eventCounts.frustrationCount += event.action.frustration.type.length;\n }\n callback();\n break;\n case RumEventType.LONG_TASK:\n eventCounts.longTaskCount += 1;\n callback();\n break;\n case RumEventType.RESOURCE:\n if (!((_a = event._dd) === null || _a === void 0 ? void 0 : _a.discarded)) {\n eventCounts.resourceCount += 1;\n callback();\n }\n break;\n }\n });\n return {\n stop: () => {\n subscription.unsubscribe();\n },\n eventCounts,\n };\n}\n//# sourceMappingURL=trackEventCounts.js.map","import { addEventListeners, dateNow, relativeNow } from '@datadog/browser-core';\n/**\n * first-input timing entry polyfill based on\n * https://github.com/GoogleChrome/web-vitals/blob/master/src/lib/polyfills/firstInputPolyfill.ts\n */\nexport function retrieveFirstInputTiming(configuration, callback) {\n const startTimeStamp = dateNow();\n let timingSent = false;\n const { stop: 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 */], (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 const timing = {\n entryType: 'first-input',\n processingStart: relativeNow(),\n processingEnd: relativeNow(),\n startTime: evt.timeStamp,\n duration: 0, // arbitrary value to avoid nullable duration and simplify INP logic\n name: '',\n cancelable: false,\n target: null,\n toJSON: () => ({}),\n };\n if (evt.type === \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */) {\n sendTimingIfPointerIsNotCancelled(configuration, timing);\n }\n else {\n sendTiming(timing);\n }\n }, { passive: true, capture: true });\n return { stop: removeEventListeners };\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 */], (event) => {\n if (event.type === \"pointerup\" /* DOM_EVENT.POINTER_UP */) {\n sendTiming(timing);\n }\n }, { once: true });\n }\n function sendTiming(timing) {\n if (!timingSent) {\n timingSent = true;\n removeEventListeners();\n // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than\n // the time between now and when the page was loaded.\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7\n const delay = timing.processingStart - timing.startTime;\n if (delay >= 0 && delay < dateNow() - startTimeStamp) {\n callback(timing);\n }\n }\n }\n}\n//# sourceMappingURL=firstInputPolyfill.js.map","import { addEventListener, Observable, setTimeout, clearTimeout, monitor } from '@datadog/browser-core';\nimport { hasValidResourceEntryDuration, isAllowedRequestUrl } from '../domain/resource/resourceUtils';\nimport { retrieveFirstInputTiming } from './firstInputPolyfill';\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected performance entry\n// eslint-disable-next-line no-restricted-syntax\nexport var RumPerformanceEntryType;\n(function (RumPerformanceEntryType) {\n RumPerformanceEntryType[\"EVENT\"] = \"event\";\n RumPerformanceEntryType[\"FIRST_INPUT\"] = \"first-input\";\n RumPerformanceEntryType[\"LARGEST_CONTENTFUL_PAINT\"] = \"largest-contentful-paint\";\n RumPerformanceEntryType[\"LAYOUT_SHIFT\"] = \"layout-shift\";\n RumPerformanceEntryType[\"LONG_TASK\"] = \"longtask\";\n RumPerformanceEntryType[\"LONG_ANIMATION_FRAME\"] = \"long-animation-frame\";\n RumPerformanceEntryType[\"NAVIGATION\"] = \"navigation\";\n RumPerformanceEntryType[\"PAINT\"] = \"paint\";\n RumPerformanceEntryType[\"RESOURCE\"] = \"resource\";\n RumPerformanceEntryType[\"VISIBILITY_STATE\"] = \"visibility-state\";\n})(RumPerformanceEntryType || (RumPerformanceEntryType = {}));\nexport function createPerformanceObservable(configuration, options) {\n return new Observable((observable) => {\n if (!window.PerformanceObserver) {\n return;\n }\n const handlePerformanceEntries = (entries) => {\n const rumPerformanceEntries = filterRumPerformanceEntries(entries);\n if (rumPerformanceEntries.length > 0) {\n observable.notify(rumPerformanceEntries);\n }\n };\n let timeoutId;\n let isObserverInitializing = true;\n const observer = new PerformanceObserver(monitor((entries) => {\n // In Safari the performance observer callback is synchronous.\n // Because the buffered performance entry list can be quite large we delay the computation to prevent the SDK from blocking the main thread on init\n if (isObserverInitializing) {\n timeoutId = setTimeout(() => handlePerformanceEntries(entries.getEntries()));\n }\n else {\n handlePerformanceEntries(entries.getEntries());\n }\n }));\n try {\n observer.observe(options);\n }\n catch (_a) {\n // Some old browser versions (<= chrome 74 ) don't support the PerformanceObserver type and buffered options\n // In these cases, fallback to getEntriesByType and PerformanceObserver with entryTypes\n // TODO: remove this fallback in the next major version\n const fallbackSupportedEntryTypes = [\n RumPerformanceEntryType.RESOURCE,\n RumPerformanceEntryType.NAVIGATION,\n RumPerformanceEntryType.LONG_TASK,\n RumPerformanceEntryType.PAINT,\n ];\n if (fallbackSupportedEntryTypes.includes(options.type)) {\n if (options.buffered) {\n timeoutId = setTimeout(() => handlePerformanceEntries(performance.getEntriesByType(options.type)));\n }\n try {\n observer.observe({ entryTypes: [options.type] });\n }\n catch (_b) {\n // Old versions of Safari are throwing \"entryTypes contained only unsupported types\"\n // errors when observing only unsupported entry types.\n //\n // We could use `supportPerformanceTimingEvent` to make sure we don't invoke\n // `observer.observe` with an unsupported entry type, but Safari 11 and 12 don't support\n // `Performance.supportedEntryTypes`, so doing so would lose support for these versions\n // even if they do support the entry type.\n return;\n }\n }\n }\n isObserverInitializing = false;\n manageResourceTimingBufferFull(configuration);\n let stopFirstInputTiming;\n if (!supportPerformanceTimingEvent(RumPerformanceEntryType.FIRST_INPUT) &&\n options.type === RumPerformanceEntryType.FIRST_INPUT) {\n ;\n ({ stop: stopFirstInputTiming } = retrieveFirstInputTiming(configuration, (timing) => {\n handlePerformanceEntries([timing]);\n }));\n }\n return () => {\n observer.disconnect();\n if (stopFirstInputTiming) {\n stopFirstInputTiming();\n }\n clearTimeout(timeoutId);\n };\n });\n}\nlet resourceTimingBufferFullListener;\nfunction manageResourceTimingBufferFull(configuration) {\n if (!resourceTimingBufferFullListener && supportPerformanceObject() && 'addEventListener' in performance) {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1559377\n resourceTimingBufferFullListener = addEventListener(configuration, performance, 'resourcetimingbufferfull', () => {\n performance.clearResourceTimings();\n });\n }\n return () => {\n resourceTimingBufferFullListener === null || resourceTimingBufferFullListener === void 0 ? void 0 : resourceTimingBufferFullListener.stop();\n };\n}\nfunction supportPerformanceObject() {\n return window.performance !== undefined && 'getEntries' in performance;\n}\nexport function supportPerformanceTimingEvent(entryType) {\n return (window.PerformanceObserver &&\n PerformanceObserver.supportedEntryTypes !== undefined &&\n PerformanceObserver.supportedEntryTypes.includes(entryType));\n}\nfunction filterRumPerformanceEntries(entries) {\n return entries.filter((entry) => !isForbiddenResource(entry));\n}\nfunction isForbiddenResource(entry) {\n return (entry.entryType === RumPerformanceEntryType.RESOURCE &&\n (!isAllowedRequestUrl(entry.name) || !hasValidResourceEntryDuration(entry)));\n}\n//# sourceMappingURL=performanceObservable.js.map","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 const shadowRoot = node;\n return !!shadowRoot.host && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE && isElementNode(shadowRoot.host);\n}\nexport function hasChildNodes(node) {\n return node.childNodes.length > 0 || isNodeShadowHost(node);\n}\nexport function forEachChildNodes(node, callback) {\n let child = node.firstChild;\n while (child) {\n callback(child);\n child = child.nextSibling;\n }\n if (isNodeShadowHost(node)) {\n callback(node.shadowRoot);\n }\n}\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node) {\n return isNodeShadowRoot(node) ? node.host : node.parentNode;\n}\n//# sourceMappingURL=htmlDomUtils.js.map","import { matchList, monitor, Observable, timeStampNow, setTimeout, clearTimeout } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../browser/performanceObservable';\nimport { isElementNode } from '../browser/htmlDomUtils';\n// Delay to wait for a page activity to validate the tracking process\nexport const PAGE_ACTIVITY_VALIDATION_DELAY = 100;\n// Delay to wait after a page activity to end the tracking process\nexport const PAGE_ACTIVITY_END_DELAY = 100;\nexport const EXCLUDED_MUTATIONS_ATTRIBUTE = 'data-dd-excluded-activity-mutations';\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, windowOpenObservable, configuration, pageActivityEndCallback, maxDuration) {\n const pageActivityObservable = createPageActivityObservable(lifeCycle, domMutationObservable, windowOpenObservable, configuration);\n return doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration);\n}\nexport function doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration) {\n let pageActivityEndTimeoutId;\n let hasCompleted = false;\n const validationTimeoutId = setTimeout(monitor(() => complete({ hadActivity: false })), PAGE_ACTIVITY_VALIDATION_DELAY);\n const maxDurationTimeoutId = maxDuration !== undefined\n ? setTimeout(monitor(() => complete({ hadActivity: true, end: timeStampNow() })), maxDuration)\n : undefined;\n const pageActivitySubscription = pageActivityObservable.subscribe(({ isBusy }) => {\n clearTimeout(validationTimeoutId);\n clearTimeout(pageActivityEndTimeoutId);\n const lastChangeTime = timeStampNow();\n if (!isBusy) {\n pageActivityEndTimeoutId = setTimeout(monitor(() => complete({ hadActivity: true, end: lastChangeTime })), PAGE_ACTIVITY_END_DELAY);\n }\n });\n const 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 { stop };\n}\nexport function createPageActivityObservable(lifeCycle, domMutationObservable, windowOpenObservable, configuration) {\n return new Observable((observable) => {\n const subscriptions = [];\n let firstRequestIndex;\n let pendingRequestsCount = 0;\n subscriptions.push(domMutationObservable.subscribe((mutations) => {\n if (!mutations.every(isExcludedMutation)) {\n notifyPageActivity();\n }\n }), windowOpenObservable.subscribe(notifyPageActivity), createPerformanceObservable(configuration, { type: RumPerformanceEntryType.RESOURCE }).subscribe((entries) => {\n if (entries.some((entry) => !isExcludedUrl(configuration, entry.name))) {\n notifyPageActivity();\n }\n }), lifeCycle.subscribe(7 /* LifeCycleEventType.REQUEST_STARTED */, (startEvent) => {\n if (isExcludedUrl(configuration, startEvent.url)) {\n return;\n }\n if (firstRequestIndex === undefined) {\n firstRequestIndex = startEvent.requestIndex;\n }\n pendingRequestsCount += 1;\n notifyPageActivity();\n }), lifeCycle.subscribe(8 /* LifeCycleEventType.REQUEST_COMPLETED */, (request) => {\n if (isExcludedUrl(configuration, request.url) ||\n 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 return () => {\n subscriptions.forEach((s) => s.unsubscribe());\n };\n function notifyPageActivity() {\n observable.notify({ isBusy: pendingRequestsCount > 0 });\n }\n });\n}\nfunction isExcludedUrl(configuration, requestUrl) {\n return matchList(configuration.excludedActivityUrls, requestUrl);\n}\nfunction isExcludedMutation(mutation) {\n const targetElement = mutation.type === 'characterData' ? mutation.target.parentElement : mutation.target;\n return Boolean(targetElement &&\n isElementNode(targetElement) &&\n targetElement.matches(`[${EXCLUDED_MUTATIONS_ATTRIBUTE}], [${EXCLUDED_MUTATIONS_ATTRIBUTE}] *`));\n}\n//# sourceMappingURL=waitPageActivityEnd.js.map","/**\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 const DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE = 'data-dd-action-name';\nexport const ACTION_NAME_PLACEHOLDER = 'Masked Element';\nexport const ACTION_NAME_MASK = 'xxx';\n//# sourceMappingURL=actionNameConstants.js.map","import { DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE } from './action/actionNameConstants';\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 const STABLE_ATTRIBUTES = [\n DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,\n // Common test attributes (list provided by google recorder)\n 'data-testid',\n 'data-test',\n 'data-qa',\n 'data-cy',\n 'data-test-id',\n 'data-qa-id',\n 'data-testing',\n // FullStory decorator attributes:\n 'data-component',\n 'data-element',\n 'data-source-file',\n];\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.\nconst 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.\nconst UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS = [\n getStableAttributeSelector,\n getClassSelector,\n getTagNameSelector,\n];\nexport function getSelectorFromElement(targetElement, actionNameAttribute) {\n if (!targetElement.isConnected) {\n // We cannot compute a selector for a detached element, as we don't have access to all of its\n // parents, and we cannot determine if it's unique in the document.\n return;\n }\n let targetElementSelector;\n let currentElement = targetElement;\n while (currentElement && currentElement.nodeName !== 'HTML') {\n const globallyUniqueSelector = findSelector(currentElement, GLOBALLY_UNIQUE_SELECTOR_GETTERS, isSelectorUniqueGlobally, actionNameAttribute, targetElementSelector);\n if (globallyUniqueSelector) {\n return globallyUniqueSelector;\n }\n const uniqueSelectorAmongChildren = findSelector(currentElement, UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS, isSelectorUniqueAmongSiblings, actionNameAttribute, targetElementSelector);\n targetElementSelector =\n uniqueSelectorAmongChildren || combineSelector(getPositionSelector(currentElement), targetElementSelector);\n currentElement = currentElement.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 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.\n return /[0-9]/.test(value);\n}\nfunction getIDSelector(element) {\n if (element.id && !isGeneratedValue(element.id)) {\n return `#${CSS.escape(element.id)}`;\n }\n}\nfunction getClassSelector(element) {\n if (element.tagName === 'BODY') {\n return;\n }\n const classList = element.classList;\n for (let i = 0; i < classList.length; i += 1) {\n const className = classList[i];\n if (isGeneratedValue(className)) {\n continue;\n }\n return `${CSS.escape(element.tagName)}.${CSS.escape(className)}`;\n }\n}\nfunction getTagNameSelector(element) {\n return CSS.escape(element.tagName);\n}\nfunction getStableAttributeSelector(element, actionNameAttribute) {\n if (actionNameAttribute) {\n const selector = getAttributeSelector(actionNameAttribute);\n if (selector) {\n return selector;\n }\n }\n for (const attributeName of STABLE_ATTRIBUTES) {\n const selector = getAttributeSelector(attributeName);\n if (selector) {\n return selector;\n }\n }\n function getAttributeSelector(attributeName) {\n if (element.hasAttribute(attributeName)) {\n return `${CSS.escape(element.tagName)}[${attributeName}=\"${CSS.escape(element.getAttribute(attributeName))}\"]`;\n }\n }\n}\nfunction getPositionSelector(element) {\n let sibling = element.parentElement.firstElementChild;\n let elementIndex = 1;\n while (sibling && sibling !== element) {\n if (sibling.tagName === element.tagName) {\n elementIndex += 1;\n }\n sibling = sibling.nextElementSibling;\n }\n return `${CSS.escape(element.tagName)}:nth-of-type(${elementIndex})`;\n}\nfunction findSelector(element, selectorGetters, predicate, actionNameAttribute, childSelector) {\n for (const selectorGetter of selectorGetters) {\n const elementSelector = selectorGetter(element, actionNameAttribute);\n if (!elementSelector) {\n continue;\n }\n if (predicate(element, elementSelector, childSelector)) {\n return combineSelector(elementSelector, childSelector);\n }\n }\n}\n/**\n * Check whether the selector is unique among the whole document.\n */\nfunction isSelectorUniqueGlobally(element, elementSelector, childSelector) {\n return element.ownerDocument.querySelectorAll(combineSelector(elementSelector, childSelector)).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 > CHILD_SELECTOR\" returns a single element.\n *\n * @param currentElement - the element being considered while iterating over the target\n * element ancestors.\n * @param currentElementSelector - a selector that matches the current element. That\n * selector is not a composed selector (i.e. it might be a single tag name, class name...).\n * @param childSelector - child selector is a selector that targets a descendant\n * of the current element. When undefined, the current element is the target element.\n *\n * # Scope selector usage\n *\n * When composed together, the final selector will be joined with `>` operators to make sure we\n * target direct descendants at each level. In this function, we'll use `querySelector` to check if\n * a selector matches descendants of the current element. But by default, the query selector match\n * elements at any level. Example:\n *\n * ```html\n * <main>\n * <div>\n * <span></span>\n * </div>\n * <marquee>\n * <div>\n * <span></span>\n * </div>\n * </marquee>\n * </main>\n * ```\n *\n * `sibling.querySelector('DIV > SPAN')` will match both span elements, so we would consider the\n * selector to be not unique, even if it is unique when we'll compose it with the parent with a `>`\n * operator (`MAIN > DIV > SPAN`).\n *\n * To avoid this, we can use the `:scope` selector to make sure the selector starts from the current\n * sibling (i.e. `sibling.querySelector('DIV:scope > SPAN')` will only match the first span).\n *\n * [1]: https://developer.mozilla.org/fr/docs/Web/CSS/:scope\n *\n * # Performance considerations\n *\n * We compute selectors in performance-critical operations (ex: during a click), so we need to make\n * sure the function is as fast as possible. We observed that naively using `querySelectorAll` to\n * check if the selector matches more than 1 element is quite expensive, so we want to avoid it.\n *\n * Because we are iterating the DOM upward and we use that function at every level, we know the\n * child selector is already unique among the current element children, so we don't need to check\n * for the current element subtree.\n *\n * Instead, we can focus on the current element siblings. If we find a single element matching the\n * selector within a sibling, we know that it's not unique. This allows us to use `querySelector`\n * (or `matches`, when the current element is the target element) instead of `querySelectorAll`.\n */\nexport function isSelectorUniqueAmongSiblings(currentElement, currentElementSelector, childSelector) {\n let isSiblingMatching;\n if (childSelector === undefined) {\n // If the child selector is undefined (meaning `currentElement` is the target element, not one\n // of its ancestor), we need to use `matches` to check if the sibling is matching the selector,\n // as `querySelector` only returns a descendant of the element.\n isSiblingMatching = (sibling) => sibling.matches(currentElementSelector);\n }\n else {\n const scopedSelector = combineSelector(`${currentElementSelector}:scope`, childSelector);\n isSiblingMatching = (sibling) => sibling.querySelector(scopedSelector) !== null;\n }\n const parent = currentElement.parentElement;\n let sibling = parent.firstElementChild;\n while (sibling) {\n if (sibling !== currentElement && isSiblingMatching(sibling)) {\n return false;\n }\n sibling = sibling.nextElementSibling;\n }\n return true;\n}\nfunction combineSelector(parent, child) {\n return child ? `${parent}>${child}` : parent;\n}\n//# sourceMappingURL=getSelectorFromElement.js.map","import { DefaultPrivacyLevel } from '@datadog/browser-core';\nexport const NodePrivacyLevel = {\n IGNORE: 'ignore',\n HIDDEN: 'hidden',\n ALLOW: DefaultPrivacyLevel.ALLOW,\n MASK: DefaultPrivacyLevel.MASK,\n MASK_USER_INPUT: DefaultPrivacyLevel.MASK_USER_INPUT,\n MASK_UNLESS_ALLOWLISTED: DefaultPrivacyLevel.MASK_UNLESS_ALLOWLISTED,\n};\nexport const PRIVACY_ATTR_NAME = 'data-dd-privacy';\n// Privacy Attrs\nexport const PRIVACY_ATTR_VALUE_ALLOW = 'allow';\nexport const PRIVACY_ATTR_VALUE_MASK = 'mask';\nexport const PRIVACY_ATTR_VALUE_MASK_USER_INPUT = 'mask-user-input';\nexport const PRIVACY_ATTR_VALUE_MASK_UNLESS_ALLOWLISTED = 'mask-unless-allowlisted';\nexport const PRIVACY_ATTR_VALUE_HIDDEN = 'hidden';\n// Privacy Classes - not all customers can set plain HTML attributes, so support classes too\nexport const PRIVACY_CLASS_PREFIX = 'dd-privacy-';\n// Private Replacement Templates\nexport const CENSORED_STRING_MARK = '***';\nexport const CENSORED_IMG_MARK = 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==';\nexport const 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};\nexport const TEXT_MASKING_CHAR = 'x';\nexport function getPrivacySelector(privacyLevel) {\n return `[${PRIVACY_ATTR_NAME}=\"${privacyLevel}\"], .${PRIVACY_CLASS_PREFIX}${privacyLevel}`;\n}\n//# sourceMappingURL=privacyConstants.js.map","import { isElementNode, getParentNode, isTextNode } from '../browser/htmlDomUtils';\nimport { NodePrivacyLevel, FORM_PRIVATE_TAG_NAMES, CENSORED_STRING_MARK, getPrivacySelector, TEXT_MASKING_CHAR, PRIVACY_ATTR_NAME, } from './privacyConstants';\nimport { STABLE_ATTRIBUTES } from './getSelectorFromElement';\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, cache) {\n if (cache && cache.has(node)) {\n return cache.get(node);\n }\n const parentNode = getParentNode(node);\n const parentNodePrivacyLevel = parentNode\n ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel, cache)\n : defaultPrivacyLevel;\n const selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node);\n const nodePrivacyLevel = reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel);\n if (cache) {\n cache.set(node, nodePrivacyLevel);\n }\n return nodePrivacyLevel;\n}\n/**\n * 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.MASK_UNLESS_ALLOWLISTED:\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 // 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 const 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 const autocomplete = inputElement.getAttribute('autocomplete');\n // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year/new-password/current-password]\n if (autocomplete && (autocomplete.startsWith('cc-') || autocomplete.endsWith('-password'))) {\n return NodePrivacyLevel.MASK;\n }\n }\n // Check HTML privacy attributes and classes\n if (node.matches(getPrivacySelector(NodePrivacyLevel.HIDDEN))) {\n return NodePrivacyLevel.HIDDEN;\n }\n if (node.matches(getPrivacySelector(NodePrivacyLevel.MASK))) {\n return NodePrivacyLevel.MASK;\n }\n if (node.matches(getPrivacySelector(NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED))) {\n return NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED;\n }\n if (node.matches(getPrivacySelector(NodePrivacyLevel.MASK_USER_INPUT))) {\n return NodePrivacyLevel.MASK_USER_INPUT;\n }\n if (node.matches(getPrivacySelector(NodePrivacyLevel.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_UNLESS_ALLOWLISTED:\n if (isTextNode(node)) {\n // Always return true if our parent is a form element, like MASK_USER_INPUT.\n // Otherwise, decide whether to mask based on the allowlist.\n return isFormElement(node.parentNode) ? true : !isAllowlisted(node.textContent || '');\n }\n // Always return true if we're a form element, like MASK_USER_INPUT.\n // Otherwise, return false; MASK_UNLESS_ALLOWLISTED only directly masks text nodes.\n return isFormElement(node);\n case NodePrivacyLevel.MASK_USER_INPUT:\n return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node);\n default:\n return false;\n }\n}\nexport function shouldMaskAttribute(tagName, attributeName, attributeValue, nodePrivacyLevel, configuration) {\n if (nodePrivacyLevel !== NodePrivacyLevel.MASK && nodePrivacyLevel !== NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED) {\n return false;\n }\n if (attributeName === PRIVACY_ATTR_NAME ||\n STABLE_ATTRIBUTES.includes(attributeName) ||\n attributeName === configuration.actionNameAttribute) {\n return false;\n }\n switch (attributeName) {\n case 'title':\n case 'alt':\n case 'placeholder':\n case 'aria-label':\n case 'name':\n return true;\n }\n if (tagName === 'A' && attributeName === 'href') {\n return true;\n }\n if (tagName === 'IFRAME' && attributeName === 'srcdoc') {\n return true;\n }\n if (attributeValue && attributeName.startsWith('data-')) {\n return true;\n }\n if ((tagName === 'IMG' || tagName === 'SOURCE') && (attributeName === 'src' || attributeName === 'srcset')) {\n return true;\n }\n return false;\n}\nfunction isFormElement(node) {\n if (!node || node.nodeType !== node.ELEMENT_NODE) {\n return false;\n }\n const 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 */\nconst censorText = (text) => text.replace(/\\S/g, TEXT_MASKING_CHAR);\nexport function getTextContent(textNode, 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 const parentTagName = (_a = textNode.parentElement) === null || _a === void 0 ? void 0 : _a.tagName;\n let textContent = textNode.textContent || '';\n const shouldIgnoreWhiteSpace = parentTagName === 'HEAD';\n if (shouldIgnoreWhiteSpace && !textContent.trim()) {\n return;\n }\n const nodePrivacyLevel = parentNodePrivacyLevel;\n const isScript = parentTagName === 'SCRIPT';\n if (isScript) {\n // For perf reasons, we don't record script (heuristic)\n textContent = CENSORED_STRING_MARK;\n }\n else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n // Should never occur, but just in case, we set to CENSORED_MARK.\n textContent = CENSORED_STRING_MARK;\n }\n else if (shouldMaskNode(textNode, nodePrivacyLevel)) {\n if (\n // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP\n parentTagName === 'DATALIST' ||\n parentTagName === 'SELECT' ||\n parentTagName === 'OPTGROUP') {\n if (!textContent.trim()) {\n return;\n }\n }\n else if (parentTagName === 'OPTION') {\n // <Option> has low entropy in charset + text length, so use `CENSORED_STRING_MARK` when masked\n textContent = CENSORED_STRING_MARK;\n }\n else if (nodePrivacyLevel === NodePrivacyLevel.MASK_UNLESS_ALLOWLISTED) {\n textContent = maskDisallowedTextContent(textContent);\n }\n else {\n textContent = censorText(textContent);\n }\n }\n return textContent;\n}\n/**\n * TODO: Preserve CSS element order, and record the presence of the tag, just don't render\n * We don't need this logic on the recorder side.\n * For security related meta's, customer can mask themmanually given they\n * are easy to identify in the HEAD tag.\n */\nexport function shouldIgnoreElement(element) {\n if (element.nodeName === 'SCRIPT') {\n return true;\n }\n if (element.nodeName === 'LINK') {\n const relAttribute = getLowerCaseAttribute('rel');\n return (\n // Link as script - Ignore only when rel=preload, modulepreload or prefetch\n (/preload|prefetch/i.test(relAttribute) && getLowerCaseAttribute('as') === 'script') ||\n // Favicons\n relAttribute === 'shortcut icon' ||\n relAttribute === 'icon');\n }\n if (element.nodeName === 'META') {\n const nameAttribute = getLowerCaseAttribute('name');\n const relAttribute = getLowerCaseAttribute('rel');\n const propertyAttribute = getLowerCaseAttribute('property');\n return (\n // Favicons\n /^msapplication-tile(image|color)$/.test(nameAttribute) ||\n nameAttribute === 'application-name' ||\n relAttribute === 'icon' ||\n relAttribute === 'apple-touch-icon' ||\n relAttribute === 'shortcut icon' ||\n // Description\n nameAttribute === 'keywords' ||\n nameAttribute === 'description' ||\n // Social\n /^(og|twitter|fb):/.test(propertyAttribute) ||\n /^(og|twitter):/.test(nameAttribute) ||\n nameAttribute === 'pinterest' ||\n // Robots\n nameAttribute === 'robots' ||\n nameAttribute === 'googlebot' ||\n nameAttribute === 'bingbot' ||\n // Http headers. Ex: X-UA-Compatible, Content-Type, Content-Language, cache-control,\n // X-Translated-By\n element.hasAttribute('http-equiv') ||\n // Authorship\n nameAttribute === 'author' ||\n nameAttribute === 'generator' ||\n nameAttribute === 'framework' ||\n nameAttribute === 'publisher' ||\n nameAttribute === 'progid' ||\n /^article:/.test(propertyAttribute) ||\n /^product:/.test(propertyAttribute) ||\n // Verification\n nameAttribute === 'google-site-verification' ||\n nameAttribute === 'yandex-verification' ||\n nameAttribute === 'csrf-token' ||\n nameAttribute === 'p:domain_verify' ||\n nameAttribute === 'verify-v1' ||\n nameAttribute === 'verification' ||\n nameAttribute === 'shopify-checkout-api-token');\n }\n function getLowerCaseAttribute(name) {\n return (element.getAttribute(name) || '').toLowerCase();\n }\n return false;\n}\nexport function isAllowlisted(text) {\n var _a;\n if (!text || !text.trim()) {\n return true;\n }\n // We are using toLocaleLowerCase when adding to the allowlist to avoid case sensitivity\n // so we need to do the same here\n return ((_a = window.$DD_ALLOW) === null || _a === void 0 ? void 0 : _a.has(text.toLocaleLowerCase())) || false;\n}\nexport function maskDisallowedTextContent(text, fixedMask) {\n if (isAllowlisted(text)) {\n return text;\n }\n return fixedMask || censorText(text);\n}\n//# sourceMappingURL=privacy.js.map","import { ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core';\nexport const MAX_DURATION_BETWEEN_CLICKS = ONE_SECOND;\nexport const MAX_DISTANCE_BETWEEN_CLICKS = 100;\nexport function createClickChain(firstClick, onFinalize) {\n const bufferedClicks = [];\n let status = 0 /* ClickChainStatus.WaitingForMoreClicks */;\n let 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((click) => click.isStopped())) {\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: (click) => {\n if (status !== 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n return false;\n }\n if (bufferedClicks.length > 0 &&\n !areEventsSimilar(bufferedClicks[bufferedClicks.length - 1].event, click.event)) {\n dontAcceptMoreClick();\n return false;\n }\n appendClick(click);\n return true;\n },\n 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 &&\n mouseEventDistance(first, second) <= MAX_DISTANCE_BETWEEN_CLICKS &&\n 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}\n//# sourceMappingURL=clickChain.js.map","import { ExperimentalFeature, isExperimentalFeatureEnabled, safeTruncate } from '@datadog/browser-core';\nimport { getPrivacySelector, NodePrivacyLevel } from '../privacyConstants';\nimport { getNodePrivacyLevel, maskDisallowedTextContent, shouldMaskNode, shouldMaskAttribute } from '../privacy';\nimport { isElementNode } from '../../browser/htmlDomUtils';\nimport { DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE, ACTION_NAME_PLACEHOLDER, } from './actionNameConstants';\nexport function getActionNameFromElement(element, rumConfiguration, nodePrivacyLevel = NodePrivacyLevel.ALLOW) {\n const nodePrivacyLevelCache = new Map();\n const { actionNameAttribute: userProgrammaticAttribute } = rumConfiguration;\n // Proceed to get the action name in two steps:\n // * first, get the name programmatically, explicitly defined by the user.\n // * then, if privacy is set to mask, return a placeholder for the undefined.\n // * if privacy is not set to mask, use strategies that are known to return good results.\n // Those strategies will be used on 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 const defaultActionName = getActionNameFromElementProgrammatically(element, DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE) ||\n (userProgrammaticAttribute && getActionNameFromElementProgrammatically(element, userProgrammaticAttribute));\n if (defaultActionName) {\n return { name: defaultActionName, nameSource: \"custom_attribute\" /* ActionNameSource.CUSTOM_ATTRIBUTE */ };\n }\n else if (nodePrivacyLevel === NodePrivacyLevel.MASK) {\n return { name: ACTION_NAME_PLACEHOLDER, nameSource: \"mask_placeholder\" /* ActionNameSource.MASK_PLACEHOLDER */ };\n }\n return (getActionNameFromElementForStrategies(element, priorityStrategies, rumConfiguration, nodePrivacyLevelCache) ||\n getActionNameFromElementForStrategies(element, fallbackStrategies, rumConfiguration, nodePrivacyLevelCache) || {\n name: '',\n nameSource: \"blank\" /* ActionNameSource.BLANK */,\n });\n}\nfunction getActionNameFromElementProgrammatically(targetElement, programmaticAttribute) {\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 const elementWithAttribute = targetElement.closest(`[${programmaticAttribute}]`);\n if (!elementWithAttribute) {\n return;\n }\n const name = elementWithAttribute.getAttribute(programmaticAttribute);\n return truncate(normalizeWhitespace(name.trim()));\n}\nconst priorityStrategies = [\n // associated LABEL text\n (element, rumConfiguration, nodePrivacyLevelCache) => {\n if ('labels' in element && element.labels && element.labels.length > 0) {\n return getActionNameFromTextualContent(element.labels[0], rumConfiguration, nodePrivacyLevelCache);\n }\n },\n // INPUT button (and associated) value\n (element) => {\n if (element.nodeName === 'INPUT') {\n const input = element;\n const type = input.getAttribute('type');\n if (type === 'button' || type === 'submit' || type === 'reset') {\n return { name: input.value, nameSource: \"text_content\" /* ActionNameSource.TEXT_CONTENT */ };\n }\n }\n },\n // BUTTON, LABEL or button-like element text\n (element, rumConfiguration, nodePrivacyLevelCache) => {\n if (element.nodeName === 'BUTTON' || element.nodeName === 'LABEL' || element.getAttribute('role') === 'button') {\n return getActionNameFromTextualContent(element, rumConfiguration, nodePrivacyLevelCache);\n }\n },\n (element, rumConfiguration, nodePrivacyLevelCache) => getActionNameFromStandardAttribute(element, 'aria-label', rumConfiguration, nodePrivacyLevelCache),\n // associated element text designated by the aria-labelledby attribute\n (element, rumConfiguration, nodePrivacyLevelCache) => {\n const labelledByAttribute = element.getAttribute('aria-labelledby');\n if (labelledByAttribute) {\n return {\n name: labelledByAttribute\n .split(/\\s+/)\n .map((id) => getElementById(element, id))\n .filter((label) => Boolean(label))\n .map((element) => getTextualContent(element, rumConfiguration, nodePrivacyLevelCache))\n .join(' '),\n nameSource: \"text_content\" /* ActionNameSource.TEXT_CONTENT */,\n };\n }\n },\n (element, rumConfiguration, nodePrivacyLevelCache) => getActionNameFromStandardAttribute(element, 'alt', rumConfiguration, nodePrivacyLevelCache),\n (element, rumConfiguration, nodePrivacyLevelCache) => getActionNameFromStandardAttribute(element, 'name', rumConfiguration, nodePrivacyLevelCache),\n (element, rumConfiguration, nodePrivacyLevelCache) => getActionNameFromStandardAttribute(element, 'title', rumConfiguration, nodePrivacyLevelCache),\n (element, rumConfiguration, nodePrivacyLevelCache) => getActionNameFromStandardAttribute(element, 'placeholder', rumConfiguration, nodePrivacyLevelCache),\n // SELECT first OPTION text\n (element, rumConfiguration, nodePrivacyLevelCache) => {\n if ('options' in element && element.options.length > 0) {\n return getActionNameFromTextualContent(element.options[0], rumConfiguration, nodePrivacyLevelCache);\n }\n },\n];\nconst fallbackStrategies = [\n (element, rumConfiguration, nodePrivacyLevelCache) => getActionNameFromTextualContent(element, rumConfiguration, nodePrivacyLevelCache),\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 */\nconst MAX_PARENTS_TO_CONSIDER = 10;\nfunction getActionNameFromElementForStrategies(targetElement, strategies, rumConfiguration, nodePrivacyLevelCache) {\n let element = targetElement;\n let recursionCounter = 0;\n while (recursionCounter <= MAX_PARENTS_TO_CONSIDER &&\n element &&\n element.nodeName !== 'BODY' &&\n element.nodeName !== 'HTML' &&\n element.nodeName !== 'HEAD') {\n for (const strategy of strategies) {\n const actionName = strategy(element, rumConfiguration, nodePrivacyLevelCache);\n if (actionName) {\n const { name, nameSource } = actionName;\n const trimmedName = name && name.trim();\n if (trimmedName) {\n return { name: truncate(normalizeWhitespace(trimmedName)), nameSource };\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 ? `${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 getActionNameFromStandardAttribute(element, attribute, rumConfiguration, nodePrivacyLevelCache) {\n const { enablePrivacyForActionName, defaultPrivacyLevel } = rumConfiguration;\n let attributeValue = element.getAttribute(attribute);\n if (attributeValue && enablePrivacyForActionName) {\n const nodePrivacyLevel = getNodePrivacyLevel(element, defaultPrivacyLevel, nodePrivacyLevelCache);\n if (shouldMaskAttribute(element.tagName, attribute, attributeValue, nodePrivacyLevel, rumConfiguration)) {\n attributeValue = maskDisallowedTextContent(attributeValue, ACTION_NAME_PLACEHOLDER);\n }\n }\n else if (!attributeValue) {\n attributeValue = '';\n }\n return {\n name: attributeValue,\n nameSource: \"standard_attribute\" /* ActionNameSource.STANDARD_ATTRIBUTE */,\n };\n}\nfunction getActionNameFromTextualContent(element, rumConfiguration, nodePrivacyLevelCache) {\n return {\n name: getTextualContent(element, rumConfiguration, nodePrivacyLevelCache) || '',\n nameSource: \"text_content\" /* ActionNameSource.TEXT_CONTENT */,\n };\n}\nfunction getTextualContent(element, rumConfiguration, nodePrivacyLevelCache) {\n if (element.isContentEditable) {\n return;\n }\n const { enablePrivacyForActionName, actionNameAttribute: userProgrammaticAttribute, defaultPrivacyLevel, } = rumConfiguration;\n if (isExperimentalFeatureEnabled(ExperimentalFeature.USE_TREE_WALKER_FOR_ACTION_NAME)) {\n return getTextualContentWithTreeWalker(element, userProgrammaticAttribute, enablePrivacyForActionName, defaultPrivacyLevel, nodePrivacyLevelCache);\n }\n if ('innerText' in element) {\n let text = element.innerText;\n const removeTextFromElements = (query) => {\n const list = element.querySelectorAll(query);\n for (let index = 0; index < list.length; index += 1) {\n const element = list[index];\n if ('innerText' in element) {\n const textToReplace = element.innerText;\n if (textToReplace && textToReplace.trim().length > 0) {\n text = text.replace(textToReplace, '');\n }\n }\n }\n };\n // remove the text of elements with programmatic attribute value\n removeTextFromElements(`[${DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE}]`);\n if (userProgrammaticAttribute) {\n removeTextFromElements(`[${userProgrammaticAttribute}]`);\n }\n if (enablePrivacyForActionName) {\n // remove the text of elements with privacy override\n removeTextFromElements(`${getPrivacySelector(NodePrivacyLevel.HIDDEN)}, ${getPrivacySelector(NodePrivacyLevel.MASK)}`);\n }\n return text;\n }\n return element.textContent;\n}\nfunction getTextualContentWithTreeWalker(element, userProgrammaticAttribute, privacyEnabledActionName, defaultPrivacyLevel, nodePrivacyLevelCache) {\n const walker = document.createTreeWalker(element, \n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, rejectInvisibleOrMaskedElementsFilter);\n let text = '';\n while (walker.nextNode()) {\n const node = walker.currentNode;\n if (isElementNode(node)) {\n if (\n // Following InnerText rendering spec https://html.spec.whatwg.org/multipage/dom.html#rendered-text-collection-steps\n node.nodeName === 'BR' ||\n node.nodeName === 'P' ||\n ['block', 'flex', 'grid', 'list-item', 'table', 'table-caption'].includes(getComputedStyle(node).display)) {\n text += ' ';\n }\n continue; // skip element nodes\n }\n text += node.textContent || '';\n }\n return text.replace(/\\s+/g, ' ').trim();\n function rejectInvisibleOrMaskedElementsFilter(node) {\n const nodeSelfPrivacyLevel = getNodePrivacyLevel(node, defaultPrivacyLevel, nodePrivacyLevelCache);\n if (privacyEnabledActionName && nodeSelfPrivacyLevel && shouldMaskNode(node, nodeSelfPrivacyLevel)) {\n return NodeFilter.FILTER_REJECT;\n }\n if (isElementNode(node)) {\n if (node.hasAttribute(DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE) ||\n (userProgrammaticAttribute && node.hasAttribute(userProgrammaticAttribute))) {\n return NodeFilter.FILTER_REJECT;\n }\n const style = getComputedStyle(node);\n if (style.visibility !== 'visible' ||\n style.display === 'none' ||\n (style.contentVisibility && style.contentVisibility !== 'visible')\n // contentVisibility is not supported in all browsers, so we need to check it\n ) {\n return NodeFilter.FILTER_REJECT;\n }\n }\n return NodeFilter.FILTER_ACCEPT;\n }\n}\n//# sourceMappingURL=getActionNameFromElement.js.map","import { addEventListener } from '@datadog/browser-core';\nexport function listenActionEvents(configuration, { onPointerDown, onPointerUp }) {\n let selectionEmptyAtPointerDown;\n let userActivity = {\n selection: false,\n input: false,\n scroll: false,\n };\n let clickContext;\n const listeners = [\n addEventListener(configuration, window, \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */, (event) => {\n if (isValidPointerEvent(event)) {\n selectionEmptyAtPointerDown = isSelectionEmpty();\n userActivity = {\n selection: false,\n input: false,\n scroll: false,\n };\n clickContext = onPointerDown(event);\n }\n }, { capture: true }),\n addEventListener(configuration, window, \"selectionchange\" /* DOM_EVENT.SELECTION_CHANGE */, () => {\n if (!selectionEmptyAtPointerDown || !isSelectionEmpty()) {\n userActivity.selection = true;\n }\n }, { capture: true }),\n addEventListener(configuration, window, \"scroll\" /* DOM_EVENT.SCROLL */, () => {\n userActivity.scroll = true;\n }, { capture: true, passive: true }),\n addEventListener(configuration, window, \"pointerup\" /* DOM_EVENT.POINTER_UP */, (event) => {\n if (isValidPointerEvent(event) && clickContext) {\n // Use a scoped variable to make sure the value is not changed by other clicks\n const localUserActivity = userActivity;\n onPointerUp(clickContext, event, () => localUserActivity);\n clickContext = undefined;\n }\n }, { capture: true }),\n addEventListener(configuration, window, \"input\" /* DOM_EVENT.INPUT */, () => {\n userActivity.input = true;\n }, { capture: true }),\n ];\n return {\n stop: () => {\n listeners.forEach((listener) => listener.stop());\n },\n };\n}\nfunction isSelectionEmpty() {\n const 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}\n//# sourceMappingURL=listenActionEvents.js.map","import { ONE_SECOND } from '@datadog/browser-core';\nimport { FrustrationType } from '../../rawRumEvent.types';\nconst MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE = 3;\nexport function computeFrustration(clicks, rageClick) {\n if (isRage(clicks)) {\n rageClick.addFrustration(FrustrationType.RAGE_CLICK);\n if (clicks.some(isDead)) {\n rageClick.addFrustration(FrustrationType.DEAD_CLICK);\n }\n if (rageClick.hasError) {\n rageClick.addFrustration(FrustrationType.ERROR_CLICK);\n }\n return { isRage: true };\n }\n const hasSelectionChanged = clicks.some((click) => click.getUserActivity().selection);\n clicks.forEach((click) => {\n if (click.hasError) {\n click.addFrustration(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(FrustrationType.DEAD_CLICK);\n }\n });\n return { isRage: false };\n}\nexport function isRage(clicks) {\n if (clicks.some((click) => click.getUserActivity().selection || click.getUserActivity().scroll)) {\n return false;\n }\n for (let 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 <=\n ONE_SECOND) {\n return true;\n }\n }\n return false;\n}\nconst 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\"]),' +\n 'textarea,' +\n 'select,' +\n // contenteditable and their descendants don't always trigger meaningful changes when manipulated\n '[contenteditable],' +\n '[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],' +\n 'a[href] *';\nexport function isDead(click) {\n if (click.hasPageActivity || click.getUserActivity().input || click.getUserActivity().scroll) {\n return false;\n }\n let target = click.event.target;\n if (target.tagName === 'LABEL' && target.hasAttribute('for')) {\n target = document.getElementById(target.getAttribute('for'));\n }\n return !target || !target.matches(DEAD_CLICK_EXCLUDE_SELECTOR);\n}\n//# sourceMappingURL=computeFrustration.js.map","import { elapsed, ONE_SECOND, relativeNow } from '@datadog/browser-core';\n// Maximum duration for click actions\nexport const CLICK_ACTION_MAX_DURATION = 10 * ONE_SECOND;\nexport const interactionSelectorCache = new Map();\nexport function getInteractionSelector(relativeTimestamp) {\n const selector = interactionSelectorCache.get(relativeTimestamp);\n interactionSelectorCache.delete(relativeTimestamp);\n return selector;\n}\nexport function updateInteractionSelector(relativeTimestamp, selector) {\n interactionSelectorCache.set(relativeTimestamp, selector);\n interactionSelectorCache.forEach((_, relativeTimestamp) => {\n if (elapsed(relativeTimestamp, relativeNow()) > CLICK_ACTION_MAX_DURATION) {\n interactionSelectorCache.delete(relativeTimestamp);\n }\n });\n}\n//# sourceMappingURL=interactionSelectorCache.js.map","import { timeStampNow, Observable, getRelativeTime, ONE_MINUTE, generateUUID, elapsed, createValueHistory, PageExitReason, relativeToClocks, } from '@datadog/browser-core';\nimport { ActionType } from '../../rawRumEvent.types';\nimport { trackEventCounts } from '../trackEventCounts';\nimport { PAGE_ACTIVITY_VALIDATION_DELAY, waitPageActivityEnd } from '../waitPageActivityEnd';\nimport { getSelectorFromElement } from '../getSelectorFromElement';\nimport { getNodePrivacyLevel } from '../privacy';\nimport { NodePrivacyLevel } from '../privacyConstants';\nimport { createClickChain } from './clickChain';\nimport { getActionNameFromElement } from './getActionNameFromElement';\nimport { listenActionEvents } from './listenActionEvents';\nimport { computeFrustration } from './computeFrustration';\nimport { CLICK_ACTION_MAX_DURATION, updateInteractionSelector } from './interactionSelectorCache';\nexport const ACTION_CONTEXT_TIME_OUT_DELAY = 5 * ONE_MINUTE; // arbitrary\nexport function trackClickActions(lifeCycle, domMutationObservable, windowOpenObservable, configuration) {\n const history = createValueHistory({ expireDelay: ACTION_CONTEXT_TIME_OUT_DELAY });\n const stopObservable = new Observable();\n let currentClickChain;\n lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, () => {\n history.reset();\n });\n lifeCycle.subscribe(5 /* LifeCycleEventType.VIEW_ENDED */, stopClickChain);\n lifeCycle.subscribe(11 /* LifeCycleEventType.PAGE_MAY_EXIT */, (event) => {\n if (event.reason === PageExitReason.UNLOADING) {\n stopClickChain();\n }\n });\n const { stop: stopActionEventsListener } = listenActionEvents(configuration, {\n onPointerDown: (pointerDownEvent) => processPointerDown(configuration, lifeCycle, domMutationObservable, pointerDownEvent, windowOpenObservable),\n onPointerUp: ({ clickActionBase, hadActivityOnPointerDown }, startEvent, getUserActivity) => {\n startClickAction(configuration, lifeCycle, domMutationObservable, windowOpenObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown);\n },\n });\n const actionContexts = {\n findActionId: (startTime) => history.findAll(startTime),\n };\n return {\n stop: () => {\n stopClickChain();\n stopObservable.notify();\n stopActionEventsListener();\n },\n actionContexts,\n };\n function appendClickToClickChain(click) {\n if (!currentClickChain || !currentClickChain.tryAppend(click)) {\n const rageClick = click.clone();\n currentClickChain = createClickChain(click, (clicks) => {\n finalizeClicks(clicks, rageClick);\n // Clear the reference to allow garbage collection. Without this, the finalize callback\n // retains a closure reference to the old click chain, preventing it from being cleaned up\n // and causing a memory leak as click chains accumulate over time.\n currentClickChain = undefined;\n });\n }\n }\n function stopClickChain() {\n if (currentClickChain) {\n currentClickChain.stop();\n }\n }\n}\nfunction processPointerDown(configuration, lifeCycle, domMutationObservable, pointerDownEvent, windowOpenObservable) {\n let nodePrivacyLevel;\n if (configuration.enablePrivacyForActionName) {\n nodePrivacyLevel = getNodePrivacyLevel(pointerDownEvent.target, configuration.defaultPrivacyLevel);\n }\n else {\n nodePrivacyLevel = NodePrivacyLevel.ALLOW;\n }\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n return undefined;\n }\n const clickActionBase = computeClickActionBase(pointerDownEvent, nodePrivacyLevel, configuration);\n let hadActivityOnPointerDown = false;\n waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, (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 { clickActionBase, hadActivityOnPointerDown: () => hadActivityOnPointerDown };\n}\nfunction startClickAction(configuration, lifeCycle, domMutationObservable, windowOpenObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown) {\n var _a;\n const click = newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent);\n appendClickToClickChain(click);\n const selector = (_a = clickActionBase === null || clickActionBase === void 0 ? void 0 : clickActionBase.target) === null || _a === void 0 ? void 0 : _a.selector;\n if (selector) {\n updateInteractionSelector(startEvent.timeStamp, selector);\n }\n const { stop: stopWaitPageActivityEnd } = waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, (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 }\n else {\n if (pageActivityEndEvent.hadActivity) {\n click.stop(pageActivityEndEvent.end);\n }\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 }\n else {\n click.stop();\n }\n }\n }, CLICK_ACTION_MAX_DURATION);\n const viewEndedSubscription = lifeCycle.subscribe(5 /* LifeCycleEventType.VIEW_ENDED */, ({ endClocks }) => {\n click.stop(endClocks.timeStamp);\n });\n const stopSubscription = stopObservable.subscribe(() => {\n click.stop();\n });\n click.stopObservable.subscribe(() => {\n viewEndedSubscription.unsubscribe();\n stopWaitPageActivityEnd();\n stopSubscription.unsubscribe();\n });\n}\nfunction computeClickActionBase(event, nodePrivacyLevel, configuration) {\n const rect = event.target.getBoundingClientRect();\n const selector = getSelectorFromElement(event.target, configuration.actionNameAttribute);\n if (selector) {\n updateInteractionSelector(event.timeStamp, selector);\n }\n const { name, nameSource } = getActionNameFromElement(event.target, configuration, nodePrivacyLevel);\n return {\n type: ActionType.CLICK,\n target: {\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n selector,\n },\n position: {\n // Use clientX and Y because for SVG element offsetX and Y are relatives to the <svg> element\n x: Math.round(event.clientX - rect.left),\n y: Math.round(event.clientY - rect.top),\n },\n name,\n nameSource,\n };\n}\nfunction newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent) {\n const id = generateUUID();\n const startClocks = relativeToClocks(startEvent.timeStamp);\n const historyEntry = history.add(id, startClocks.relative);\n const eventCountsSubscription = trackEventCounts({\n lifeCycle,\n isChildEvent: (event) => event.action !== undefined &&\n (Array.isArray(event.action.id) ? event.action.id.includes(id) : event.action.id === id),\n });\n let status = 0 /* ClickStatus.ONGOING */;\n let activityEndTime;\n const frustrationTypes = [];\n const 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 }\n else {\n historyEntry.remove();\n }\n eventCountsSubscription.stop();\n stopObservable.notify();\n }\n return {\n event: startEvent,\n stop,\n stopObservable,\n get hasError() {\n return eventCountsSubscription.eventCounts.errorCount > 0;\n },\n get hasPageActivity() {\n return activityEndTime !== undefined;\n },\n getUserActivity,\n addFrustration: (frustrationType) => {\n frustrationTypes.push(frustrationType);\n },\n startClocks,\n isStopped: () => status === 1 /* ClickStatus.STOPPED */ || status === 2 /* ClickStatus.FINALIZED */,\n clone: () => newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent),\n validate: (domEvents) => {\n stop();\n if (status !== 1 /* ClickStatus.STOPPED */) {\n return;\n }\n const { resourceCount, errorCount, longTaskCount } = eventCountsSubscription.eventCounts;\n const clickAction = {\n duration: activityEndTime && elapsed(startClocks.timeStamp, activityEndTime),\n startClocks,\n id,\n frustrationTypes,\n counts: {\n resourceCount,\n errorCount,\n longTaskCount,\n },\n events: domEvents !== null && domEvents !== void 0 ? domEvents : [startEvent],\n event: startEvent,\n ...clickActionBase,\n };\n lifeCycle.notify(0 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, clickAction);\n status = 2 /* ClickStatus.FINALIZED */;\n },\n discard: () => {\n stop();\n status = 2 /* ClickStatus.FINALIZED */;\n },\n };\n}\nexport function finalizeClicks(clicks, rageClick) {\n const { isRage } = computeFrustration(clicks, rageClick);\n if (isRage) {\n clicks.forEach((click) => click.discard());\n rageClick.stop(timeStampNow());\n rageClick.validate(clicks.map((click) => click.event));\n }\n else {\n rageClick.discard();\n clicks.forEach((click) => click.validate());\n }\n}\n//# sourceMappingURL=trackClickActions.js.map","import { noop, combine, toServerDuration, generateUUID, SKIPPED, addDuration } from '@datadog/browser-core';\nimport { discardNegativeDuration } from '../discardNegativeDuration';\nimport { ActionType, RumEventType } from '../../rawRumEvent.types';\nimport { trackClickActions } from './trackClickActions';\nexport const LONG_TASK_START_TIME_CORRECTION = 1;\nexport function startActionCollection(lifeCycle, hooks, domMutationObservable, windowOpenObservable, configuration) {\n const { unsubscribe: unsubscribeAutoAction } = lifeCycle.subscribe(0 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, (action) => {\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processAction(action));\n });\n hooks.register(0 /* HookNames.Assemble */, ({ startTime, eventType }) => {\n if (eventType !== RumEventType.ERROR &&\n eventType !== RumEventType.RESOURCE &&\n eventType !== RumEventType.LONG_TASK) {\n return SKIPPED;\n }\n // Long tasks triggered by interaction handlers (pointerup, click, etc.)\n // can have a start time slightly before the interaction timestamp (long_task.start_time < action.start_time).\n // This likely happens because the interaction timestamp is recorded during the event dispatch,\n // not at the beginning of the rendering frame. I observed a difference of < 1 ms in my tests.\n // Fixes flakiness in test: \"associates long tasks to interaction actions\"\n const correctedStartTime = eventType === RumEventType.LONG_TASK ? addDuration(startTime, LONG_TASK_START_TIME_CORRECTION) : startTime;\n const actionId = actionContexts.findActionId(correctedStartTime);\n if (!actionId) {\n return SKIPPED;\n }\n return {\n type: eventType,\n action: { id: actionId },\n };\n });\n hooks.register(1 /* HookNames.AssembleTelemetry */, ({ startTime }) => ({\n action: { id: actionContexts.findActionId(startTime) },\n }));\n let actionContexts = { findActionId: noop };\n let stop = noop;\n if (configuration.trackUserInteractions) {\n ;\n ({ actionContexts, stop } = trackClickActions(lifeCycle, domMutationObservable, windowOpenObservable, configuration));\n }\n return {\n addAction: (action) => {\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processAction(action));\n },\n actionContexts,\n stop: () => {\n unsubscribeAutoAction();\n stop();\n },\n };\n}\nfunction processAction(action) {\n const autoActionProperties = isAutoAction(action)\n ? {\n action: {\n id: action.id,\n loading_time: discardNegativeDuration(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 name_source: action.nameSource,\n },\n },\n }\n : {\n context: action.context,\n };\n const actionEvent = combine({\n action: { id: generateUUID(), target: { name: action.name }, type: action.type },\n date: action.startClocks.timeStamp,\n type: RumEventType.ACTION,\n }, autoActionProperties);\n const duration = isAutoAction(action) ? action.duration : undefined;\n const domainContext = isAutoAction(action)\n ? { events: action.events }\n : { handlingStack: action.handlingStack };\n return {\n rawRumEvent: actionEvent,\n duration,\n startTime: action.startClocks.relative,\n domainContext,\n };\n}\nfunction isAutoAction(action) {\n return action.type !== ActionType.CUSTOM;\n}\n//# sourceMappingURL=actionCollection.js.map","import { initConsoleObservable, ConsoleApiName } from '@datadog/browser-core';\nexport function trackConsoleError(errorObservable) {\n const subscription = initConsoleObservable([ConsoleApiName.error]).subscribe((consoleLog) => errorObservable.notify(consoleLog.error));\n return {\n stop: () => {\n subscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=trackConsoleError.js.map","import { initReportObservable, RawReportType } from '@datadog/browser-core';\nexport function trackReportError(configuration, errorObservable) {\n const subscription = initReportObservable(configuration, [\n RawReportType.cspViolation,\n RawReportType.intervention,\n ]).subscribe((rawError) => errorObservable.notify(rawError));\n return {\n stop: () => {\n subscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=trackReportError.js.map","import { Observable, ErrorSource, generateUUID, computeRawError, combine, } from '@datadog/browser-core';\nimport { RumEventType } from '../../rawRumEvent.types';\nimport { trackConsoleError } from './trackConsoleError';\nimport { trackReportError } from './trackReportError';\nexport function startErrorCollection(lifeCycle, configuration, bufferedDataObservable) {\n const errorObservable = new Observable();\n bufferedDataObservable.subscribe((bufferedData) => {\n if (bufferedData.type === 0 /* BufferedDataType.RUNTIME_ERROR */) {\n errorObservable.notify(bufferedData.error);\n }\n });\n trackConsoleError(errorObservable);\n trackReportError(configuration, errorObservable);\n errorObservable.subscribe((error) => lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error }));\n return doStartErrorCollection(lifeCycle);\n}\nexport function doStartErrorCollection(lifeCycle) {\n lifeCycle.subscribe(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, ({ error }) => {\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processError(error));\n });\n return {\n addError: ({ error, handlingStack, componentStack, startClocks, context }) => {\n const rawError = computeRawError({\n originalError: error,\n handlingStack,\n componentStack,\n startClocks,\n nonErrorPrefix: \"Provided\" /* NonErrorPrefix.PROVIDED */,\n source: ErrorSource.CUSTOM,\n handling: \"handled\" /* ErrorHandling.HANDLED */,\n });\n rawError.context = combine(rawError.context, context);\n lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error: rawError });\n },\n };\n}\nfunction processError(error) {\n const 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 component_stack: error.componentStack,\n type: error.type,\n handling: error.handling,\n causes: error.causes,\n source_type: 'browser',\n fingerprint: error.fingerprint,\n csp: error.csp,\n },\n type: RumEventType.ERROR,\n context: error.context,\n };\n const domainContext = {\n error: error.originalError,\n handlingStack: error.handlingStack,\n };\n return {\n rawRumEvent,\n startTime: error.startClocks.relative,\n domainContext,\n };\n}\n//# sourceMappingURL=errorCollection.js.map","import { addDuration } from '@datadog/browser-core';\nimport { hasValidResourceEntryDuration, hasValidResourceEntryTimings } from './resourceUtils';\nconst alreadyMatchedEntries = new WeakSet();\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 * - filter out timing that were already matched to a request\n * - then, if a single timing match, return the timing\n * - otherwise we can't decide, return undefined\n */\nexport function matchRequestResourceEntry(request) {\n if (!performance || !('getEntriesByName' in performance)) {\n return;\n }\n const sameNameEntries = performance.getEntriesByName(request.url, 'resource');\n if (!sameNameEntries.length || !('toJSON' in sameNameEntries[0])) {\n return;\n }\n const candidates = sameNameEntries\n .filter((entry) => !alreadyMatchedEntries.has(entry))\n .filter((entry) => hasValidResourceEntryDuration(entry) && hasValidResourceEntryTimings(entry))\n .filter((entry) => isBetween(entry, request.startClocks.relative, endTime({ startTime: request.startClocks.relative, duration: request.duration })));\n if (candidates.length === 1) {\n alreadyMatchedEntries.add(candidates[0]);\n return candidates[0].toJSON();\n }\n return;\n}\nfunction endTime(timing) {\n return addDuration(timing.startTime, timing.duration);\n}\nfunction isBetween(timing, start, end) {\n const errorMargin = 1;\n return timing.startTime >= start - errorMargin && endTime(timing) <= addDuration(end, errorMargin);\n}\n//# sourceMappingURL=matchRequestResourceEntry.js.map","import { dateNow, findCommaSeparatedValue, ONE_MINUTE } from '@datadog/browser-core';\nimport { isCommentNode, isTextNode } from '../../browser/htmlDomUtils';\nexport const INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD = 2 * ONE_MINUTE;\nexport function getDocumentTraceId(document) {\n const 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 const traceIdMeta = document.querySelector('meta[name=dd-trace-id]');\n const traceTimeMeta = document.querySelector('meta[name=dd-trace-time]');\n return createDocumentTraceData(traceIdMeta && traceIdMeta.content, traceTimeMeta && traceTimeMeta.content);\n}\nexport function getDocumentTraceDataFromComment(document) {\n const 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 const traceTime = rawTraceTime && Number(rawTraceTime);\n if (!traceId || !traceTime) {\n return undefined;\n }\n return {\n traceId,\n 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 (let i = 0; i < document.childNodes.length; i += 1) {\n const comment = getTraceCommentFromNode(document.childNodes[i]);\n if (comment) {\n return comment;\n }\n }\n // 2. If the comment is placed after the </html> 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 <body> tag.\n // Try to look for the comment at the end of the <body> 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 (let i = document.body.childNodes.length - 1; i >= 0; i -= 1) {\n const node = document.body.childNodes[i];\n const 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 const match = /^\\s*DATADOG;(.*?)\\s*$/.exec(node.data);\n if (match) {\n return match[1];\n }\n }\n}\n//# sourceMappingURL=getDocumentTraceId.js.map","import { getRelativeTime, isNumber } from '@datadog/browser-core';\nimport { RumPerformanceEntryType, supportPerformanceTimingEvent } from './performanceObservable';\nexport function getNavigationEntry() {\n if (supportPerformanceTimingEvent(RumPerformanceEntryType.NAVIGATION)) {\n const navigationEntry = performance.getEntriesByType(RumPerformanceEntryType.NAVIGATION)[0];\n if (navigationEntry) {\n return navigationEntry;\n }\n }\n const timings = computeTimingsFromDeprecatedPerformanceTiming();\n const entry = {\n entryType: RumPerformanceEntryType.NAVIGATION,\n initiatorType: 'navigation',\n name: window.location.href,\n startTime: 0,\n duration: timings.loadEventEnd,\n decodedBodySize: 0,\n encodedBodySize: 0,\n transferSize: 0,\n workerStart: 0,\n toJSON: () => ({ ...entry, toJSON: undefined }),\n ...timings,\n };\n return entry;\n}\nexport function computeTimingsFromDeprecatedPerformanceTiming() {\n const result = {};\n const timing = performance.timing;\n for (const key in timing) {\n if (isNumber(timing[key])) {\n const numberKey = key;\n const timingElement = timing[numberKey];\n result[numberKey] = timingElement === 0 ? 0 : getRelativeTime(timingElement);\n }\n }\n return result;\n}\n//# sourceMappingURL=performanceUtils.js.map","import { runOnReadyState } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../../browser/performanceObservable';\nimport { getDocumentTraceId } from '../tracing/getDocumentTraceId';\nimport { getNavigationEntry } from '../../browser/performanceUtils';\nimport { FAKE_INITIAL_DOCUMENT } from './resourceUtils';\nexport function retrieveInitialDocumentResourceTiming(configuration, callback, getNavigationEntryImpl = getNavigationEntry) {\n runOnReadyState(configuration, 'interactive', () => {\n const navigationEntry = getNavigationEntryImpl();\n const entry = Object.assign(navigationEntry.toJSON(), {\n entryType: RumPerformanceEntryType.RESOURCE,\n initiatorType: FAKE_INITIAL_DOCUMENT,\n // The ResourceTiming duration entry should be `responseEnd - startTime`. With\n // NavigationTiming entries, `startTime` is always 0, so set it to `responseEnd`.\n duration: navigationEntry.responseEnd,\n traceId: getDocumentTraceId(document),\n toJSON: () => ({ ...entry, toJSON: undefined }),\n });\n callback(entry);\n });\n}\n//# sourceMappingURL=retrieveInitialDocumentResourceTiming.js.map","import { addTelemetryDebug } from '@datadog/browser-core';\n// Maximum number of requests to keep in the registry. Requests should be removed quite quickly in\n// general, this is just a safety limit to avoid memory leaks in case of a bug.\nexport const MAX_REQUESTS = 1000;\nexport function createRequestRegistry(lifeCycle) {\n const requests = new Set();\n const subscription = lifeCycle.subscribe(8 /* LifeCycleEventType.REQUEST_COMPLETED */, (request) => {\n requests.add(request);\n if (requests.size > MAX_REQUESTS) {\n // monitor-until: 2026-01-01, after early request collection GA\n addTelemetryDebug('Too many requests');\n requests.delete(requests.values().next().value);\n }\n });\n return {\n getMatchingRequest(entry) {\n // Returns the closest request object that happened before the entry\n let minTimeDifference = Infinity;\n let closestRequest;\n for (const request of requests) {\n const timeDifference = entry.startTime - request.startClocks.relative;\n if (0 <= timeDifference && timeDifference < minTimeDifference && request.url === entry.name) {\n minTimeDifference = Math.abs(timeDifference);\n closestRequest = request;\n }\n }\n if (closestRequest) {\n requests.delete(closestRequest);\n }\n return closestRequest;\n },\n stop() {\n subscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=requestRegistry.js.map","import { combine, generateUUID, RequestType, ResourceType, toServerDuration, relativeToClocks, createTaskQueue, } from '@datadog/browser-core';\nimport { RumPerformanceEntryType, createPerformanceObservable } from '../../browser/performanceObservable';\nimport { RumEventType } from '../../rawRumEvent.types';\nimport { createSpanIdentifier } from '../tracing/identifier';\nimport { matchRequestResourceEntry } from './matchRequestResourceEntry';\nimport { computeResourceEntryDetails, computeResourceEntryDuration, computeResourceEntryType, computeResourceEntrySize, computeResourceEntryProtocol, computeResourceEntryDeliveryType, isResourceEntryRequestType, sanitizeIfLongDataUrl, } from './resourceUtils';\nimport { retrieveInitialDocumentResourceTiming } from './retrieveInitialDocumentResourceTiming';\nimport { createRequestRegistry } from './requestRegistry';\nimport { extractGraphQlMetadata, findGraphQlConfiguration } from './graphql';\nexport function startResourceCollection(lifeCycle, configuration, pageStateHistory, taskQueue = createTaskQueue(), retrieveInitialDocumentResourceTimingImpl = retrieveInitialDocumentResourceTiming) {\n let requestRegistry;\n const isEarlyRequestCollectionEnabled = configuration.trackEarlyRequests;\n if (isEarlyRequestCollectionEnabled) {\n requestRegistry = createRequestRegistry(lifeCycle);\n }\n else {\n lifeCycle.subscribe(8 /* LifeCycleEventType.REQUEST_COMPLETED */, (request) => {\n handleResource(() => processRequest(request, configuration, pageStateHistory));\n });\n }\n const performanceResourceSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.RESOURCE,\n buffered: true,\n }).subscribe((entries) => {\n for (const entry of entries) {\n if (isEarlyRequestCollectionEnabled || !isResourceEntryRequestType(entry)) {\n handleResource(() => processResourceEntry(entry, configuration, pageStateHistory, requestRegistry));\n }\n }\n });\n retrieveInitialDocumentResourceTimingImpl(configuration, (timing) => {\n handleResource(() => processResourceEntry(timing, configuration, pageStateHistory, requestRegistry));\n });\n function handleResource(computeRawEvent) {\n taskQueue.push(() => {\n const rawEvent = computeRawEvent();\n if (rawEvent) {\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, rawEvent);\n }\n });\n }\n return {\n stop: () => {\n taskQueue.stop();\n performanceResourceSubscription.unsubscribe();\n },\n };\n}\nfunction processRequest(request, configuration, pageStateHistory) {\n const matchingTiming = matchRequestResourceEntry(request);\n return assembleResource(matchingTiming, request, pageStateHistory, configuration);\n}\nfunction processResourceEntry(entry, configuration, pageStateHistory, requestRegistry) {\n const matchingRequest = isResourceEntryRequestType(entry) && requestRegistry ? requestRegistry.getMatchingRequest(entry) : undefined;\n return assembleResource(entry, matchingRequest, pageStateHistory, configuration);\n}\n// TODO: In the future, the `entry` parameter should be required, making things simpler.\nfunction assembleResource(entry, request, pageStateHistory, configuration) {\n if (!entry && !request) {\n return;\n }\n const tracingInfo = request\n ? computeRequestTracingInfo(request, configuration)\n : computeResourceEntryTracingInfo(entry, configuration);\n if (!configuration.trackResources && !tracingInfo) {\n return;\n }\n const startClocks = entry ? relativeToClocks(entry.startTime) : request.startClocks;\n const duration = entry\n ? computeResourceEntryDuration(entry)\n : computeRequestDuration(pageStateHistory, startClocks, request.duration);\n const graphql = request && computeGraphQlMetaData(request, configuration);\n const resourceEvent = combine({\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n duration: toServerDuration(duration),\n // TODO: in the future when `entry` is required, we can probably only rely on `computeResourceEntryType`\n type: request\n ? request.type === RequestType.XHR\n ? ResourceType.XHR\n : ResourceType.FETCH\n : computeResourceEntryType(entry),\n method: request ? request.method : undefined,\n status_code: request ? request.status : discardZeroStatus(entry.responseStatus),\n url: request ? sanitizeIfLongDataUrl(request.url) : entry.name,\n protocol: entry && computeResourceEntryProtocol(entry),\n delivery_type: entry && computeResourceEntryDeliveryType(entry),\n graphql,\n },\n type: RumEventType.RESOURCE,\n _dd: {\n discarded: !configuration.trackResources,\n },\n }, tracingInfo, entry && computeResourceEntryMetrics(entry));\n return {\n startTime: startClocks.relative,\n duration,\n rawRumEvent: resourceEvent,\n domainContext: getResourceDomainContext(entry, request),\n };\n}\nfunction computeGraphQlMetaData(request, configuration) {\n const graphQlConfig = findGraphQlConfiguration(request.url, configuration);\n if (!graphQlConfig) {\n return;\n }\n return extractGraphQlMetadata(request, graphQlConfig);\n}\nfunction getResourceDomainContext(entry, request) {\n if (request) {\n const baseDomainContext = {\n performanceEntry: entry,\n isAborted: request.isAborted,\n handlingStack: request.handlingStack,\n };\n if (request.type === RequestType.XHR) {\n return {\n xhr: request.xhr,\n ...baseDomainContext,\n };\n }\n return {\n requestInput: request.input,\n requestInit: request.init,\n response: request.response,\n error: request.error,\n ...baseDomainContext,\n };\n }\n return {\n // Currently, at least one of `entry` or `request` must be defined when calling this function.\n // So `entry` is guaranteed to be defined here. In the future, when `entry` is required, we can\n // remove the `!` assertion.\n performanceEntry: entry,\n };\n}\nfunction computeResourceEntryMetrics(entry) {\n const { renderBlockingStatus } = entry;\n return {\n resource: {\n render_blocking_status: renderBlockingStatus,\n ...computeResourceEntrySize(entry),\n ...computeResourceEntryDetails(entry),\n },\n };\n}\nfunction computeRequestTracingInfo(request, configuration) {\n const hasBeenTraced = request.traceSampled && request.traceId && request.spanId;\n if (!hasBeenTraced) {\n return undefined;\n }\n return {\n _dd: {\n span_id: request.spanId.toString(),\n trace_id: request.traceId.toString(),\n rule_psr: configuration.rulePsr,\n },\n };\n}\nfunction computeResourceEntryTracingInfo(entry, configuration) {\n const hasBeenTraced = entry.traceId;\n if (!hasBeenTraced) {\n return undefined;\n }\n return {\n _dd: {\n trace_id: entry.traceId,\n span_id: createSpanIdentifier().toString(),\n rule_psr: configuration.rulePsr,\n },\n };\n}\nfunction computeRequestDuration(pageStateHistory, startClocks, duration) {\n return !pageStateHistory.wasInPageStateDuringPeriod(\"frozen\" /* PageState.FROZEN */, startClocks.relative, duration)\n ? duration\n : undefined;\n}\n/**\n * The status is 0 for cross-origin resources without CORS headers, so the status is meaningless, and we shouldn't report it\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStatus#cross-origin_response_status_codes\n */\nfunction discardZeroStatus(statusCode) {\n return statusCode === 0 ? undefined : statusCode;\n}\n//# sourceMappingURL=resourceCollection.js.map","import { trackEventCounts } from '../trackEventCounts';\nexport function trackViewEventCounts(lifeCycle, viewId, onChange) {\n const { stop, eventCounts } = trackEventCounts({\n lifeCycle,\n isChildEvent: (event) => event.view.id === viewId,\n onChange,\n });\n return {\n stop,\n eventCounts,\n };\n}\n//# sourceMappingURL=trackViewEventCounts.js.map","import { ONE_MINUTE, elapsed, relativeNow } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\n// Discard FCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport const FCP_MAXIMUM_DELAY = 10 * ONE_MINUTE;\nexport function trackFirstContentfulPaint(configuration, firstHidden, callback) {\n const performanceSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.PAINT,\n buffered: true,\n }).subscribe((entries) => {\n const fcpEntry = entries.find((entry) => entry.name === 'first-contentful-paint' &&\n entry.startTime < firstHidden.timeStamp &&\n entry.startTime < FCP_MAXIMUM_DELAY);\n if (fcpEntry) {\n callback(fcpEntry.startTime);\n }\n });\n return {\n stop: performanceSubscription.unsubscribe,\n };\n}\n/**\n * Measure the First Contentful Paint after a BFCache restoration.\n * The DOM is restored synchronously, so we approximate the FCP with the first frame\n * rendered just after the pageshow event, using two nested requestAnimationFrame calls.\n */\nexport function trackRestoredFirstContentfulPaint(viewStartRelative, callback) {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n callback(elapsed(viewStartRelative, relativeNow()));\n });\n });\n}\n//# sourceMappingURL=trackFirstContentfulPaint.js.map","import { elapsed } from '@datadog/browser-core';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\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 trackFirstInput(configuration, firstHidden, callback) {\n const performanceFirstInputSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.FIRST_INPUT,\n buffered: true,\n }).subscribe((entries) => {\n const firstInputEntry = entries.find((entry) => entry.startTime < firstHidden.timeStamp);\n if (firstInputEntry) {\n const firstInputDelay = elapsed(firstInputEntry.startTime, firstInputEntry.processingStart);\n let firstInputTargetSelector;\n if (firstInputEntry.target && isElementNode(firstInputEntry.target)) {\n firstInputTargetSelector = getSelectorFromElement(firstInputEntry.target, configuration.actionNameAttribute);\n }\n callback({\n // Ensure firstInputDelay to be positive, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1185815\n delay: firstInputDelay >= 0 ? firstInputDelay : 0,\n time: firstInputEntry.startTime,\n targetSelector: firstInputTargetSelector,\n });\n }\n });\n return {\n stop: () => {\n performanceFirstInputSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=trackFirstInput.js.map","import { setTimeout, relativeNow, runOnReadyState, clearTimeout } from '@datadog/browser-core';\nimport { getNavigationEntry } from '../../../browser/performanceUtils';\nexport function trackNavigationTimings(configuration, callback, getNavigationEntryImpl = getNavigationEntry) {\n return waitAfterLoadEvent(configuration, () => {\n const entry = getNavigationEntryImpl();\n if (!isIncompleteNavigation(entry)) {\n callback(processNavigationEntry(entry));\n }\n });\n}\nfunction processNavigationEntry(entry) {\n return {\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}\nfunction isIncompleteNavigation(entry) {\n return entry.loadEventEnd <= 0;\n}\nfunction waitAfterLoadEvent(configuration, callback) {\n let timeoutId;\n const { stop: stopOnReadyState } = runOnReadyState(configuration, 'complete', () => {\n // Invoke the callback a bit after the actual load event, so the \"loadEventEnd\" timing is accurate\n timeoutId = setTimeout(() => callback());\n });\n return {\n stop: () => {\n stopOnReadyState();\n clearTimeout(timeoutId);\n },\n };\n}\n//# sourceMappingURL=trackNavigationTimings.js.map","import { ONE_MINUTE, addEventListeners, findLast } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n// Discard LCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport const LCP_MAXIMUM_DELAY = 10 * ONE_MINUTE;\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/onLCP.ts\n */\nexport function trackLargestContentfulPaint(configuration, firstHidden, eventTarget, callback) {\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 let firstInteractionTimestamp = Infinity;\n const { stop: stopEventListener } = addEventListeners(configuration, eventTarget, [\"pointerdown\" /* DOM_EVENT.POINTER_DOWN */, \"keydown\" /* DOM_EVENT.KEY_DOWN */], (event) => {\n firstInteractionTimestamp = event.timeStamp;\n }, { capture: true, once: true });\n let biggestLcpSize = 0;\n const performanceLcpSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT,\n buffered: true,\n }).subscribe((entries) => {\n const lcpEntry = findLast(entries, (entry) => entry.entryType === RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT &&\n entry.startTime < firstInteractionTimestamp &&\n entry.startTime < firstHidden.timeStamp &&\n entry.startTime < LCP_MAXIMUM_DELAY &&\n // Ensure to get the LCP entry with the biggest size, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1516655\n entry.size > biggestLcpSize);\n if (lcpEntry) {\n let lcpTargetSelector;\n if (lcpEntry.element) {\n lcpTargetSelector = getSelectorFromElement(lcpEntry.element, configuration.actionNameAttribute);\n }\n callback({\n value: lcpEntry.startTime,\n targetSelector: lcpTargetSelector,\n resourceUrl: computeLcpEntryUrl(lcpEntry),\n });\n biggestLcpSize = lcpEntry.size;\n }\n });\n return {\n stop: () => {\n stopEventListener();\n performanceLcpSubscription.unsubscribe();\n },\n };\n}\n// The property url report an empty string if the value is not available, we shouldn't report it in this case.\nfunction computeLcpEntryUrl(entry) {\n return entry.url === '' ? undefined : entry.url;\n}\n//# sourceMappingURL=trackLargestContentfulPaint.js.map","import { addEventListeners, noop } from '@datadog/browser-core';\nimport { supportPerformanceTimingEvent, RumPerformanceEntryType } from '../../../browser/performanceObservable';\nexport function trackFirstHidden(configuration, viewStart, eventTarget = window) {\n if (document.visibilityState === 'hidden') {\n return { timeStamp: 0, stop: noop };\n }\n if (supportPerformanceTimingEvent(RumPerformanceEntryType.VISIBILITY_STATE)) {\n const firstHiddenEntry = performance\n .getEntriesByType(RumPerformanceEntryType.VISIBILITY_STATE)\n .filter((entry) => entry.name === 'hidden')\n .find((entry) => entry.startTime >= viewStart.relative);\n if (firstHiddenEntry) {\n return { timeStamp: firstHiddenEntry.startTime, stop: noop };\n }\n }\n let timeStamp = Infinity;\n const { stop } = addEventListeners(configuration, eventTarget, [\"pagehide\" /* DOM_EVENT.PAGE_HIDE */, \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */], (event) => {\n if (event.type === \"pagehide\" /* DOM_EVENT.PAGE_HIDE */ || document.visibilityState === 'hidden') {\n timeStamp = event.timeStamp;\n stop();\n }\n }, { capture: true });\n return {\n get timeStamp() {\n return timeStamp;\n },\n stop,\n };\n}\n//# sourceMappingURL=trackFirstHidden.js.map","import { trackFirstContentfulPaint } from './trackFirstContentfulPaint';\nimport { trackFirstInput } from './trackFirstInput';\nimport { trackNavigationTimings } from './trackNavigationTimings';\nimport { trackLargestContentfulPaint } from './trackLargestContentfulPaint';\nimport { trackFirstHidden } from './trackFirstHidden';\nexport function trackInitialViewMetrics(configuration, viewStart, setLoadEvent, scheduleViewUpdate) {\n const initialViewMetrics = {};\n const { stop: stopNavigationTracking } = trackNavigationTimings(configuration, (navigationTimings) => {\n setLoadEvent(navigationTimings.loadEvent);\n initialViewMetrics.navigationTimings = navigationTimings;\n scheduleViewUpdate();\n });\n const firstHidden = trackFirstHidden(configuration, viewStart);\n const { stop: stopFCPTracking } = trackFirstContentfulPaint(configuration, firstHidden, (firstContentfulPaint) => {\n initialViewMetrics.firstContentfulPaint = firstContentfulPaint;\n scheduleViewUpdate();\n });\n const { stop: stopLCPTracking } = trackLargestContentfulPaint(configuration, firstHidden, window, (largestContentfulPaint) => {\n initialViewMetrics.largestContentfulPaint = largestContentfulPaint;\n scheduleViewUpdate();\n });\n const { stop: stopFIDTracking } = trackFirstInput(configuration, firstHidden, (firstInput) => {\n initialViewMetrics.firstInput = firstInput;\n scheduleViewUpdate();\n });\n function stop() {\n stopNavigationTracking();\n stopFCPTracking();\n stopLCPTracking();\n stopFIDTracking();\n firstHidden.stop();\n }\n return {\n stop,\n initialViewMetrics,\n };\n}\n//# sourceMappingURL=trackInitialViewMetrics.js.map","/**\n * Calculates the area of a rectangle given its width and height\n */\nconst calculateArea = (width, height) => width * height;\n/**\n * Calculates the intersection area between two rectangles\n */\nconst calculateIntersectionArea = (rect1, rect2) => {\n const left = Math.max(rect1.left, rect2.left);\n const top = Math.max(rect1.top, rect2.top);\n const right = Math.min(rect1.right, rect2.right);\n const bottom = Math.min(rect1.bottom, rect2.bottom);\n if (left >= right || top >= bottom) {\n return 0;\n }\n return calculateArea(right - left, bottom - top);\n};\n/**\n * Calculates the total impacted area of a layout shift source\n * This is the sum of the previous and current areas minus their intersection\n */\nexport const getClsAttributionImpactedArea = (source) => {\n const previousArea = calculateArea(source.previousRect.width, source.previousRect.height);\n const currentArea = calculateArea(source.currentRect.width, source.currentRect.height);\n const intersectionArea = calculateIntersectionArea(source.previousRect, source.currentRect);\n return previousArea + currentArea - intersectionArea;\n};\n//# sourceMappingURL=getClsAttributionImpactedArea.js.map","import { round, ONE_SECOND, noop, elapsed } from '@datadog/browser-core';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { supportPerformanceTimingEvent, RumPerformanceEntryType, createPerformanceObservable, } from '../../../browser/performanceObservable';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\nimport { getClsAttributionImpactedArea } from './getClsAttributionImpactedArea';\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 */\nexport function trackCumulativeLayoutShift(configuration, viewStart, callback) {\n if (!isLayoutShiftSupported()) {\n return {\n stop: noop,\n };\n }\n let maxClsValue = 0;\n let biggestShift;\n // if no layout shift happen the value should be reported as 0\n callback({\n value: 0,\n });\n const slidingWindow = slidingSessionWindow();\n const performanceSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.LAYOUT_SHIFT,\n buffered: true,\n }).subscribe((entries) => {\n var _a;\n for (const entry of entries) {\n if (entry.hadRecentInput || entry.startTime < viewStart) {\n continue;\n }\n const { cumulatedValue, isMaxValue } = slidingWindow.update(entry);\n if (isMaxValue) {\n const attribution = getTopImpactedElement(entry.sources);\n biggestShift = {\n target: (attribution === null || attribution === void 0 ? void 0 : attribution.node) ? new WeakRef(attribution.node) : undefined,\n time: elapsed(viewStart, entry.startTime),\n previousRect: attribution === null || attribution === void 0 ? void 0 : attribution.previousRect,\n currentRect: attribution === null || attribution === void 0 ? void 0 : attribution.currentRect,\n devicePixelRatio: window.devicePixelRatio,\n };\n }\n if (cumulatedValue > maxClsValue) {\n maxClsValue = cumulatedValue;\n const target = (_a = biggestShift === null || biggestShift === void 0 ? void 0 : biggestShift.target) === null || _a === void 0 ? void 0 : _a.deref();\n callback({\n value: round(maxClsValue, 4),\n targetSelector: target && getSelectorFromElement(target, configuration.actionNameAttribute),\n time: biggestShift === null || biggestShift === void 0 ? void 0 : biggestShift.time,\n previousRect: (biggestShift === null || biggestShift === void 0 ? void 0 : biggestShift.previousRect) ? asRumRect(biggestShift.previousRect) : undefined,\n currentRect: (biggestShift === null || biggestShift === void 0 ? void 0 : biggestShift.currentRect) ? asRumRect(biggestShift.currentRect) : undefined,\n devicePixelRatio: biggestShift === null || biggestShift === void 0 ? void 0 : biggestShift.devicePixelRatio,\n });\n }\n }\n });\n return {\n stop: () => {\n performanceSubscription.unsubscribe();\n },\n };\n}\nfunction getTopImpactedElement(sources) {\n let topImpactedSource;\n for (const source of sources) {\n if (source.node && isElementNode(source.node)) {\n const currentImpactedArea = getClsAttributionImpactedArea(source);\n if (!topImpactedSource || getClsAttributionImpactedArea(topImpactedSource) < currentImpactedArea) {\n topImpactedSource = source;\n }\n }\n }\n return topImpactedSource;\n}\nfunction asRumRect({ x, y, width, height }) {\n return { x, y, width, height };\n}\nexport const MAX_WINDOW_DURATION = 5 * ONE_SECOND;\nconst MAX_UPDATE_GAP = ONE_SECOND;\nfunction slidingSessionWindow() {\n let cumulatedValue = 0;\n let startTime;\n let endTime;\n let maxValue = 0;\n return {\n update: (entry) => {\n const shouldCreateNewWindow = startTime === undefined ||\n entry.startTime - endTime >= MAX_UPDATE_GAP ||\n entry.startTime - startTime >= MAX_WINDOW_DURATION;\n let isMaxValue;\n if (shouldCreateNewWindow) {\n startTime = endTime = entry.startTime;\n maxValue = cumulatedValue = entry.value;\n isMaxValue = true;\n }\n else {\n cumulatedValue += entry.value;\n endTime = entry.startTime;\n isMaxValue = entry.value > maxValue;\n if (isMaxValue) {\n maxValue = entry.value;\n }\n }\n return {\n cumulatedValue,\n isMaxValue,\n };\n },\n };\n}\n/**\n * Check whether `layout-shift` is supported by the browser.\n */\nexport function isLayoutShiftSupported() {\n return supportPerformanceTimingEvent(RumPerformanceEntryType.LAYOUT_SHIFT) && 'WeakRef' in window;\n}\n//# sourceMappingURL=trackCumulativeLayoutShift.js.map","/**\n * performance.interactionCount polyfill\n *\n * The interactionCount is an integer which counts the total number of distinct user interactions,\n * for which there was a unique interactionId.\n *\n * The interactionCount polyfill is an estimate based on a convention specific to Chrome. Cf: https://github.com/GoogleChrome/web-vitals/pull/213\n * This is currently not an issue as the polyfill is only used for INP which is currently only supported on Chrome.\n * Hopefully when/if other browsers will support INP, they will also implement performance.interactionCount at the same time, so we won't need that polyfill.\n *\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/lib/polyfills/interactionCountPolyfill.ts\n */\nimport { monitor } from '@datadog/browser-core';\nlet observer;\nlet interactionCountEstimate = 0;\nlet minKnownInteractionId = Infinity;\nlet maxKnownInteractionId = 0;\nexport function initInteractionCountPolyfill() {\n if ('interactionCount' in performance || observer) {\n return;\n }\n observer = new window.PerformanceObserver(monitor((entries) => {\n entries.getEntries().forEach((e) => {\n const entry = e;\n if (entry.interactionId) {\n minKnownInteractionId = Math.min(minKnownInteractionId, entry.interactionId);\n maxKnownInteractionId = Math.max(maxKnownInteractionId, entry.interactionId);\n interactionCountEstimate = (maxKnownInteractionId - minKnownInteractionId) / 7 + 1;\n }\n });\n }));\n observer.observe({ type: 'event', buffered: true, durationThreshold: 0 });\n}\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nexport const getInteractionCount = () => observer ? interactionCountEstimate : window.performance.interactionCount || 0;\n//# sourceMappingURL=interactionCountPolyfill.js.map","import { elapsed, noop, ONE_MINUTE } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType, supportPerformanceTimingEvent, } from '../../../browser/performanceObservable';\nimport { ViewLoadingType } from '../../../rawRumEvent.types';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { getInteractionSelector } from '../../action/interactionSelectorCache';\nimport { getInteractionCount, initInteractionCountPolyfill } from './interactionCountPolyfill';\n// Arbitrary value to prevent unnecessary memory usage on views with lots of interactions.\nconst MAX_INTERACTION_ENTRIES = 10;\n// Arbitrary value to cap INP outliers\nexport const MAX_INP_VALUE = (1 * ONE_MINUTE);\n/**\n * Track the interaction to next paint (INP).\n * To avoid outliers, return the p98 worst interaction of the view.\n * Documentation: https://web.dev/inp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/onINP.ts\n */\nexport function trackInteractionToNextPaint(configuration, viewStart, viewLoadingType) {\n if (!isInteractionToNextPaintSupported()) {\n return {\n getInteractionToNextPaint: () => undefined,\n setViewEnd: noop,\n stop: noop,\n };\n }\n const { getViewInteractionCount, stopViewInteractionCount } = trackViewInteractionCount(viewLoadingType);\n let viewEnd = Infinity;\n const longestInteractions = trackLongestInteractions(getViewInteractionCount);\n let interactionToNextPaint = -1;\n let interactionToNextPaintTargetSelector;\n let interactionToNextPaintStartTime;\n function handleEntries(entries) {\n for (const entry of entries) {\n if (entry.interactionId &&\n // Check the entry start time is inside the view bounds because some view interactions can be reported after the view end (if long duration).\n entry.startTime >= viewStart &&\n entry.startTime <= viewEnd) {\n longestInteractions.process(entry);\n }\n }\n const newInteraction = longestInteractions.estimateP98Interaction();\n if (newInteraction && newInteraction.duration !== interactionToNextPaint) {\n interactionToNextPaint = newInteraction.duration;\n interactionToNextPaintStartTime = elapsed(viewStart, newInteraction.startTime);\n interactionToNextPaintTargetSelector = getInteractionSelector(newInteraction.startTime);\n if (!interactionToNextPaintTargetSelector && newInteraction.target && isElementNode(newInteraction.target)) {\n interactionToNextPaintTargetSelector = getSelectorFromElement(newInteraction.target, configuration.actionNameAttribute);\n }\n }\n }\n const firstInputSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.FIRST_INPUT,\n buffered: true,\n }).subscribe(handleEntries);\n const eventSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.EVENT,\n // durationThreshold only impact PerformanceEventTiming entries used for INP computation which requires a threshold at 40 (default is 104ms)\n // cf: https://github.com/GoogleChrome/web-vitals/blob/3806160ffbc93c3c4abf210a167b81228172b31c/src/onINP.ts#L202-L210\n durationThreshold: 40,\n buffered: true,\n }).subscribe(handleEntries);\n return {\n getInteractionToNextPaint: () => {\n // If no INP duration where captured because of the performanceObserver 40ms threshold\n // but the view interaction count > 0 then report 0\n if (interactionToNextPaint >= 0) {\n return {\n value: Math.min(interactionToNextPaint, MAX_INP_VALUE),\n targetSelector: interactionToNextPaintTargetSelector,\n time: interactionToNextPaintStartTime,\n };\n }\n else if (getViewInteractionCount()) {\n return {\n value: 0,\n };\n }\n },\n setViewEnd: (viewEndTime) => {\n viewEnd = viewEndTime;\n stopViewInteractionCount();\n },\n stop: () => {\n eventSubscription.unsubscribe();\n firstInputSubscription.unsubscribe();\n },\n };\n}\nfunction trackLongestInteractions(getViewInteractionCount) {\n const longestInteractions = [];\n function sortAndTrimLongestInteractions() {\n longestInteractions.sort((a, b) => b.duration - a.duration).splice(MAX_INTERACTION_ENTRIES);\n }\n return {\n /**\n * Process the performance entry:\n * - if its duration is long enough, add the performance entry to the list of worst interactions\n * - if an entry with the same interaction id exists and its duration is lower than the new one, then replace it in the list of worst interactions\n */\n process(entry) {\n const interactionIndex = longestInteractions.findIndex((interaction) => entry.interactionId === interaction.interactionId);\n const minLongestInteraction = longestInteractions[longestInteractions.length - 1];\n if (interactionIndex !== -1) {\n if (entry.duration > longestInteractions[interactionIndex].duration) {\n longestInteractions[interactionIndex] = entry;\n sortAndTrimLongestInteractions();\n }\n }\n else if (longestInteractions.length < MAX_INTERACTION_ENTRIES ||\n entry.duration > minLongestInteraction.duration) {\n longestInteractions.push(entry);\n sortAndTrimLongestInteractions();\n }\n },\n /**\n * Compute the p98 longest interaction.\n * For better performance the computation is based on 10 longest interactions and the interaction count of the current view.\n */\n estimateP98Interaction() {\n const interactionIndex = Math.min(longestInteractions.length - 1, Math.floor(getViewInteractionCount() / 50));\n return longestInteractions[interactionIndex];\n },\n };\n}\nexport function trackViewInteractionCount(viewLoadingType) {\n initInteractionCountPolyfill();\n const previousInteractionCount = viewLoadingType === ViewLoadingType.INITIAL_LOAD ? 0 : getInteractionCount();\n let state = { stopped: false };\n function computeViewInteractionCount() {\n return getInteractionCount() - previousInteractionCount;\n }\n return {\n getViewInteractionCount: () => {\n if (state.stopped) {\n return state.interactionCount;\n }\n return computeViewInteractionCount();\n },\n stopViewInteractionCount: () => {\n state = { stopped: true, interactionCount: computeViewInteractionCount() };\n },\n };\n}\nexport function isInteractionToNextPaintSupported() {\n return (supportPerformanceTimingEvent(RumPerformanceEntryType.EVENT) &&\n window.PerformanceEventTiming &&\n 'interactionId' in PerformanceEventTiming.prototype);\n}\n//# sourceMappingURL=trackInteractionToNextPaint.js.map","import { elapsed } from '@datadog/browser-core';\nimport { waitPageActivityEnd } from '../../waitPageActivityEnd';\nimport { ViewLoadingType } from '../../../rawRumEvent.types';\nimport { trackFirstHidden } from './trackFirstHidden';\n/**\n * For non-initial views (such as route changes or BFCache restores), the regular load event does not fire\n * In these cases, trackLoadingTime can only emit a loadingTime if waitPageActivityEnd detects some post-restore activity.\n * If nothing happens after the view starts,no candidate is recorded and loadingTime stays undefined.\n */\nexport function trackLoadingTime(lifeCycle, domMutationObservable, windowOpenObservable, configuration, loadType, viewStart, callback) {\n let isWaitingForLoadEvent = loadType === ViewLoadingType.INITIAL_LOAD;\n let isWaitingForActivityLoadingTime = true;\n const loadingTimeCandidates = [];\n const firstHidden = trackFirstHidden(configuration, viewStart);\n function invokeCallbackIfAllCandidatesAreReceived() {\n if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {\n const loadingTime = Math.max(...loadingTimeCandidates);\n // firstHidden is a relative time from time origin, so we use the relative start time of the view to compare with the loading time\n if (loadingTime < firstHidden.timeStamp - viewStart.relative) {\n callback(loadingTime);\n }\n }\n }\n const { stop } = waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, (event) => {\n if (isWaitingForActivityLoadingTime) {\n isWaitingForActivityLoadingTime = false;\n if (event.hadActivity) {\n loadingTimeCandidates.push(elapsed(viewStart.timeStamp, event.end));\n }\n invokeCallbackIfAllCandidatesAreReceived();\n }\n });\n return {\n stop: () => {\n stop();\n firstHidden.stop();\n },\n setLoadEvent: (loadEvent) => {\n if (isWaitingForLoadEvent) {\n isWaitingForLoadEvent = false;\n loadingTimeCandidates.push(loadEvent);\n invokeCallbackIfAllCandidatesAreReceived();\n }\n },\n };\n}\n//# sourceMappingURL=trackLoadingTime.js.map","export function getScrollX() {\n let scrollX;\n const visual = window.visualViewport;\n if (visual) {\n scrollX = visual.pageLeft - visual.offsetLeft;\n }\n else if (window.scrollX !== undefined) {\n scrollX = window.scrollX;\n }\n else {\n scrollX = window.pageXOffset || 0;\n }\n return Math.round(scrollX);\n}\nexport function getScrollY() {\n let scrollY;\n const visual = window.visualViewport;\n if (visual) {\n scrollY = visual.pageTop - visual.offsetTop;\n }\n else if (window.scrollY !== undefined) {\n scrollY = window.scrollY;\n }\n else {\n scrollY = window.pageYOffset || 0;\n }\n return Math.round(scrollY);\n}\n//# sourceMappingURL=scroll.js.map","import { Observable, throttle, addEventListener } from '@datadog/browser-core';\nlet viewportObservable;\nexport function initViewportObservable(configuration) {\n if (!viewportObservable) {\n viewportObservable = createViewportObservable(configuration);\n }\n return viewportObservable;\n}\nexport function createViewportObservable(configuration) {\n return new Observable((observable) => {\n const { throttled: updateDimension } = throttle(() => {\n observable.notify(getViewportDimension());\n }, 200);\n return addEventListener(configuration, window, \"resize\" /* DOM_EVENT.RESIZE */, updateDimension, { capture: true, passive: true })\n .stop;\n });\n}\n// excludes the width and height of any rendered classic scrollbar that is fixed to the visual viewport\nexport function getViewportDimension() {\n const 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}\n//# sourceMappingURL=viewportObservable.js.map","import { Observable, ONE_SECOND, elapsed, relativeNow, throttle, addEventListener, monitor, } from '@datadog/browser-core';\nimport { getScrollY } from '../../../browser/scroll';\nimport { getViewportDimension } from '../../../browser/viewportObservable';\n/** Arbitrary scroll throttle duration */\nexport const THROTTLE_SCROLL_DURATION = ONE_SECOND;\nexport function trackScrollMetrics(configuration, viewStart, callback, scrollValues = createScrollValuesObservable(configuration)) {\n let maxScrollDepth = 0;\n let maxScrollHeight = 0;\n let maxScrollHeightTime = 0;\n const subscription = scrollValues.subscribe(({ scrollDepth, scrollTop, scrollHeight }) => {\n let shouldUpdate = false;\n if (scrollDepth > maxScrollDepth) {\n maxScrollDepth = scrollDepth;\n shouldUpdate = true;\n }\n if (scrollHeight > maxScrollHeight) {\n maxScrollHeight = scrollHeight;\n const now = relativeNow();\n maxScrollHeightTime = elapsed(viewStart.relative, now);\n shouldUpdate = true;\n }\n if (shouldUpdate) {\n callback({\n maxDepth: Math.min(maxScrollDepth, maxScrollHeight),\n maxDepthScrollTop: scrollTop,\n maxScrollHeight,\n maxScrollHeightTime,\n });\n }\n });\n return {\n stop: () => subscription.unsubscribe(),\n };\n}\nexport function computeScrollValues() {\n const scrollTop = getScrollY();\n const { height } = getViewportDimension();\n const scrollHeight = Math.round((document.scrollingElement || document.documentElement).scrollHeight);\n const scrollDepth = Math.round(height + scrollTop);\n return {\n scrollHeight,\n scrollDepth,\n scrollTop,\n };\n}\nexport function createScrollValuesObservable(configuration, throttleDuration = THROTTLE_SCROLL_DURATION) {\n return new Observable((observable) => {\n function notify() {\n observable.notify(computeScrollValues());\n }\n if (window.ResizeObserver) {\n const throttledNotify = throttle(notify, throttleDuration, {\n leading: false,\n trailing: true,\n });\n const observerTarget = document.scrollingElement || document.documentElement;\n const resizeObserver = new ResizeObserver(monitor(throttledNotify.throttled));\n if (observerTarget) {\n resizeObserver.observe(observerTarget);\n }\n const eventListener = addEventListener(configuration, window, \"scroll\" /* DOM_EVENT.SCROLL */, throttledNotify.throttled, {\n passive: true,\n });\n return () => {\n throttledNotify.cancel();\n resizeObserver.disconnect();\n eventListener.stop();\n };\n }\n });\n}\n//# sourceMappingURL=trackScrollMetrics.js.map","import { trackCumulativeLayoutShift } from './trackCumulativeLayoutShift';\nimport { trackInteractionToNextPaint } from './trackInteractionToNextPaint';\nimport { trackLoadingTime } from './trackLoadingTime';\nimport { trackScrollMetrics } from './trackScrollMetrics';\nexport function trackCommonViewMetrics(lifeCycle, domMutationObservable, windowOpenObservable, configuration, scheduleViewUpdate, loadingType, viewStart) {\n const commonViewMetrics = {};\n const { stop: stopLoadingTimeTracking, setLoadEvent } = trackLoadingTime(lifeCycle, domMutationObservable, windowOpenObservable, configuration, loadingType, viewStart, (newLoadingTime) => {\n commonViewMetrics.loadingTime = newLoadingTime;\n scheduleViewUpdate();\n });\n const { stop: stopScrollMetricsTracking } = trackScrollMetrics(configuration, viewStart, (newScrollMetrics) => {\n commonViewMetrics.scroll = newScrollMetrics;\n });\n const { stop: stopCLSTracking } = trackCumulativeLayoutShift(configuration, viewStart.relative, (cumulativeLayoutShift) => {\n commonViewMetrics.cumulativeLayoutShift = cumulativeLayoutShift;\n scheduleViewUpdate();\n });\n const { stop: stopINPTracking, getInteractionToNextPaint, setViewEnd, } = trackInteractionToNextPaint(configuration, viewStart.relative, loadingType);\n return {\n stop: () => {\n stopLoadingTimeTracking();\n stopCLSTracking();\n stopScrollMetricsTracking();\n },\n stopINPTracking,\n setLoadEvent,\n setViewEnd,\n getCommonViewMetrics: () => {\n commonViewMetrics.interactionToNextPaint = getInteractionToNextPaint();\n return commonViewMetrics;\n },\n };\n}\n//# sourceMappingURL=trackCommonViewMetrics.js.map","import { addEventListener } from '@datadog/browser-core';\nexport function onBFCacheRestore(configuration, callback) {\n const { stop } = addEventListener(configuration, window, \"pageshow\" /* DOM_EVENT.PAGE_SHOW */, (event) => {\n if (event.persisted) {\n callback(event);\n }\n }, { capture: true });\n return stop;\n}\n//# sourceMappingURL=bfCacheSupport.js.map","import { trackRestoredFirstContentfulPaint } from './trackFirstContentfulPaint';\n/**\n * BFCache keeps a full in-memory snapshot of the DOM. When the page is restored, nothing needs to be fetched, so the whole\n * viewport repaints in a single frame. Consequently, LCP almost always equals FCP.\n * (See: https://github.com/GoogleChrome/web-vitals/pull/87)\n */\nexport function trackBfcacheMetrics(viewStart, metrics, scheduleViewUpdate) {\n trackRestoredFirstContentfulPaint(viewStart.relative, (paintTime) => {\n metrics.firstContentfulPaint = paintTime;\n metrics.largestContentfulPaint = { value: paintTime };\n scheduleViewUpdate();\n });\n}\n//# sourceMappingURL=trackBfcacheMetrics.js.map","import { noop, PageExitReason, shallowClone, elapsed, generateUUID, ONE_MINUTE, throttle, clocksNow, clocksOrigin, relativeToClocks, timeStampNow, display, looksLikeRelativeTime, setInterval, clearInterval, setTimeout, Observable, createContextManager, } from '@datadog/browser-core';\nimport { ViewLoadingType } from '../../rawRumEvent.types';\nimport { trackViewEventCounts } from './trackViewEventCounts';\nimport { trackInitialViewMetrics } from './viewMetrics/trackInitialViewMetrics';\nimport { trackCommonViewMetrics } from './viewMetrics/trackCommonViewMetrics';\nimport { onBFCacheRestore } from './bfCacheSupport';\nimport { trackBfcacheMetrics } from './viewMetrics/trackBfcacheMetrics';\nexport const THROTTLE_VIEW_UPDATE_PERIOD = 3000;\nexport const SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE;\n// Some events or metrics can be captured after the end of the view. To avoid missing those;\n// an arbitrary delay is added for stopping their tracking after the view ends.\n//\n// Ideally, we would not stop and keep tracking events or metrics until the end of the session.\n// But this might have a small performance impact if there are many many views.\n// So let's have a fairly short delay improving the situation in most cases and avoid impacting performances too much.\nexport const KEEP_TRACKING_AFTER_VIEW_DELAY = 5 * ONE_MINUTE;\nexport function trackViews(location, lifeCycle, domMutationObservable, windowOpenObservable, configuration, locationChangeObservable, areViewsTrackedAutomatically, initialViewOptions) {\n const activeViews = new Set();\n let currentView = startNewView(ViewLoadingType.INITIAL_LOAD, clocksOrigin(), initialViewOptions);\n let stopOnBFCacheRestore;\n startViewLifeCycle();\n let locationChangeSubscription;\n if (areViewsTrackedAutomatically) {\n locationChangeSubscription = renewViewOnLocationChange(locationChangeObservable);\n if (configuration.trackBfcacheViews) {\n stopOnBFCacheRestore = onBFCacheRestore(configuration, (pageshowEvent) => {\n currentView.end();\n const startClocks = relativeToClocks(pageshowEvent.timeStamp);\n currentView = startNewView(ViewLoadingType.BF_CACHE, startClocks, undefined);\n });\n }\n }\n function startNewView(loadingType, startClocks, viewOptions) {\n const newlyCreatedView = newView(lifeCycle, domMutationObservable, windowOpenObservable, configuration, location, loadingType, startClocks, viewOptions);\n activeViews.add(newlyCreatedView);\n newlyCreatedView.stopObservable.subscribe(() => {\n activeViews.delete(newlyCreatedView);\n });\n return newlyCreatedView;\n }\n function startViewLifeCycle() {\n lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, () => {\n // Renew view on session renewal\n currentView = startNewView(ViewLoadingType.ROUTE_CHANGE, undefined, {\n name: currentView.name,\n service: currentView.service,\n version: currentView.version,\n context: currentView.contextManager.getContext(),\n });\n });\n lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_EXPIRED */, () => {\n currentView.end({ sessionIsActive: false });\n });\n }\n function renewViewOnLocationChange(locationChangeObservable) {\n return locationChangeObservable.subscribe(({ oldLocation, newLocation }) => {\n if (areDifferentLocation(oldLocation, newLocation)) {\n currentView.end();\n currentView = startNewView(ViewLoadingType.ROUTE_CHANGE);\n }\n });\n }\n return {\n addTiming: (name, time = timeStampNow()) => {\n currentView.addTiming(name, time);\n },\n startView: (options, startClocks) => {\n currentView.end({ endClocks: startClocks });\n currentView = startNewView(ViewLoadingType.ROUTE_CHANGE, startClocks, options);\n },\n setViewContext: (context) => {\n currentView.contextManager.setContext(context);\n },\n setViewContextProperty: (key, value) => {\n currentView.contextManager.setContextProperty(key, value);\n },\n setViewName: (name) => {\n currentView.setViewName(name);\n },\n getViewContext: () => currentView.contextManager.getContext(),\n stop: () => {\n if (locationChangeSubscription) {\n locationChangeSubscription.unsubscribe();\n }\n if (stopOnBFCacheRestore) {\n stopOnBFCacheRestore();\n }\n currentView.end();\n activeViews.forEach((view) => view.stop());\n },\n };\n}\nfunction newView(lifeCycle, domMutationObservable, windowOpenObservable, configuration, initialLocation, loadingType, startClocks = clocksNow(), viewOptions) {\n // Setup initial values\n const id = generateUUID();\n const stopObservable = new Observable();\n const customTimings = {};\n let documentVersion = 0;\n let endClocks;\n const location = shallowClone(initialLocation);\n const contextManager = createContextManager();\n let sessionIsActive = true;\n let name = viewOptions === null || viewOptions === void 0 ? void 0 : viewOptions.name;\n const service = (viewOptions === null || viewOptions === void 0 ? void 0 : viewOptions.service) || configuration.service;\n const version = (viewOptions === null || viewOptions === void 0 ? void 0 : viewOptions.version) || configuration.version;\n const context = viewOptions === null || viewOptions === void 0 ? void 0 : viewOptions.context;\n if (context) {\n contextManager.setContext(context);\n }\n const viewCreatedEvent = {\n id,\n name,\n startClocks,\n service,\n version,\n context,\n };\n lifeCycle.notify(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, viewCreatedEvent);\n lifeCycle.notify(2 /* LifeCycleEventType.VIEW_CREATED */, viewCreatedEvent);\n // Update the view every time the measures are changing\n const { throttled, cancel: cancelScheduleViewUpdate } = throttle(triggerViewUpdate, THROTTLE_VIEW_UPDATE_PERIOD, {\n leading: false,\n });\n const { setLoadEvent, setViewEnd, stop: stopCommonViewMetricsTracking, stopINPTracking, getCommonViewMetrics, } = trackCommonViewMetrics(lifeCycle, domMutationObservable, windowOpenObservable, configuration, scheduleViewUpdate, loadingType, startClocks);\n const { stop: stopInitialViewMetricsTracking, initialViewMetrics } = loadingType === ViewLoadingType.INITIAL_LOAD\n ? trackInitialViewMetrics(configuration, startClocks, setLoadEvent, scheduleViewUpdate)\n : { stop: noop, initialViewMetrics: {} };\n // Start BFCache-specific metrics when restoring from BFCache\n if (loadingType === ViewLoadingType.BF_CACHE) {\n trackBfcacheMetrics(startClocks, initialViewMetrics, scheduleViewUpdate);\n }\n const { stop: stopEventCountsTracking, eventCounts } = trackViewEventCounts(lifeCycle, id, scheduleViewUpdate);\n // Session keep alive\n const keepAliveIntervalId = setInterval(triggerViewUpdate, SESSION_KEEP_ALIVE_INTERVAL);\n const pageMayExitSubscription = lifeCycle.subscribe(11 /* LifeCycleEventType.PAGE_MAY_EXIT */, (pageMayExitEvent) => {\n if (pageMayExitEvent.reason === PageExitReason.UNLOADING) {\n triggerViewUpdate();\n }\n });\n // Initial view update\n triggerViewUpdate();\n // View context update should always be throttled\n contextManager.changeObservable.subscribe(scheduleViewUpdate);\n function triggerBeforeViewUpdate() {\n lifeCycle.notify(3 /* LifeCycleEventType.BEFORE_VIEW_UPDATED */, {\n id,\n name,\n context: contextManager.getContext(),\n startClocks,\n sessionIsActive,\n });\n }\n function scheduleViewUpdate() {\n triggerBeforeViewUpdate();\n throttled();\n }\n function triggerViewUpdate() {\n cancelScheduleViewUpdate();\n triggerBeforeViewUpdate();\n documentVersion += 1;\n const currentEnd = endClocks === undefined ? timeStampNow() : endClocks.timeStamp;\n lifeCycle.notify(4 /* LifeCycleEventType.VIEW_UPDATED */, {\n customTimings,\n documentVersion,\n id,\n name,\n service,\n version,\n context: contextManager.getContext(),\n loadingType,\n location,\n startClocks,\n commonViewMetrics: getCommonViewMetrics(),\n initialViewMetrics,\n duration: elapsed(startClocks.timeStamp, currentEnd),\n isActive: endClocks === undefined,\n sessionIsActive,\n eventCounts,\n });\n }\n return {\n get name() {\n return name;\n },\n service,\n version,\n contextManager,\n stopObservable,\n end(options = {}) {\n var _a, _b;\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(5 /* LifeCycleEventType.VIEW_ENDED */, { endClocks });\n lifeCycle.notify(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, { endClocks });\n clearInterval(keepAliveIntervalId);\n setViewEnd(endClocks.relative);\n stopCommonViewMetricsTracking();\n pageMayExitSubscription.unsubscribe();\n triggerViewUpdate();\n setTimeout(() => {\n this.stop();\n }, KEEP_TRACKING_AFTER_VIEW_DELAY);\n },\n stop() {\n stopInitialViewMetricsTracking();\n stopEventCountsTracking();\n stopINPTracking();\n stopObservable.notify();\n },\n addTiming(name, time) {\n if (endClocks) {\n return;\n }\n const relativeTime = looksLikeRelativeTime(time) ? time : elapsed(startClocks.timeStamp, time);\n customTimings[sanitizeTiming(name)] = relativeTime;\n scheduleViewUpdate();\n },\n setViewName(updatedName) {\n name = updatedName;\n triggerViewUpdate();\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 const sanitized = name.replace(/[^a-zA-Z0-9-_.@$]/g, '_');\n if (sanitized !== name) {\n display.warn(`Invalid timing name: ${name}, sanitized to: ${sanitized}`);\n }\n return sanitized;\n}\nfunction areDifferentLocation(currentLocation, otherLocation) {\n return (currentLocation.pathname !== otherLocation.pathname ||\n (!isHashAnAnchor(otherLocation.hash) &&\n getPathFromHash(otherLocation.hash) !== getPathFromHash(currentLocation.hash)));\n}\nfunction isHashAnAnchor(hash) {\n const correspondingId = hash.substring(1);\n // check if the correspondingId is empty because on Firefox an empty string passed to getElementById() prints a consol warning\n return correspondingId !== '' && !!document.getElementById(correspondingId);\n}\nfunction getPathFromHash(hash) {\n const index = hash.indexOf('?');\n return index < 0 ? hash : hash.slice(0, index);\n}\n//# sourceMappingURL=trackViews.js.map","import { getTimeZone, DISCARDED, isEmptyObject, mapValues, toServerDuration } from '@datadog/browser-core';\nimport { discardNegativeDuration } from '../discardNegativeDuration';\nimport { RumEventType } from '../../rawRumEvent.types';\nimport { trackViews } from './trackViews';\nexport function startViewCollection(lifeCycle, hooks, configuration, location, domMutationObservable, pageOpenObservable, locationChangeObservable, recorderApi, viewHistory, initialViewOptions) {\n lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_UPDATED */, (view) => lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processViewUpdate(view, configuration, recorderApi)));\n hooks.register(0 /* HookNames.Assemble */, ({ startTime, eventType }) => {\n const view = viewHistory.findView(startTime);\n if (!view) {\n return DISCARDED;\n }\n return {\n type: eventType,\n service: view.service,\n version: view.version,\n context: view.context,\n view: {\n id: view.id,\n name: view.name,\n },\n };\n });\n hooks.register(1 /* HookNames.AssembleTelemetry */, ({ startTime }) => {\n var _a;\n return ({\n view: {\n id: (_a = viewHistory.findView(startTime)) === null || _a === void 0 ? void 0 : _a.id,\n },\n });\n });\n return trackViews(location, lifeCycle, domMutationObservable, pageOpenObservable, configuration, locationChangeObservable, !configuration.trackViewsManually, initialViewOptions);\n}\nfunction processViewUpdate(view, configuration, recorderApi) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;\n const replayStats = recorderApi.getReplayStats(view.id);\n const clsDevicePixelRatio = (_b = (_a = view.commonViewMetrics) === null || _a === void 0 ? void 0 : _a.cumulativeLayoutShift) === null || _b === void 0 ? void 0 : _b.devicePixelRatio;\n const viewEvent = {\n _dd: {\n document_version: view.documentVersion,\n replay_stats: replayStats,\n cls: clsDevicePixelRatio\n ? {\n device_pixel_ratio: clsDevicePixelRatio,\n }\n : undefined,\n configuration: {\n start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n },\n },\n date: view.startClocks.timeStamp,\n type: RumEventType.VIEW,\n view: {\n action: {\n count: view.eventCounts.actionCount,\n },\n frustration: {\n count: view.eventCounts.frustrationCount,\n },\n cumulative_layout_shift: (_c = view.commonViewMetrics.cumulativeLayoutShift) === null || _c === void 0 ? void 0 : _c.value,\n cumulative_layout_shift_time: toServerDuration((_d = view.commonViewMetrics.cumulativeLayoutShift) === null || _d === void 0 ? void 0 : _d.time),\n cumulative_layout_shift_target_selector: (_e = view.commonViewMetrics.cumulativeLayoutShift) === null || _e === void 0 ? void 0 : _e.targetSelector,\n first_byte: toServerDuration((_f = view.initialViewMetrics.navigationTimings) === null || _f === void 0 ? void 0 : _f.firstByte),\n dom_complete: toServerDuration((_g = view.initialViewMetrics.navigationTimings) === null || _g === void 0 ? void 0 : _g.domComplete),\n dom_content_loaded: toServerDuration((_h = view.initialViewMetrics.navigationTimings) === null || _h === void 0 ? void 0 : _h.domContentLoaded),\n dom_interactive: toServerDuration((_j = view.initialViewMetrics.navigationTimings) === null || _j === void 0 ? void 0 : _j.domInteractive),\n error: {\n count: view.eventCounts.errorCount,\n },\n first_contentful_paint: toServerDuration(view.initialViewMetrics.firstContentfulPaint),\n first_input_delay: toServerDuration((_k = view.initialViewMetrics.firstInput) === null || _k === void 0 ? void 0 : _k.delay),\n first_input_time: toServerDuration((_l = view.initialViewMetrics.firstInput) === null || _l === void 0 ? void 0 : _l.time),\n first_input_target_selector: (_m = view.initialViewMetrics.firstInput) === null || _m === void 0 ? void 0 : _m.targetSelector,\n interaction_to_next_paint: toServerDuration((_o = view.commonViewMetrics.interactionToNextPaint) === null || _o === void 0 ? void 0 : _o.value),\n interaction_to_next_paint_time: toServerDuration((_p = view.commonViewMetrics.interactionToNextPaint) === null || _p === void 0 ? void 0 : _p.time),\n interaction_to_next_paint_target_selector: (_q = view.commonViewMetrics.interactionToNextPaint) === null || _q === void 0 ? void 0 : _q.targetSelector,\n is_active: view.isActive,\n name: view.name,\n largest_contentful_paint: toServerDuration((_r = view.initialViewMetrics.largestContentfulPaint) === null || _r === void 0 ? void 0 : _r.value),\n largest_contentful_paint_target_selector: (_s = view.initialViewMetrics.largestContentfulPaint) === null || _s === void 0 ? void 0 : _s.targetSelector,\n load_event: toServerDuration((_t = view.initialViewMetrics.navigationTimings) === null || _t === void 0 ? void 0 : _t.loadEvent),\n loading_time: discardNegativeDuration(toServerDuration(view.commonViewMetrics.loadingTime)),\n loading_type: view.loadingType,\n long_task: {\n count: view.eventCounts.longTaskCount,\n },\n performance: computeViewPerformanceData(view.commonViewMetrics, view.initialViewMetrics),\n resource: {\n count: view.eventCounts.resourceCount,\n },\n time_spent: toServerDuration(view.duration),\n },\n display: view.commonViewMetrics.scroll\n ? {\n scroll: {\n max_depth: view.commonViewMetrics.scroll.maxDepth,\n max_depth_scroll_top: view.commonViewMetrics.scroll.maxDepthScrollTop,\n max_scroll_height: view.commonViewMetrics.scroll.maxScrollHeight,\n max_scroll_height_time: toServerDuration(view.commonViewMetrics.scroll.maxScrollHeightTime),\n },\n }\n : undefined,\n privacy: {\n replay_level: configuration.defaultPrivacyLevel,\n },\n device: {\n locale: navigator.language,\n locales: navigator.languages,\n time_zone: getTimeZone(),\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 duration: view.duration,\n domainContext: {\n location: view.location,\n },\n };\n}\nfunction computeViewPerformanceData({ cumulativeLayoutShift, interactionToNextPaint }, { firstContentfulPaint, firstInput, largestContentfulPaint }) {\n return {\n cls: cumulativeLayoutShift && {\n score: cumulativeLayoutShift.value,\n timestamp: toServerDuration(cumulativeLayoutShift.time),\n target_selector: cumulativeLayoutShift.targetSelector,\n previous_rect: cumulativeLayoutShift.previousRect,\n current_rect: cumulativeLayoutShift.currentRect,\n },\n fcp: firstContentfulPaint && { timestamp: toServerDuration(firstContentfulPaint) },\n fid: firstInput && {\n duration: toServerDuration(firstInput.delay),\n timestamp: toServerDuration(firstInput.time),\n target_selector: firstInput.targetSelector,\n },\n inp: interactionToNextPaint && {\n duration: toServerDuration(interactionToNextPaint.value),\n timestamp: toServerDuration(interactionToNextPaint.time),\n target_selector: interactionToNextPaint.targetSelector,\n },\n lcp: largestContentfulPaint && {\n timestamp: toServerDuration(largestContentfulPaint.value),\n target_selector: largestContentfulPaint.targetSelector,\n resource_url: largestContentfulPaint.resourceUrl,\n },\n };\n}\n//# sourceMappingURL=viewCollection.js.map","import { Observable, SESSION_NOT_TRACKED, bridgeSupports, noop, performDraw, startSessionManager, } from '@datadog/browser-core';\nexport const RUM_SESSION_KEY = 'rum';\nexport function startRumSessionManager(configuration, lifeCycle, trackingConsentState) {\n const sessionManager = startSessionManager(configuration, RUM_SESSION_KEY, (rawTrackingType) => computeTrackingType(configuration, rawTrackingType), trackingConsentState);\n sessionManager.expireObservable.subscribe(() => {\n lifeCycle.notify(9 /* LifeCycleEventType.SESSION_EXPIRED */);\n });\n sessionManager.renewObservable.subscribe(() => {\n lifeCycle.notify(10 /* LifeCycleEventType.SESSION_RENEWED */);\n });\n sessionManager.sessionStateUpdateObservable.subscribe(({ previousState, newState }) => {\n if (!previousState.forcedReplay && newState.forcedReplay) {\n const sessionEntity = sessionManager.findSession();\n if (sessionEntity) {\n sessionEntity.isReplayForced = true;\n }\n }\n });\n return {\n findTrackedSession: (startTime) => {\n const session = sessionManager.findSession(startTime);\n if (!session || session.trackingType === \"0\" /* RumTrackingType.NOT_TRACKED */) {\n return;\n }\n return {\n id: session.id,\n sessionReplay: session.trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */\n ? 1 /* SessionReplayState.SAMPLED */\n : session.isReplayForced\n ? 2 /* SessionReplayState.FORCED */\n : 0 /* SessionReplayState.OFF */,\n anonymousId: session.anonymousId,\n };\n },\n expire: sessionManager.expire,\n expireObservable: sessionManager.expireObservable,\n setForcedReplay: () => sessionManager.updateSessionState({ forcedReplay: '1' }),\n };\n}\n/**\n * Start a tracked replay session stub\n */\nexport function startRumSessionManagerStub() {\n const session = {\n id: '00000000-aaaa-0000-aaaa-000000000000',\n sessionReplay: bridgeSupports(\"records\" /* BridgeCapability.RECORDS */) ? 1 /* SessionReplayState.SAMPLED */ : 0 /* SessionReplayState.OFF */,\n };\n return {\n findTrackedSession: () => session,\n expire: noop,\n expireObservable: new Observable(),\n setForcedReplay: noop,\n };\n}\nfunction computeTrackingType(configuration, rawTrackingType) {\n if (hasValidRumSession(rawTrackingType)) {\n return rawTrackingType;\n }\n if (!performDraw(configuration.sessionSampleRate)) {\n return \"0\" /* RumTrackingType.NOT_TRACKED */;\n }\n if (!performDraw(configuration.sessionReplaySampleRate)) {\n return \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */;\n }\n return \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */;\n}\nfunction hasValidRumSession(trackingType) {\n return (trackingType === \"0\" /* RumTrackingType.NOT_TRACKED */ ||\n trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */ ||\n trackingType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */);\n}\n//# sourceMappingURL=rumSessionManager.js.map","import { createBatch, createFlushController, createHttpRequest } from '@datadog/browser-core';\nimport { RumEventType } from '../rawRumEvent.types';\nexport function startRumBatch(configuration, lifeCycle, reportError, pageMayExitObservable, sessionExpireObservable, createEncoder) {\n const endpoints = [configuration.rumEndpointBuilder];\n if (configuration.replica) {\n endpoints.push(configuration.replica.rumEndpointBuilder);\n }\n const batch = createBatch({\n encoder: createEncoder(2 /* DeflateEncoderStreamId.RUM */),\n request: createHttpRequest(endpoints, reportError),\n flushController: createFlushController({\n pageMayExitObservable,\n sessionExpireObservable,\n }),\n });\n lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, (serverRumEvent) => {\n if (serverRumEvent.type === RumEventType.VIEW) {\n batch.upsert(serverRumEvent, serverRumEvent.view.id);\n }\n else {\n batch.add(serverRumEvent);\n }\n });\n return batch;\n}\n//# sourceMappingURL=startRumBatch.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startRumEventBridge(lifeCycle) {\n const bridge = getEventBridge();\n lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, (serverRumEvent) => {\n bridge.send('rum', serverRumEvent);\n });\n}\n//# sourceMappingURL=startRumEventBridge.js.map","import { SESSION_TIME_OUT_DELAY, relativeNow, createValueHistory, DISCARDED } 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 const URL_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startUrlContexts(lifeCycle, hooks, locationChangeObservable, location) {\n const urlContextHistory = createValueHistory({ expireDelay: URL_CONTEXT_TIME_OUT_DELAY });\n let previousViewUrl;\n lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, ({ startClocks }) => {\n const viewUrl = location.href;\n urlContextHistory.add(buildUrlContext({\n url: viewUrl,\n referrer: !previousViewUrl ? document.referrer : previousViewUrl,\n }), startClocks.relative);\n previousViewUrl = viewUrl;\n });\n lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, ({ endClocks }) => {\n urlContextHistory.closeActive(endClocks.relative);\n });\n const locationChangeSubscription = locationChangeObservable.subscribe(({ newLocation }) => {\n const current = urlContextHistory.find();\n if (current) {\n const 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({ url, referrer }) {\n return {\n url,\n referrer,\n };\n }\n hooks.register(0 /* HookNames.Assemble */, ({ startTime, eventType }) => {\n const urlContext = urlContextHistory.find(startTime);\n if (!urlContext) {\n return DISCARDED;\n }\n return {\n type: eventType,\n view: {\n url: urlContext.url,\n referrer: urlContext.referrer,\n },\n };\n });\n return {\n findUrl: (startTime) => urlContextHistory.find(startTime),\n stop: () => {\n locationChangeSubscription.unsubscribe();\n urlContextHistory.stop();\n },\n };\n}\n//# sourceMappingURL=urlContexts.js.map","import { addEventListener, instrumentMethod, Observable, shallowClone } from '@datadog/browser-core';\nexport function createLocationChangeObservable(configuration, location) {\n let currentLocation = shallowClone(location);\n return new Observable((observable) => {\n const { stop: stopHistoryTracking } = trackHistory(configuration, onLocationChange);\n const { stop: stopHashTracking } = trackHash(configuration, onLocationChange);\n function onLocationChange() {\n if (currentLocation.href === location.href) {\n return;\n }\n const newLocation = shallowClone(location);\n observable.notify({\n newLocation,\n oldLocation: currentLocation,\n });\n currentLocation = newLocation;\n }\n return () => {\n stopHistoryTracking();\n stopHashTracking();\n };\n });\n}\nfunction trackHistory(configuration, onHistoryChange) {\n const { stop: stopInstrumentingPushState } = instrumentMethod(getHistoryInstrumentationTarget('pushState'), 'pushState', ({ onPostCall }) => {\n onPostCall(onHistoryChange);\n });\n const { stop: stopInstrumentingReplaceState } = instrumentMethod(getHistoryInstrumentationTarget('replaceState'), 'replaceState', ({ onPostCall }) => {\n onPostCall(onHistoryChange);\n });\n const { stop: removeListener } = addEventListener(configuration, window, \"popstate\" /* DOM_EVENT.POP_STATE */, onHistoryChange);\n return {\n 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}\nfunction getHistoryInstrumentationTarget(methodName) {\n // Ideally we should always instument the method on the prototype, however some frameworks (e.g [Next.js](https://github.com/vercel/next.js/blob/d3f5532065f3e3bb84fb54bd2dfd1a16d0f03a21/packages/next/src/client/components/app-router.tsx#L429))\n // are wrapping the instance method. In that case we should also wrap the instance method.\n return Object.prototype.hasOwnProperty.call(history, methodName) ? history : History.prototype;\n}\n//# sourceMappingURL=locationChangeObservable.js.map","import { SESSION_TIME_OUT_DELAY, SKIPPED, createValueHistory, isEmptyObject } from '@datadog/browser-core';\nimport { RumEventType } from '../../rawRumEvent.types';\nexport const FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport const 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, hooks, configuration) {\n const featureFlagContexts = createValueHistory({\n expireDelay: FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY,\n });\n lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, ({ startClocks }) => {\n featureFlagContexts.add({}, startClocks.relative);\n });\n lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, ({ endClocks }) => {\n featureFlagContexts.closeActive(endClocks.relative);\n });\n hooks.register(0 /* HookNames.Assemble */, ({ startTime, eventType }) => {\n const trackFeatureFlagsForEvents = configuration.trackFeatureFlagsForEvents.concat([\n RumEventType.VIEW,\n RumEventType.ERROR,\n ]);\n if (!trackFeatureFlagsForEvents.includes(eventType)) {\n return SKIPPED;\n }\n const featureFlagContext = featureFlagContexts.find(startTime);\n if (!featureFlagContext || isEmptyObject(featureFlagContext)) {\n return SKIPPED;\n }\n return {\n type: eventType,\n feature_flags: featureFlagContext,\n };\n });\n return {\n addFeatureFlagEvaluation: (key, value) => {\n const currentContext = featureFlagContexts.find();\n if (currentContext) {\n currentContext[key] = value;\n }\n },\n };\n}\n//# sourceMappingURL=featureFlagContext.js.map","import { ONE_SECOND, addTelemetryMetrics, setInterval } from '@datadog/browser-core';\nexport const MEASURES_PERIOD_DURATION = 10 * ONE_SECOND;\nlet currentPeriodMeasures;\nlet batchHasRumEvent;\nexport function startCustomerDataTelemetry(telemetry, lifeCycle, batchFlushObservable) {\n if (!telemetry.metricsEnabled) {\n return;\n }\n initCurrentPeriodMeasures();\n batchHasRumEvent = false;\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(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, () => {\n batchHasRumEvent = true;\n });\n batchFlushObservable.subscribe(({ bytesCount, 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 batchHasRumEvent = false;\n currentPeriodMeasures.batchCount += 1;\n updateMeasure(currentPeriodMeasures.batchBytesCount, bytesCount);\n updateMeasure(currentPeriodMeasures.batchMessagesCount, messagesCount);\n });\n setInterval(sendCurrentPeriodMeasures, MEASURES_PERIOD_DURATION);\n}\nfunction sendCurrentPeriodMeasures() {\n if (currentPeriodMeasures.batchCount === 0) {\n return;\n }\n // monitor-until: forever\n addTelemetryMetrics(\"Customer data measures\" /* TelemetryMetrics.CUSTOMER_DATA_METRIC_NAME */, currentPeriodMeasures);\n initCurrentPeriodMeasures();\n}\nfunction createMeasure() {\n return { min: Infinity, max: 0, sum: 0 };\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 initCurrentPeriodMeasures() {\n currentPeriodMeasures = {\n batchCount: 0,\n batchBytesCount: createMeasure(),\n batchMessagesCount: createMeasure(),\n };\n}\n//# sourceMappingURL=startCustomerDataTelemetry.js.map","import { SKIPPED, elapsed, createValueHistory, SESSION_TIME_OUT_DELAY, toServerDuration, addEventListeners, relativeNow, } from '@datadog/browser-core';\nimport { supportPerformanceTimingEvent, RumPerformanceEntryType } from '../../browser/performanceObservable';\nimport { RumEventType } from '../../rawRumEvent.types';\n// Arbitrary value to cap number of element for memory consumption in the browser\nexport const MAX_PAGE_STATE_ENTRIES = 4000;\n// Arbitrary value to cap number of element for backend & to save bandwidth\nexport const MAX_PAGE_STATE_ENTRIES_SELECTABLE = 500;\nexport const PAGE_STATE_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startPageStateHistory(hooks, configuration, maxPageStateEntriesSelectable = MAX_PAGE_STATE_ENTRIES_SELECTABLE) {\n const pageStateEntryHistory = createValueHistory({\n expireDelay: PAGE_STATE_CONTEXT_TIME_OUT_DELAY,\n maxEntries: MAX_PAGE_STATE_ENTRIES,\n });\n let currentPageState;\n if (supportPerformanceTimingEvent(RumPerformanceEntryType.VISIBILITY_STATE)) {\n const visibilityEntries = performance.getEntriesByType(RumPerformanceEntryType.VISIBILITY_STATE);\n visibilityEntries.forEach((entry) => {\n const state = entry.name === 'hidden' ? \"hidden\" /* PageState.HIDDEN */ : \"active\" /* PageState.ACTIVE */;\n addPageState(state, entry.startTime);\n });\n }\n addPageState(getPageState(), relativeNow());\n const { stop: stopEventListeners } = addEventListeners(configuration, window, [\n \"pageshow\" /* DOM_EVENT.PAGE_SHOW */,\n \"focus\" /* DOM_EVENT.FOCUS */,\n \"blur\" /* DOM_EVENT.BLUR */,\n \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */,\n \"resume\" /* DOM_EVENT.RESUME */,\n \"freeze\" /* DOM_EVENT.FREEZE */,\n \"pagehide\" /* DOM_EVENT.PAGE_HIDE */,\n ], (event) => {\n addPageState(computePageState(event), event.timeStamp);\n }, { capture: true });\n function addPageState(nextPageState, startTime = relativeNow()) {\n if (nextPageState === currentPageState) {\n return;\n }\n currentPageState = nextPageState;\n pageStateEntryHistory.closeActive(startTime);\n pageStateEntryHistory.add({ state: currentPageState, startTime }, startTime);\n }\n function wasInPageStateDuringPeriod(state, startTime, duration) {\n return pageStateEntryHistory.findAll(startTime, duration).some((pageState) => pageState.state === state);\n }\n hooks.register(0 /* HookNames.Assemble */, ({ startTime, duration = 0, eventType }) => {\n if (eventType === RumEventType.VIEW) {\n const pageStates = pageStateEntryHistory.findAll(startTime, duration);\n return {\n type: eventType,\n _dd: { page_states: processPageStates(pageStates, startTime, maxPageStateEntriesSelectable) },\n };\n }\n if (eventType === RumEventType.ACTION || eventType === RumEventType.ERROR) {\n return {\n type: eventType,\n view: { in_foreground: wasInPageStateDuringPeriod(\"active\" /* PageState.ACTIVE */, startTime, 0) },\n };\n }\n return SKIPPED;\n });\n return {\n wasInPageStateDuringPeriod,\n addPageState,\n stop: () => {\n stopEventListeners();\n pageStateEntryHistory.stop();\n },\n };\n}\nfunction processPageStates(pageStateEntries, eventStartTime, maxPageStateEntriesSelectable) {\n if (pageStateEntries.length === 0) {\n return;\n }\n return pageStateEntries\n .slice(-maxPageStateEntriesSelectable)\n .reverse()\n .map(({ state, startTime }) => ({\n state,\n start: toServerDuration(elapsed(eventStartTime, startTime)),\n }));\n}\nfunction computePageState(event) {\n if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n return \"frozen\" /* PageState.FROZEN */;\n }\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}\n//# sourceMappingURL=pageStateHistory.js.map","import { monitor } from '@datadog/browser-core';\nimport { getViewportDimension, initViewportObservable } from '../../browser/viewportObservable';\nexport function startDisplayContext(hooks, configuration) {\n let viewport;\n // Use requestAnimationFrame to delay the calculation of viewport dimensions until after SDK initialization, preventing long tasks.\n const animationFrameId = requestAnimationFrame(monitor(() => {\n viewport = getViewportDimension();\n }));\n const unsubscribeViewport = initViewportObservable(configuration).subscribe((viewportDimension) => {\n viewport = viewportDimension;\n }).unsubscribe;\n hooks.register(0 /* HookNames.Assemble */, ({ eventType }) => ({\n type: eventType,\n display: viewport ? { viewport } : undefined,\n }));\n return {\n stop: () => {\n unsubscribeViewport();\n if (animationFrameId) {\n cancelAnimationFrame(animationFrameId);\n }\n },\n };\n}\n//# sourceMappingURL=displayContext.js.map","import { setInterval, clearInterval, Observable, addEventListener, ONE_SECOND, findCommaSeparatedValue, } from '@datadog/browser-core';\nexport function createCookieObservable(configuration, cookieName) {\n const detectCookieChangeStrategy = window.cookieStore\n ? listenToCookieStoreChange(configuration)\n : watchCookieFallback;\n return new Observable((observable) => detectCookieChangeStrategy(cookieName, (event) => observable.notify(event)));\n}\nfunction listenToCookieStoreChange(configuration) {\n return (cookieName, callback) => {\n const listener = addEventListener(configuration, window.cookieStore, \"change\" /* DOM_EVENT.CHANGE */, (event) => {\n // Based on our experimentation, we're assuming that entries for the same cookie cannot be in both the 'changed' and 'deleted' arrays.\n // However, due to ambiguity in the specification, we asked for clarification: https://github.com/WICG/cookie-store/issues/226\n const changeEvent = event.changed.find((event) => event.name === cookieName) ||\n event.deleted.find((event) => event.name === cookieName);\n if (changeEvent) {\n callback(changeEvent.value);\n }\n });\n return listener.stop;\n };\n}\nexport const WATCH_COOKIE_INTERVAL_DELAY = ONE_SECOND;\nfunction watchCookieFallback(cookieName, callback) {\n const previousCookieValue = findCommaSeparatedValue(document.cookie, cookieName);\n const watchCookieIntervalId = setInterval(() => {\n const cookieValue = findCommaSeparatedValue(document.cookie, cookieName);\n if (cookieValue !== previousCookieValue) {\n callback(cookieValue);\n }\n }, WATCH_COOKIE_INTERVAL_DELAY);\n return () => {\n clearInterval(watchCookieIntervalId);\n };\n}\n//# sourceMappingURL=cookieObservable.js.map","import { getInitCookie, SKIPPED } from '@datadog/browser-core';\nimport { createCookieObservable } from '../../browser/cookieObservable';\nexport const CI_VISIBILITY_TEST_ID_COOKIE_NAME = 'datadog-ci-visibility-test-execution-id';\nexport function startCiVisibilityContext(configuration, hooks, cookieObservable = createCookieObservable(configuration, CI_VISIBILITY_TEST_ID_COOKIE_NAME)) {\n var _a;\n let testExecutionId = getInitCookie(CI_VISIBILITY_TEST_ID_COOKIE_NAME) || ((_a = window.Cypress) === null || _a === void 0 ? void 0 : _a.env('traceId'));\n const cookieObservableSubscription = cookieObservable.subscribe((value) => {\n testExecutionId = value;\n });\n hooks.register(0 /* HookNames.Assemble */, ({ eventType }) => {\n if (typeof testExecutionId !== 'string') {\n return SKIPPED;\n }\n return {\n type: eventType,\n session: {\n type: \"ci_test\" /* SessionType.CI_TEST */,\n },\n ci_test: {\n test_execution_id: testExecutionId,\n },\n };\n });\n return {\n stop: () => {\n cookieObservableSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=ciVisibilityContext.js.map","import { toServerDuration, relativeToClocks, generateUUID, createValueHistory, SESSION_TIME_OUT_DELAY, addDuration, } from '@datadog/browser-core';\nimport { RumEventType, RumLongTaskEntryType } from '../../rawRumEvent.types';\nimport { createPerformanceObservable, RumPerformanceEntryType, supportPerformanceTimingEvent, } from '../../browser/performanceObservable';\nexport const LONG_TASK_ID_HISTORY_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startLongTaskCollection(lifeCycle, configuration) {\n const history = createValueHistory({\n expireDelay: LONG_TASK_ID_HISTORY_TIME_OUT_DELAY,\n });\n const entryType = supportPerformanceTimingEvent(RumPerformanceEntryType.LONG_ANIMATION_FRAME)\n ? RumPerformanceEntryType.LONG_ANIMATION_FRAME\n : RumPerformanceEntryType.LONG_TASK;\n const subscription = createPerformanceObservable(configuration, {\n type: entryType,\n buffered: true,\n }).subscribe((entries) => {\n for (const entry of entries) {\n if (!configuration.trackLongTasks) {\n break;\n }\n const startClocks = relativeToClocks(entry.startTime);\n const taskId = generateUUID();\n const rawRumEvent = processEntry(entry, startClocks, taskId);\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, {\n rawRumEvent,\n startTime: startClocks.relative,\n duration: entry.duration,\n domainContext: { performanceEntry: entry },\n });\n history.add({ id: taskId, startClocks, duration: entry.duration, entryType }, startClocks.relative);\n history.closeActive(addDuration(startClocks.relative, entry.duration));\n }\n });\n const longTaskContexts = {\n findLongTasks: (startTime, duration) => history.findAll(startTime, duration),\n };\n return {\n stop: () => {\n subscription.unsubscribe();\n history.stop();\n },\n longTaskContexts,\n };\n}\nfunction processEntry(entry, startClocks, taskId) {\n const baseEvent = {\n date: startClocks.timeStamp,\n type: RumEventType.LONG_TASK,\n _dd: { discarded: false },\n };\n if (entry.entryType === RumPerformanceEntryType.LONG_TASK) {\n return {\n ...baseEvent,\n long_task: {\n id: taskId,\n entry_type: RumLongTaskEntryType.LONG_TASK,\n duration: toServerDuration(entry.duration),\n },\n };\n }\n return {\n ...baseEvent,\n long_task: {\n id: taskId,\n entry_type: RumLongTaskEntryType.LONG_ANIMATION_FRAME,\n duration: toServerDuration(entry.duration),\n blocking_duration: toServerDuration(entry.blockingDuration),\n first_ui_event_timestamp: toServerDuration(entry.firstUIEventTimestamp),\n render_start: toServerDuration(entry.renderStart),\n style_and_layout_start: toServerDuration(entry.styleAndLayoutStart),\n start_time: toServerDuration(entry.startTime),\n scripts: entry.scripts.map((script) => ({\n duration: toServerDuration(script.duration),\n pause_duration: toServerDuration(script.pauseDuration),\n forced_style_and_layout_duration: toServerDuration(script.forcedStyleAndLayoutDuration),\n start_time: toServerDuration(script.startTime),\n execution_start: toServerDuration(script.executionStart),\n source_url: script.sourceURL,\n source_function_name: script.sourceFunctionName,\n source_char_position: script.sourceCharPosition,\n invoker: script.invoker,\n invoker_type: script.invokerType,\n window_attribution: script.windowAttribution,\n })),\n },\n };\n}\n//# sourceMappingURL=longTaskCollection.js.map","import { SKIPPED, getSyntheticsResultId, getSyntheticsTestId, willSyntheticsInjectRum, isSyntheticsTest, } from '@datadog/browser-core';\nexport function startSyntheticsContext(hooks) {\n hooks.register(0 /* HookNames.Assemble */, ({ eventType }) => {\n if (!isSyntheticsTest()) {\n return SKIPPED;\n }\n const testId = getSyntheticsTestId();\n const resultId = getSyntheticsResultId();\n return {\n type: eventType,\n session: {\n type: \"synthetics\" /* SessionType.SYNTHETICS */,\n },\n synthetics: {\n test_id: testId,\n result_id: resultId,\n injected: willSyntheticsInjectRum(),\n },\n };\n });\n}\n//# sourceMappingURL=syntheticsContext.js.map","import { sanitize, deepClone, getType, objectEntries } from '@datadog/browser-core';\n/**\n * Allows declaring and enforcing modifications to specific fields of an object.\n * Only supports modifying properties of an object (even if nested in an array).\n * Does not support array manipulation (adding/removing items).\n */\nexport function limitModification(object, modifiableFieldPaths, modifier) {\n const clone = deepClone(object);\n const result = modifier(clone);\n objectEntries(modifiableFieldPaths).forEach(([fieldPath, fieldType]) => \n // Traverse both object and clone simultaneously up to the path and apply the modification from the clone to the original object when the type is valid\n setValueAtPath(object, clone, fieldPath.split(/\\.|(?=\\[\\])/), fieldType));\n return result;\n}\nfunction setValueAtPath(object, clone, pathSegments, fieldType) {\n const [field, ...restPathSegments] = pathSegments;\n if (field === '[]') {\n if (Array.isArray(object) && Array.isArray(clone)) {\n object.forEach((item, i) => setValueAtPath(item, clone[i], restPathSegments, fieldType));\n }\n return;\n }\n if (!isValidObject(object) || !isValidObject(clone)) {\n return;\n }\n if (restPathSegments.length > 0) {\n return setValueAtPath(object[field], clone[field], restPathSegments, fieldType);\n }\n setNestedValue(object, field, clone[field], fieldType);\n}\nfunction setNestedValue(object, field, value, fieldType) {\n const newType = getType(value);\n if (newType === fieldType) {\n object[field] = sanitize(value);\n }\n else if (fieldType === 'object' && (newType === 'undefined' || newType === 'null')) {\n object[field] = {};\n }\n}\nfunction isValidObject(object) {\n return getType(object) === 'object';\n}\n//# sourceMappingURL=limitModification.js.map","import { combine, isEmptyObject, display, createEventRateLimiter, DISCARDED, buildTags, } from '@datadog/browser-core';\nimport { RumEventType } from '../rawRumEvent.types';\nimport { limitModification } from './limitModification';\nconst VIEW_MODIFIABLE_FIELD_PATHS = {\n 'view.name': 'string',\n 'view.url': 'string',\n 'view.referrer': 'string',\n};\nconst USER_CUSTOMIZABLE_FIELD_PATHS = {\n context: 'object',\n};\nconst ROOT_MODIFIABLE_FIELD_PATHS = {\n service: 'string',\n version: 'string',\n};\nlet modifiableFieldPathsByEvent;\nexport function startRumAssembly(configuration, lifeCycle, hooks, reportError, eventRateLimit) {\n modifiableFieldPathsByEvent = {\n [RumEventType.VIEW]: {\n 'view.performance.lcp.resource_url': 'string',\n ...USER_CUSTOMIZABLE_FIELD_PATHS,\n ...VIEW_MODIFIABLE_FIELD_PATHS,\n ...ROOT_MODIFIABLE_FIELD_PATHS,\n },\n [RumEventType.ERROR]: {\n 'error.message': 'string',\n 'error.stack': 'string',\n 'error.resource.url': 'string',\n 'error.fingerprint': 'string',\n ...USER_CUSTOMIZABLE_FIELD_PATHS,\n ...VIEW_MODIFIABLE_FIELD_PATHS,\n ...ROOT_MODIFIABLE_FIELD_PATHS,\n },\n [RumEventType.RESOURCE]: {\n 'resource.url': 'string',\n 'resource.graphql.variables': 'string',\n ...USER_CUSTOMIZABLE_FIELD_PATHS,\n ...VIEW_MODIFIABLE_FIELD_PATHS,\n ...ROOT_MODIFIABLE_FIELD_PATHS,\n },\n [RumEventType.ACTION]: {\n 'action.target.name': 'string',\n ...USER_CUSTOMIZABLE_FIELD_PATHS,\n ...VIEW_MODIFIABLE_FIELD_PATHS,\n ...ROOT_MODIFIABLE_FIELD_PATHS,\n },\n [RumEventType.LONG_TASK]: {\n 'long_task.scripts[].source_url': 'string',\n 'long_task.scripts[].invoker': 'string',\n ...USER_CUSTOMIZABLE_FIELD_PATHS,\n ...VIEW_MODIFIABLE_FIELD_PATHS,\n ...ROOT_MODIFIABLE_FIELD_PATHS,\n },\n [RumEventType.VITAL]: {\n ...USER_CUSTOMIZABLE_FIELD_PATHS,\n ...VIEW_MODIFIABLE_FIELD_PATHS,\n ...ROOT_MODIFIABLE_FIELD_PATHS,\n },\n };\n const eventRateLimiters = {\n [RumEventType.ERROR]: createEventRateLimiter(RumEventType.ERROR, reportError, eventRateLimit),\n [RumEventType.ACTION]: createEventRateLimiter(RumEventType.ACTION, reportError, eventRateLimit),\n [RumEventType.VITAL]: createEventRateLimiter(RumEventType.VITAL, reportError, eventRateLimit),\n };\n lifeCycle.subscribe(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, ({ startTime, duration, rawRumEvent, domainContext }) => {\n const defaultRumEventAttributes = hooks.triggerHook(0 /* HookNames.Assemble */, {\n eventType: rawRumEvent.type,\n startTime,\n duration,\n });\n if (defaultRumEventAttributes === DISCARDED) {\n return;\n }\n const serverRumEvent = combine(defaultRumEventAttributes, rawRumEvent, {\n ddtags: buildTags(configuration).join(','),\n });\n if (shouldSend(serverRumEvent, configuration.beforeSend, domainContext, eventRateLimiters)) {\n if (isEmptyObject(serverRumEvent.context)) {\n delete serverRumEvent.context;\n }\n lifeCycle.notify(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, serverRumEvent);\n }\n });\n}\nfunction shouldSend(event, beforeSend, domainContext, eventRateLimiters) {\n var _a;\n if (beforeSend) {\n const result = limitModification(event, modifiableFieldPathsByEvent[event.type], (event) => beforeSend(event, domainContext));\n if (result === false && event.type !== RumEventType.VIEW) {\n return false;\n }\n if (result === false) {\n display.warn(\"Can't dismiss view events using beforeSend!\");\n }\n }\n const rateLimitReached = (_a = eventRateLimiters[event.type]) === null || _a === void 0 ? void 0 : _a.isLimitReached();\n return !rateLimitReached;\n}\n//# sourceMappingURL=assembly.js.map","import { DISCARDED, SKIPPED } from '@datadog/browser-core';\nimport { RumEventType } from '../../rawRumEvent.types';\nexport function startSessionContext(hooks, sessionManager, recorderApi, viewHistory) {\n hooks.register(0 /* HookNames.Assemble */, ({ eventType, startTime }) => {\n const session = sessionManager.findTrackedSession(startTime);\n const view = viewHistory.findView(startTime);\n if (!session || !view) {\n return DISCARDED;\n }\n let hasReplay;\n let sampledForReplay;\n let isActive;\n if (eventType === RumEventType.VIEW) {\n hasReplay = recorderApi.getReplayStats(view.id) ? true : undefined;\n sampledForReplay = session.sessionReplay === 1 /* SessionReplayState.SAMPLED */;\n isActive = view.sessionIsActive ? undefined : false;\n }\n else {\n hasReplay = recorderApi.isRecording() ? true : undefined;\n }\n return {\n type: eventType,\n session: {\n id: session.id,\n type: \"user\" /* SessionType.USER */,\n has_replay: hasReplay,\n sampled_for_replay: sampledForReplay,\n is_active: isActive,\n },\n };\n });\n hooks.register(1 /* HookNames.AssembleTelemetry */, ({ startTime }) => {\n const session = sessionManager.findTrackedSession(startTime);\n if (!session) {\n return SKIPPED;\n }\n return {\n session: {\n id: session.id,\n },\n };\n });\n}\n//# sourceMappingURL=sessionContext.js.map","import { getConnectivity } from '@datadog/browser-core';\nexport function startConnectivityContext(hooks) {\n hooks.register(0 /* HookNames.Assemble */, ({ eventType }) => ({\n type: eventType,\n connectivity: getConnectivity(),\n }));\n}\n//# sourceMappingURL=connectivityContext.js.map","import { canUseEventBridge, currentDrift, round, timeStampNow } from '@datadog/browser-core';\nexport function startDefaultContext(hooks, configuration, sdkName) {\n hooks.register(0 /* HookNames.Assemble */, ({ eventType }) => {\n const source = configuration.source;\n return {\n type: eventType,\n _dd: {\n format_version: 2,\n drift: currentDrift(),\n configuration: {\n session_sample_rate: round(configuration.sessionSampleRate, 3),\n session_replay_sample_rate: round(configuration.sessionReplaySampleRate, 3),\n profiling_sample_rate: round(configuration.profilingSampleRate, 3),\n trace_sample_rate: round(configuration.traceSampleRate, 3),\n beta_encode_cookie_options: configuration.betaEncodeCookieOptions,\n },\n browser_sdk_version: canUseEventBridge() ? \"6.25.2\" : undefined,\n sdk_name: sdkName,\n },\n application: {\n id: configuration.applicationId,\n },\n date: timeStampNow(),\n source,\n };\n });\n hooks.register(1 /* HookNames.AssembleTelemetry */, () => ({\n application: { id: configuration.applicationId },\n }));\n}\n//# sourceMappingURL=defaultContext.js.map","import { DISCARDED, SKIPPED } from '@datadog/browser-core';\nexport function startTrackingConsentContext(hooks, trackingConsentState) {\n hooks.register(1 /* HookNames.AssembleTelemetry */, () => {\n const wasConsented = trackingConsentState.isGranted();\n if (!wasConsented) {\n return DISCARDED;\n }\n return SKIPPED;\n });\n}\n//# sourceMappingURL=trackingConsentContext.js.map","import { abstractHooks } from '@datadog/browser-core';\nexport const createHooks = (abstractHooks);\n//# sourceMappingURL=hooks.js.map","import { RumEventType } from '../../rawRumEvent.types';\nconst allowedEventTypes = [\n RumEventType.ACTION,\n RumEventType.ERROR,\n RumEventType.LONG_TASK,\n RumEventType.RESOURCE,\n RumEventType.VITAL,\n];\nexport function startEventCollection(lifeCycle) {\n return {\n addEvent: (startTime, event, domainContext, duration) => {\n if (!allowedEventTypes.includes(event.type)) {\n return;\n }\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, {\n startTime,\n rawRumEvent: event,\n domainContext,\n duration,\n });\n },\n };\n}\n//# sourceMappingURL=eventCollection.js.map","import { addTelemetryMetrics, noop } from '@datadog/browser-core';\nexport function startInitialViewMetricsTelemetry(lifeCycle, telemetry) {\n if (!telemetry.metricsEnabled) {\n return { stop: noop };\n }\n const { unsubscribe } = lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_UPDATED */, ({ initialViewMetrics }) => {\n if (!initialViewMetrics.largestContentfulPaint || !initialViewMetrics.navigationTimings) {\n return;\n }\n // The navigation timings become available shortly after the load event fires, so\n // we're snapshotting the LCP value available at that point. However, more LCP values\n // can be emitted until the page is scrolled or interacted with, so it's possible that\n // the final LCP value may differ. These metrics are intended to help diagnose\n // performance issues early in the page load process, and using LCP-at-page-load is a\n // good fit for that use case, but it's important to be aware that this is not\n // necessarily equivalent to the normal LCP metric.\n // monitor-until: 2026-07-01\n addTelemetryMetrics(\"Initial view metrics\" /* TelemetryMetrics.INITIAL_VIEW_METRICS_TELEMETRY_NAME */, {\n metrics: createCoreInitialViewMetrics(initialViewMetrics.largestContentfulPaint, initialViewMetrics.navigationTimings),\n });\n unsubscribe();\n });\n return {\n stop: unsubscribe,\n };\n}\nfunction createCoreInitialViewMetrics(lcp, navigation) {\n return {\n lcp: {\n value: lcp.value,\n },\n navigation: {\n domComplete: navigation.domComplete,\n domContentLoaded: navigation.domContentLoaded,\n domInteractive: navigation.domInteractive,\n firstByte: navigation.firstByte,\n loadEvent: navigation.loadEvent,\n },\n };\n}\n//# sourceMappingURL=startInitialViewMetricsTelemetry.js.map","import { sendToExtension, createPageMayExitObservable, startTelemetry, canUseEventBridge, addTelemetryDebug, startAccountContext, startGlobalContext, startUserContext, } from '@datadog/browser-core';\nimport { createDOMMutationObservable } from '../browser/domMutationObservable';\nimport { createWindowOpenObservable } from '../browser/windowOpenObservable';\nimport { startInternalContext } from '../domain/contexts/internalContext';\nimport { LifeCycle } from '../domain/lifeCycle';\nimport { startViewHistory } from '../domain/contexts/viewHistory';\nimport { startRequestCollection } from '../domain/requestCollection';\nimport { startActionCollection } from '../domain/action/actionCollection';\nimport { startErrorCollection } from '../domain/error/errorCollection';\nimport { startResourceCollection } from '../domain/resource/resourceCollection';\nimport { startViewCollection } from '../domain/view/viewCollection';\nimport { startRumSessionManager, startRumSessionManagerStub } from '../domain/rumSessionManager';\nimport { startRumBatch } from '../transport/startRumBatch';\nimport { startRumEventBridge } from '../transport/startRumEventBridge';\nimport { startUrlContexts } from '../domain/contexts/urlContexts';\nimport { createLocationChangeObservable } from '../browser/locationChangeObservable';\nimport { startFeatureFlagContexts } from '../domain/contexts/featureFlagContext';\nimport { startCustomerDataTelemetry } from '../domain/startCustomerDataTelemetry';\nimport { startPageStateHistory } from '../domain/contexts/pageStateHistory';\nimport { startDisplayContext } from '../domain/contexts/displayContext';\nimport { startVitalCollection } from '../domain/vital/vitalCollection';\nimport { startCiVisibilityContext } from '../domain/contexts/ciVisibilityContext';\nimport { startLongTaskCollection } from '../domain/longTask/longTaskCollection';\nimport { startSyntheticsContext } from '../domain/contexts/syntheticsContext';\nimport { startRumAssembly } from '../domain/assembly';\nimport { startSessionContext } from '../domain/contexts/sessionContext';\nimport { startConnectivityContext } from '../domain/contexts/connectivityContext';\nimport { startDefaultContext } from '../domain/contexts/defaultContext';\nimport { startTrackingConsentContext } from '../domain/contexts/trackingConsentContext';\nimport { createHooks } from '../domain/hooks';\nimport { startEventCollection } from '../domain/event/eventCollection';\nimport { startInitialViewMetricsTelemetry } from '../domain/view/viewMetrics/startInitialViewMetricsTelemetry';\nexport function startRum(configuration, recorderApi, profilerApi, initialViewOptions, createEncoder, \n// `startRum` and its subcomponents assume tracking consent is granted initially and starts\n// collecting logs unconditionally. As such, `startRum` should be called with a\n// `trackingConsentState` set to \"granted\".\ntrackingConsentState, customVitalsState, bufferedDataObservable, sdkName) {\n const cleanupTasks = [];\n const lifeCycle = new LifeCycle();\n const hooks = createHooks();\n lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, (event) => sendToExtension('rum', event));\n const reportError = (error) => {\n lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, { error });\n // monitor-until: forever, to keep an eye on the errors reported to customers\n addTelemetryDebug('Error reported to customer', { 'error.message': error.message });\n };\n const pageMayExitObservable = createPageMayExitObservable(configuration);\n const pageMayExitSubscription = pageMayExitObservable.subscribe((event) => {\n lifeCycle.notify(11 /* LifeCycleEventType.PAGE_MAY_EXIT */, event);\n });\n cleanupTasks.push(() => pageMayExitSubscription.unsubscribe());\n const telemetry = startTelemetry(\"browser-rum-sdk\" /* TelemetryService.RUM */, configuration, hooks, reportError, pageMayExitObservable, createEncoder);\n cleanupTasks.push(telemetry.stop);\n const session = !canUseEventBridge()\n ? startRumSessionManager(configuration, lifeCycle, trackingConsentState)\n : startRumSessionManagerStub();\n if (!canUseEventBridge()) {\n const batch = startRumBatch(configuration, lifeCycle, reportError, pageMayExitObservable, session.expireObservable, createEncoder);\n cleanupTasks.push(() => batch.stop());\n startCustomerDataTelemetry(telemetry, lifeCycle, batch.flushController.flushObservable);\n }\n else {\n startRumEventBridge(lifeCycle);\n }\n startTrackingConsentContext(hooks, trackingConsentState);\n const { stop: stopInitialViewMetricsTelemetry } = startInitialViewMetricsTelemetry(lifeCycle, telemetry);\n cleanupTasks.push(stopInitialViewMetricsTelemetry);\n const { stop: stopRumEventCollection, ...startRumEventCollectionResult } = startRumEventCollection(lifeCycle, hooks, configuration, session, recorderApi, initialViewOptions, customVitalsState, bufferedDataObservable, sdkName, reportError);\n cleanupTasks.push(stopRumEventCollection);\n bufferedDataObservable.unbuffer();\n // Add Clean-up tasks for Profiler API.\n cleanupTasks.push(() => profilerApi.stop());\n return {\n ...startRumEventCollectionResult,\n lifeCycle,\n session,\n stopSession: () => session.expire(),\n telemetry,\n stop: () => {\n cleanupTasks.forEach((task) => task());\n },\n hooks,\n };\n}\nexport function startRumEventCollection(lifeCycle, hooks, configuration, session, recorderApi, initialViewOptions, customVitalsState, bufferedDataObservable, sdkName, reportError) {\n const cleanupTasks = [];\n const domMutationObservable = createDOMMutationObservable();\n const locationChangeObservable = createLocationChangeObservable(configuration, location);\n const { observable: windowOpenObservable, stop: stopWindowOpen } = createWindowOpenObservable();\n cleanupTasks.push(stopWindowOpen);\n startDefaultContext(hooks, configuration, sdkName);\n const pageStateHistory = startPageStateHistory(hooks, configuration);\n cleanupTasks.push(() => pageStateHistory.stop());\n const viewHistory = startViewHistory(lifeCycle);\n cleanupTasks.push(() => viewHistory.stop());\n const urlContexts = startUrlContexts(lifeCycle, hooks, locationChangeObservable, location);\n cleanupTasks.push(() => urlContexts.stop());\n const featureFlagContexts = startFeatureFlagContexts(lifeCycle, hooks, configuration);\n startSessionContext(hooks, session, recorderApi, viewHistory);\n startConnectivityContext(hooks);\n const globalContext = startGlobalContext(hooks, configuration, 'rum', true);\n const userContext = startUserContext(hooks, configuration, session, 'rum');\n const accountContext = startAccountContext(hooks, configuration, 'rum');\n const actionCollection = startActionCollection(lifeCycle, hooks, domMutationObservable, windowOpenObservable, configuration);\n cleanupTasks.push(actionCollection.stop);\n const eventCollection = startEventCollection(lifeCycle);\n const displayContext = startDisplayContext(hooks, configuration);\n cleanupTasks.push(displayContext.stop);\n const ciVisibilityContext = startCiVisibilityContext(configuration, hooks);\n cleanupTasks.push(ciVisibilityContext.stop);\n startSyntheticsContext(hooks);\n startRumAssembly(configuration, lifeCycle, hooks, reportError);\n const { addTiming, startView, setViewName, setViewContext, setViewContextProperty, getViewContext, stop: stopViewCollection, } = startViewCollection(lifeCycle, hooks, configuration, location, domMutationObservable, windowOpenObservable, locationChangeObservable, recorderApi, viewHistory, initialViewOptions);\n cleanupTasks.push(stopViewCollection);\n const { stop: stopResourceCollection } = startResourceCollection(lifeCycle, configuration, pageStateHistory);\n cleanupTasks.push(stopResourceCollection);\n const { stop: stopLongTaskCollection, longTaskContexts } = startLongTaskCollection(lifeCycle, configuration);\n cleanupTasks.push(stopLongTaskCollection);\n const { addError } = startErrorCollection(lifeCycle, configuration, bufferedDataObservable);\n startRequestCollection(lifeCycle, configuration, session, userContext, accountContext);\n const vitalCollection = startVitalCollection(lifeCycle, pageStateHistory, customVitalsState);\n const internalContext = startInternalContext(configuration.applicationId, session, viewHistory, actionCollection.actionContexts, urlContexts);\n return {\n addAction: actionCollection.addAction,\n addEvent: eventCollection.addEvent,\n addError,\n addTiming,\n addFeatureFlagEvaluation: featureFlagContexts.addFeatureFlagEvaluation,\n startView,\n setViewContext,\n setViewContextProperty,\n getViewContext,\n setViewName,\n viewHistory,\n getInternalContext: internalContext.get,\n startDurationVital: vitalCollection.startDurationVital,\n stopDurationVital: vitalCollection.stopDurationVital,\n addDurationVital: vitalCollection.addDurationVital,\n addOperationStepVital: vitalCollection.addOperationStepVital,\n globalContext,\n userContext,\n accountContext,\n longTaskContexts,\n stop: () => cleanupTasks.forEach((task) => task()),\n };\n}\n//# sourceMappingURL=startRum.js.map","import { INTAKE_SITE_STAGING, INTAKE_SITE_US1, INTAKE_SITE_EU1 } from '@datadog/browser-core';\nexport function getSessionReplayUrl(configuration, { session, viewContext, errorType, }) {\n const sessionId = session ? session.id : 'no-session-id';\n const parameters = [];\n if (errorType !== undefined) {\n parameters.push(`error-type=${errorType}`);\n }\n if (viewContext) {\n parameters.push(`seed=${viewContext.id}`);\n parameters.push(`from=${viewContext.startClocks.timeStamp}`);\n }\n const origin = getDatadogSiteUrl(configuration);\n const path = `/rum/replay/sessions/${sessionId}`;\n return `${origin}${path}?${parameters.join('&')}`;\n}\nexport function getDatadogSiteUrl(rumConfiguration) {\n const site = rumConfiguration.site;\n const subdomain = rumConfiguration.subdomain || getSiteDefaultSubdomain(rumConfiguration);\n return `https://${subdomain ? `${subdomain}.` : ''}${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}\n//# sourceMappingURL=getSessionReplayUrl.js.map","export const MAX_STATS_HISTORY = 1000;\nlet statsPerView;\nexport function getSegmentsCount(viewId) {\n return getOrCreateReplayStats(viewId).segments_count;\n}\nexport function addSegment(viewId) {\n getOrCreateReplayStats(viewId).segments_count += 1;\n}\nexport function addRecord(viewId) {\n getOrCreateReplayStats(viewId).records_count += 1;\n}\nexport function addWroteData(viewId, additionalBytesCount) {\n getOrCreateReplayStats(viewId).segments_total_raw_size += additionalBytesCount;\n}\nexport function getReplayStats(viewId) {\n return statsPerView === null || statsPerView === void 0 ? void 0 : statsPerView.get(viewId);\n}\nexport function resetReplayStats() {\n statsPerView = undefined;\n}\nfunction getOrCreateReplayStats(viewId) {\n if (!statsPerView) {\n statsPerView = new Map();\n }\n let replayStats;\n if (statsPerView.has(viewId)) {\n replayStats = statsPerView.get(viewId);\n }\n else {\n replayStats = {\n records_count: 0,\n segments_count: 0,\n segments_total_raw_size: 0,\n };\n statsPerView.set(viewId, replayStats);\n if (statsPerView.size > MAX_STATS_HISTORY) {\n deleteOldestStats();\n }\n }\n return replayStats;\n}\nfunction deleteOldestStats() {\n if (!statsPerView) {\n return;\n }\n const toDelete = statsPerView.keys().next().value;\n if (toDelete) {\n statsPerView.delete(toDelete);\n }\n}\n//# sourceMappingURL=replayStats.js.map","import { addEventListener, concatBuffers } from '@datadog/browser-core';\nexport function createDeflateEncoder(configuration, worker, streamId) {\n let rawBytesCount = 0;\n let compressedData = [];\n let compressedDataTrailer;\n let isEmpty = true;\n let nextWriteActionId = 0;\n const pendingWriteActions = [];\n const { stop: removeMessageListener } = addEventListener(configuration, worker, 'message', ({ data: workerResponse }) => {\n if (workerResponse.type !== 'wrote' || workerResponse.streamId !== streamId) {\n return;\n }\n const nextPendingAction = pendingWriteActions[0];\n if (nextPendingAction) {\n if (nextPendingAction.id === workerResponse.id) {\n pendingWriteActions.shift();\n rawBytesCount += workerResponse.additionalBytesCount;\n compressedData.push(workerResponse.result);\n compressedDataTrailer = workerResponse.trailer;\n if (nextPendingAction.writeCallback) {\n nextPendingAction.writeCallback(workerResponse.result.byteLength);\n }\n else if (nextPendingAction.finishCallback) {\n nextPendingAction.finishCallback();\n }\n }\n else if (nextPendingAction.id < workerResponse.id) {\n // Worker responses received out of order\n removeMessageListener();\n }\n }\n });\n function consumeResult() {\n const output = compressedData.length === 0 ? new Uint8Array(0) : concatBuffers(compressedData.concat(compressedDataTrailer));\n const result = {\n rawBytesCount,\n output,\n outputBytesCount: output.byteLength,\n encoding: 'deflate',\n };\n rawBytesCount = 0;\n compressedData = [];\n return result;\n }\n function sendResetIfNeeded() {\n if (!isEmpty) {\n worker.postMessage({\n action: 'reset',\n streamId,\n });\n isEmpty = true;\n }\n }\n return {\n isAsync: true,\n get isEmpty() {\n return isEmpty;\n },\n write(data, callback) {\n worker.postMessage({\n action: 'write',\n id: nextWriteActionId,\n data,\n streamId,\n });\n pendingWriteActions.push({\n id: nextWriteActionId,\n writeCallback: callback,\n data,\n });\n isEmpty = false;\n nextWriteActionId += 1;\n },\n finish(callback) {\n sendResetIfNeeded();\n if (!pendingWriteActions.length) {\n callback(consumeResult());\n }\n else {\n // Make sure we do not call any write callback\n pendingWriteActions.forEach((pendingWriteAction) => {\n delete pendingWriteAction.writeCallback;\n });\n // Wait for the last action to finish before calling the finish callback\n pendingWriteActions[pendingWriteActions.length - 1].finishCallback = () => callback(consumeResult());\n }\n },\n finishSync() {\n sendResetIfNeeded();\n const pendingData = pendingWriteActions.map((pendingWriteAction) => pendingWriteAction.data).join('');\n // Ignore all pending write actions responses from the worker\n pendingWriteActions.length = 0;\n return { ...consumeResult(), pendingData };\n },\n estimateEncodedBytesCount(data) {\n // This is a rough estimation of the data size once it'll be encoded by deflate. We observed\n // that if it's the first chunk of data pushed to the stream, the ratio is lower (3-4), but\n // after that the ratio is greater (10+). We chose 8 here, which (on average) seems to produce\n // requests of the expected size.\n return data.length / 8;\n },\n stop() {\n removeMessageListener();\n },\n };\n}\n//# sourceMappingURL=deflateEncoder.js.map","import { addTelemetryError, display, DOCS_ORIGIN } from '@datadog/browser-core';\nexport function reportScriptLoadingError({ configuredUrl, error, source, scriptType, }) {\n display.error(`${source} failed to start: an error occurred while initializing the ${scriptType}:`, error);\n if (error instanceof Event || (error instanceof Error && isMessageCspRelated(error.message))) {\n let baseMessage;\n if (configuredUrl) {\n baseMessage = `Please make sure the ${scriptType} URL ${configuredUrl} is correct and CSP is correctly configured.`;\n }\n else {\n baseMessage = 'Please make sure CSP is correctly configured.';\n }\n display.error(`${baseMessage} See documentation at ${DOCS_ORIGIN}/integrations/content_security_policy_logs/#use-csp-with-real-user-monitoring-and-session-replay`);\n }\n else if (scriptType === 'worker') {\n addTelemetryError(error);\n }\n}\nfunction isMessageCspRelated(message) {\n return (message.includes('Content Security Policy') ||\n // Related to `require-trusted-types-for` CSP: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/require-trusted-types-for\n message.includes(\"requires 'TrustedScriptURL'\"));\n}\n//# sourceMappingURL=scriptLoadingError.js.map","import { addTelemetryError, display, addEventListener, setTimeout, ONE_SECOND } from '@datadog/browser-core';\nimport { reportScriptLoadingError } from '../scriptLoadingError';\nexport const INITIALIZATION_TIME_OUT_DELAY = 30 * ONE_SECOND;\nfunction createDeflateWorker(configuration) {\n return new Worker(configuration.workerUrl || URL.createObjectURL(new Blob([\"(()=>{function t(t){if(1===t.length)return t[0];const e=t.reduce((t,e)=>t+e.length,0),a=new Uint8Array(e);let n=0;for(const e of t)a.set(e,n),n+=e.length;return a}function e(t){for(var e=t.length;--e>=0;)t[e]=0}var a=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),n=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),r=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),i=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=Array(576);e(s);var h=Array(60);e(h);var l=Array(512);e(l);var _=Array(256);e(_);var o=Array(29);e(o);var d,u,f,c=Array(30);function p(t,e,a,n,r){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=n,this.max_length=r,this.has_stree=t&&t.length}function g(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(c);var v=function(t){return t<256?l[t]:l[256+(t>>>7)]},w=function(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},m=function(t,e,a){t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,w(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},b=function(t,e,a){m(t,a[2*e],a[2*e+1])},y=function(t,e){var a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},z=function(t,e,a){var n,r,i=Array(16),s=0;for(n=1;n<=15;n++)i[n]=s=s+a[n-1]<<1;for(r=0;r<=e;r++){var h=t[2*r+1];0!==h&&(t[2*r]=y(i[h]++,h))}},k=function(t){var e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0},x=function(t){t.bi_valid>8?w(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},A=function(t,e,a,n){var r=2*e,i=2*a;return t[r]<t[i]||t[r]===t[i]&&n[e]<=n[a]},U=function(t,e,a){for(var n=t.heap[a],r=a<<1;r<=t.heap_len&&(r<t.heap_len&&A(e,t.heap[r+1],t.heap[r],t.depth)&&r++,!A(e,n,t.heap[r],t.depth));)t.heap[a]=t.heap[r],a=r,r<<=1;t.heap[a]=n},B=function(t,e,r){var i,s,h,l,d=0;if(0!==t.last_lit)do{i=t.pending_buf[t.d_buf+2*d]<<8|t.pending_buf[t.d_buf+2*d+1],s=t.pending_buf[t.l_buf+d],d++,0===i?b(t,s,e):(h=_[s],b(t,h+256+1,e),0!==(l=a[h])&&(s-=o[h],m(t,s,l)),i--,h=v(i),b(t,h,r),0!==(l=n[h])&&(i-=c[h],m(t,i,l)))}while(d<t.last_lit);b(t,256,e)},I=function(t,e){var a,n,r,i=e.dyn_tree,s=e.stat_desc.static_tree,h=e.stat_desc.has_stree,l=e.stat_desc.elems,_=-1;for(t.heap_len=0,t.heap_max=573,a=0;a<l;a++)0!==i[2*a]?(t.heap[++t.heap_len]=_=a,t.depth[a]=0):i[2*a+1]=0;for(;t.heap_len<2;)i[2*(r=t.heap[++t.heap_len]=_<2?++_:0)]=1,t.depth[r]=0,t.opt_len--,h&&(t.static_len-=s[2*r+1]);for(e.max_code=_,a=t.heap_len>>1;a>=1;a--)U(t,i,a);r=l;do{a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],U(t,i,1),n=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=n,i[2*r]=i[2*a]+i[2*n],t.depth[r]=(t.depth[a]>=t.depth[n]?t.depth[a]:t.depth[n])+1,i[2*a+1]=i[2*n+1]=r,t.heap[1]=r++,U(t,i,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var a,n,r,i,s,h,l=e.dyn_tree,_=e.max_code,o=e.stat_desc.static_tree,d=e.stat_desc.has_stree,u=e.stat_desc.extra_bits,f=e.stat_desc.extra_base,c=e.stat_desc.max_length,p=0;for(i=0;i<=15;i++)t.bl_count[i]=0;for(l[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;a<573;a++)(i=l[2*l[2*(n=t.heap[a])+1]+1]+1)>c&&(i=c,p++),l[2*n+1]=i,n>_||(t.bl_count[i]++,s=0,n>=f&&(s=u[n-f]),h=l[2*n],t.opt_len+=h*(i+s),d&&(t.static_len+=h*(o[2*n+1]+s)));if(0!==p){do{for(i=c-1;0===t.bl_count[i];)i--;t.bl_count[i]--,t.bl_count[i+1]+=2,t.bl_count[c]--,p-=2}while(p>0);for(i=c;0!==i;i--)for(n=t.bl_count[i];0!==n;)(r=t.heap[--a])>_||(l[2*r+1]!==i&&(t.opt_len+=(i-l[2*r+1])*l[2*r],l[2*r+1]=i),n--)}}(t,e),z(i,_,t.bl_count)},E=function(t,e,a){var n,r,i=-1,s=e[1],h=0,l=7,_=4;for(0===s&&(l=138,_=3),e[2*(a+1)+1]=65535,n=0;n<=a;n++)r=s,s=e[2*(n+1)+1],++h<l&&r===s||(h<_?t.bl_tree[2*r]+=h:0!==r?(r!==i&&t.bl_tree[2*r]++,t.bl_tree[32]++):h<=10?t.bl_tree[34]++:t.bl_tree[36]++,h=0,i=r,0===s?(l=138,_=3):r===s?(l=6,_=3):(l=7,_=4))},C=function(t,e,a){var n,r,i=-1,s=e[1],h=0,l=7,_=4;for(0===s&&(l=138,_=3),n=0;n<=a;n++)if(r=s,s=e[2*(n+1)+1],!(++h<l&&r===s)){if(h<_)do{b(t,r,t.bl_tree)}while(0!==--h);else 0!==r?(r!==i&&(b(t,r,t.bl_tree),h--),b(t,16,t.bl_tree),m(t,h-3,2)):h<=10?(b(t,17,t.bl_tree),m(t,h-3,3)):(b(t,18,t.bl_tree),m(t,h-11,7));h=0,i=r,0===s?(l=138,_=3):r===s?(l=6,_=3):(l=7,_=4)}},D=!1,M=function(t,e,a,n){m(t,0+(n?1:0),3),function(t,e,a){x(t),w(t,a),w(t,~a),t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a}(t,e,a)},j=M,L=function(t,e,a,n){for(var r=65535&t,i=t>>>16&65535,s=0;0!==a;){a-=s=a>2e3?2e3:a;do{i=i+(r=r+e[n++]|0)|0}while(--s);r%=65521,i%=65521}return r|i<<16},S=new Uint32Array(function(){for(var t,e=[],a=0;a<256;a++){t=a;for(var n=0;n<8;n++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e}()),T=function(t,e,a,n){var r=S,i=n+a;t^=-1;for(var s=n;s<i;s++)t=t>>>8^r[255&(t^e[s])];return-1^t},O={2:\\\"need dictionary\\\",1:\\\"stream end\\\",0:\\\"\\\",\\\"-1\\\":\\\"file error\\\",\\\"-2\\\":\\\"stream error\\\",\\\"-3\\\":\\\"data error\\\",\\\"-4\\\":\\\"insufficient memory\\\",\\\"-5\\\":\\\"buffer error\\\",\\\"-6\\\":\\\"incompatible version\\\"},q=j,F=function(t,e,a){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(_[a]+256+1)]++,t.dyn_dtree[2*v(e)]++),t.last_lit===t.lit_bufsize-1},G=-2,H=258,J=262,K=103,N=113,P=666,Q=function(t,e){return t.msg=O[e],e},R=function(t){return(t<<1)-(t>4?9:0)},V=function(t){for(var e=t.length;--e>=0;)t[e]=0},W=function(t,e,a){return(e<<t.hash_shift^a)&t.hash_mask},X=function(t){var e=t.state,a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},Y=function(t,e){(function(t,e,a,n){var r,l,_=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),I(t,t.l_desc),I(t,t.d_desc),_=function(t){var e;for(E(t,t.dyn_ltree,t.l_desc.max_code),E(t,t.dyn_dtree,t.d_desc.max_code),I(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*i[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),r=t.opt_len+3+7>>>3,(l=t.static_len+3+7>>>3)<=r&&(r=l)):r=l=a+5,a+4<=r&&-1!==e?M(t,e,a,n):4===t.strategy||l===r?(m(t,2+(n?1:0),3),B(t,s,h)):(m(t,4+(n?1:0),3),function(t,e,a,n){var r;for(m(t,e-257,5),m(t,a-1,5),m(t,n-4,4),r=0;r<n;r++)m(t,t.bl_tree[2*i[r]+1],3);C(t,t.dyn_ltree,e-1),C(t,t.dyn_dtree,a-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,_+1),B(t,t.dyn_ltree,t.dyn_dtree)),k(t),n&&x(t)})(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,X(t.strm)},Z=function(t,e){t.pending_buf[t.pending++]=e},$=function(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},tt=function(t,e,a,n){var r=t.avail_in;return r>n&&(r=n),0===r?0:(t.avail_in-=r,e.set(t.input.subarray(t.next_in,t.next_in+r),a),1===t.state.wrap?t.adler=L(t.adler,e,r,a):2===t.state.wrap&&(t.adler=T(t.adler,e,r,a)),t.next_in+=r,t.total_in+=r,r)},et=function(t,e){var a,n,r=t.max_chain_length,i=t.strstart,s=t.prev_length,h=t.nice_match,l=t.strstart>t.w_size-J?t.strstart-(t.w_size-J):0,_=t.window,o=t.w_mask,d=t.prev,u=t.strstart+H,f=_[i+s-1],c=_[i+s];t.prev_length>=t.good_match&&(r>>=2),h>t.lookahead&&(h=t.lookahead);do{if(_[(a=e)+s]===c&&_[a+s-1]===f&&_[a]===_[i]&&_[++a]===_[i+1]){i+=2,a++;do{}while(_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&_[++i]===_[++a]&&i<u);if(n=H-(u-i),i=u-H,n>s){if(t.match_start=e,s=n,n>=h)break;f=_[i+s-1],c=_[i+s]}}}while((e=d[e&o])>l&&0!==--r);return s<=t.lookahead?s:t.lookahead},at=function(t){var e,a,n,r,i,s=t.w_size;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=s+(s-J)){t.window.set(t.window.subarray(s,s+s),0),t.match_start-=s,t.strstart-=s,t.block_start-=s,e=a=t.hash_size;do{n=t.head[--e],t.head[e]=n>=s?n-s:0}while(--a);e=a=s;do{n=t.prev[--e],t.prev[e]=n>=s?n-s:0}while(--a);r+=s}if(0===t.strm.avail_in)break;if(a=tt(t.strm,t.window,t.strstart+t.lookahead,r),t.lookahead+=a,t.lookahead+t.insert>=3)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=W(t,t.ins_h,t.window[i+1]);t.insert&&(t.ins_h=W(t,t.ins_h,t.window[i+3-1]),t.prev[i&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=i,i++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<J&&0!==t.strm.avail_in)},nt=function(t,e){for(var a,n;;){if(t.lookahead<J){if(at(t),t.lookahead<J&&0===e)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=W(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-J&&(t.match_length=et(t,a)),t.match_length>=3)if(n=F(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=W(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!==--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=W(t,t.ins_h,t.window[t.strstart+1]);else n=F(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(Y(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,4===e?(Y(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Y(t,!1),0===t.strm.avail_out)?1:2},rt=function(t,e){for(var a,n,r;;){if(t.lookahead<J){if(at(t),t.lookahead<J&&0===e)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=W(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-J&&(t.match_length=et(t,a),t.match_length<=5&&(1===t.strategy||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){r=t.strstart+t.lookahead-3,n=F(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=r&&(t.ins_h=W(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!==--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,n&&(Y(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if((n=F(t,0,t.window[t.strstart-1]))&&Y(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=F(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,4===e?(Y(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Y(t,!1),0===t.strm.avail_out)?1:2};function it(t,e,a,n,r){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=n,this.func=r}var st=[new it(0,0,0,0,function(t,e){var a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(at(t),0===t.lookahead&&0===e)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var n=t.block_start+a;if((0===t.strstart||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,Y(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-J&&(Y(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(Y(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(Y(t,!1),t.strm.avail_out),1)}),new it(4,4,8,4,nt),new it(4,5,16,8,nt),new it(4,6,32,32,nt),new it(4,4,16,16,rt),new it(8,16,32,32,rt),new it(8,16,128,128,rt),new it(8,32,128,256,rt),new it(32,128,258,1024,rt),new it(32,258,258,4096,rt)];function ht(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=8,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),V(this.dyn_ltree),V(this.dyn_dtree),V(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),V(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),V(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}for(var lt=function(t){var e,i=function(t){if(!t||!t.state)return Q(t,G);t.total_in=t.total_out=0,t.data_type=2;var e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:N,t.adler=2===e.wrap?0:1,e.last_flush=0,function(t){D||(function(){var t,e,i,g,v,w=Array(16);for(i=0,g=0;g<28;g++)for(o[g]=i,t=0;t<1<<a[g];t++)_[i++]=g;for(_[i-1]=g,v=0,g=0;g<16;g++)for(c[g]=v,t=0;t<1<<n[g];t++)l[v++]=g;for(v>>=7;g<30;g++)for(c[g]=v<<7,t=0;t<1<<n[g]-7;t++)l[256+v++]=g;for(e=0;e<=15;e++)w[e]=0;for(t=0;t<=143;)s[2*t+1]=8,t++,w[8]++;for(;t<=255;)s[2*t+1]=9,t++,w[9]++;for(;t<=279;)s[2*t+1]=7,t++,w[7]++;for(;t<=287;)s[2*t+1]=8,t++,w[8]++;for(z(s,287,w),t=0;t<30;t++)h[2*t+1]=5,h[2*t]=y(t,5);d=new p(s,a,257,286,15),u=new p(h,n,0,30,15),f=new p([],r,0,19,7)}(),D=!0),t.l_desc=new g(t.dyn_ltree,d),t.d_desc=new g(t.dyn_dtree,u),t.bl_desc=new g(t.bl_tree,f),t.bi_buf=0,t.bi_valid=0,k(t)}(e),0}(t);return 0===i&&((e=t.state).window_size=2*e.w_size,V(e.head),e.max_lazy_match=st[e.level].max_lazy,e.good_match=st[e.level].good_length,e.nice_match=st[e.level].nice_length,e.max_chain_length=st[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0),i},_t=function(t,e){var a,n;if(!t||!t.state||e>5||e<0)return t?Q(t,G):G;var r=t.state;if(!t.output||!t.input&&0!==t.avail_in||r.status===P&&4!==e)return Q(t,0===t.avail_out?-5:G);r.strm=t;var i=r.last_flush;if(r.last_flush=e,42===r.status)if(2===r.wrap)t.adler=0,Z(r,31),Z(r,139),Z(r,8),r.gzhead?(Z(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),Z(r,255&r.gzhead.time),Z(r,r.gzhead.time>>8&255),Z(r,r.gzhead.time>>16&255),Z(r,r.gzhead.time>>24&255),Z(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),Z(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(Z(r,255&r.gzhead.extra.length),Z(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(t.adler=T(t.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69):(Z(r,0),Z(r,0),Z(r,0),Z(r,0),Z(r,0),Z(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),Z(r,3),r.status=N);else{var h=8+(r.w_bits-8<<4)<<8;h|=(r.strategy>=2||r.level<2?0:r.level<6?1:6===r.level?2:3)<<6,0!==r.strstart&&(h|=32),h+=31-h%31,r.status=N,$(r,h),0!==r.strstart&&($(r,t.adler>>>16),$(r,65535&t.adler)),t.adler=1}if(69===r.status)if(r.gzhead.extra){for(a=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>a&&(t.adler=T(t.adler,r.pending_buf,r.pending-a,a)),X(t),a=r.pending,r.pending!==r.pending_buf_size));)Z(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>a&&(t.adler=T(t.adler,r.pending_buf,r.pending-a,a)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=73)}else r.status=73;if(73===r.status)if(r.gzhead.name){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=T(t.adler,r.pending_buf,r.pending-a,a)),X(t),a=r.pending,r.pending===r.pending_buf_size)){n=1;break}n=r.gzindex<r.gzhead.name.length?255&r.gzhead.name.charCodeAt(r.gzindex++):0,Z(r,n)}while(0!==n);r.gzhead.hcrc&&r.pending>a&&(t.adler=T(t.adler,r.pending_buf,r.pending-a,a)),0===n&&(r.gzindex=0,r.status=91)}else r.status=91;if(91===r.status)if(r.gzhead.comment){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=T(t.adler,r.pending_buf,r.pending-a,a)),X(t),a=r.pending,r.pending===r.pending_buf_size)){n=1;break}n=r.gzindex<r.gzhead.comment.length?255&r.gzhead.comment.charCodeAt(r.gzindex++):0,Z(r,n)}while(0!==n);r.gzhead.hcrc&&r.pending>a&&(t.adler=T(t.adler,r.pending_buf,r.pending-a,a)),0===n&&(r.status=K)}else r.status=K;if(r.status===K&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&X(t),r.pending+2<=r.pending_buf_size&&(Z(r,255&t.adler),Z(r,t.adler>>8&255),t.adler=0,r.status=N)):r.status=N),0!==r.pending){if(X(t),0===t.avail_out)return r.last_flush=-1,0}else if(0===t.avail_in&&R(e)<=R(i)&&4!==e)return Q(t,-5);if(r.status===P&&0!==t.avail_in)return Q(t,-5);if(0!==t.avail_in||0!==r.lookahead||0!==e&&r.status!==P){var l=2===r.strategy?function(t,e){for(var a;;){if(0===t.lookahead&&(at(t),0===t.lookahead)){if(0===e)return 1;break}if(t.match_length=0,a=F(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(Y(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(Y(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Y(t,!1),0===t.strm.avail_out)?1:2}(r,e):3===r.strategy?function(t,e){for(var a,n,r,i,s=t.window;;){if(t.lookahead<=H){if(at(t),t.lookahead<=H&&0===e)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=s[r=t.strstart-1])===s[++r]&&n===s[++r]&&n===s[++r]){i=t.strstart+H;do{}while(n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&r<i);t.match_length=H-(i-r),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=F(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=F(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(Y(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(Y(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Y(t,!1),0===t.strm.avail_out)?1:2}(r,e):st[r.level].func(r,e);if(3!==l&&4!==l||(r.status=P),1===l||3===l)return 0===t.avail_out&&(r.last_flush=-1),0;if(2===l&&(1===e?function(t){m(t,2,3),b(t,256,s),function(t){16===t.bi_valid?(w(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}(r):5!==e&&(q(r,0,0,!1),3===e&&(V(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),X(t),0===t.avail_out))return r.last_flush=-1,0}return 4!==e?0:r.wrap<=0?1:(2===r.wrap?(Z(r,255&t.adler),Z(r,t.adler>>8&255),Z(r,t.adler>>16&255),Z(r,t.adler>>24&255),Z(r,255&t.total_in),Z(r,t.total_in>>8&255),Z(r,t.total_in>>16&255),Z(r,t.total_in>>24&255)):($(r,t.adler>>>16),$(r,65535&t.adler)),X(t),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?0:1)},ot=function(t){if(!t||!t.state)return G;var e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&e!==K&&e!==N&&e!==P?Q(t,G):(t.state=null,e===N?Q(t,-3):0)},dt=new Uint8Array(256),ut=0;ut<256;ut++)dt[ut]=ut>=252?6:ut>=248?5:ut>=240?4:ut>=224?3:ut>=192?2:1;dt[254]=dt[254]=1;var ft=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\\\"\\\",this.state=null,this.data_type=2,this.adler=0},ct=Object.prototype.toString;function pt(){this.options={level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0};var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\\\"\\\",this.ended=!1,this.chunks=[],this.strm=new ft,this.strm.avail_out=0;var e,a,n=function(t,e,a,n,r,i){if(!t)return G;var s=1;if(-1===e&&(e=6),n<0?(s=0,n=-n):n>15&&(s=2,n-=16),r<1||r>9||8!==a||n<8||n>15||e<0||e>9||i<0||i>4)return Q(t,G);8===n&&(n=9);var h=new ht;return t.state=h,h.strm=t,h.wrap=s,h.gzhead=null,h.w_bits=n,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=r+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+3-1)/3),h.window=new Uint8Array(2*h.w_size),h.head=new Uint16Array(h.hash_size),h.prev=new Uint16Array(h.w_size),h.lit_bufsize=1<<r+6,h.pending_buf_size=4*h.lit_bufsize,h.pending_buf=new Uint8Array(h.pending_buf_size),h.d_buf=1*h.lit_bufsize,h.l_buf=3*h.lit_bufsize,h.level=e,h.strategy=i,h.method=a,lt(t)}(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(0!==n)throw Error(O[n]);if(t.header&&(e=this.strm,a=t.header,e&&e.state&&(2!==e.state.wrap||(e.state.gzhead=a))),t.dictionary){var r;if(r=\\\"[object ArrayBuffer]\\\"===ct.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,0!==(n=function(t,e){var a=e.length;if(!t||!t.state)return G;var n=t.state,r=n.wrap;if(2===r||1===r&&42!==n.status||n.lookahead)return G;if(1===r&&(t.adler=L(t.adler,e,a,0)),n.wrap=0,a>=n.w_size){0===r&&(V(n.head),n.strstart=0,n.block_start=0,n.insert=0);var i=new Uint8Array(n.w_size);i.set(e.subarray(a-n.w_size,a),0),e=i,a=n.w_size}var s=t.avail_in,h=t.next_in,l=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,at(n);n.lookahead>=3;){var _=n.strstart,o=n.lookahead-2;do{n.ins_h=W(n,n.ins_h,n.window[_+3-1]),n.prev[_&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=_,_++}while(--o);n.strstart=_,n.lookahead=2,at(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,t.next_in=h,t.input=l,t.avail_in=s,n.wrap=r,0}(this.strm,r)))throw Error(O[n]);this._dict_set=!0}}function gt(t,e,a){try{t.postMessage({type:\\\"errored\\\",error:e,streamId:a})}catch(n){t.postMessage({type:\\\"errored\\\",error:e+\\\"\\\",streamId:a})}}function vt(t){const e=t.strm.adler;return new Uint8Array([3,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e])}pt.prototype.push=function(t,e){var a,n,r=this.strm,i=this.options.chunkSize;if(this.ended)return!1;for(n=e===~~e?e:!0===e?4:0,\\\"[object ArrayBuffer]\\\"===ct.call(t)?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;)if(0===r.avail_out&&(r.output=new Uint8Array(i),r.next_out=0,r.avail_out=i),(2===n||3===n)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if(1===(a=_t(r,n)))return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),a=ot(this.strm),this.onEnd(a),this.ended=!0,0===a;if(0!==r.avail_out){if(n>0&&r.next_out>0)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else if(0===r.avail_in)break}else this.onData(r.output)}return!0},pt.prototype.onData=function(t){this.chunks.push(t)},pt.prototype.onEnd=function(t){0===t&&(this.result=function(t){for(var e=0,a=0,n=t.length;a<n;a++)e+=t[a].length;for(var r=new Uint8Array(e),i=0,s=0,h=t.length;i<h;i++){var l=t[i];r.set(l,s),s+=l.length}return r}(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},function(e=self){try{const a=new Map;e.addEventListener(\\\"message\\\",n=>{try{const r=function(e,a){switch(a.action){case\\\"init\\\":return{type:\\\"initialized\\\",version:\\\"6.25.2\\\"};case\\\"write\\\":{let n=e.get(a.streamId);n||(n=new pt,e.set(a.streamId,n));const r=n.chunks.length,i=function(t){if(\\\"function\\\"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,n,r,i,s=t.length,h=0;for(r=0;r<s;r++)a=t.charCodeAt(r),55296==(64512&a)&&r+1<s&&(n=t.charCodeAt(r+1),56320==(64512&n)&&(a=65536+(a-55296<<10)+(n-56320),r++)),h+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(h),i=0,r=0;i<h;r++)a=t.charCodeAt(r),55296==(64512&a)&&r+1<s&&(n=t.charCodeAt(r+1),56320==(64512&n)&&(a=65536+(a-55296<<10)+(n-56320),r++)),a<128?e[i++]=a:a<2048?(e[i++]=192|a>>>6,e[i++]=128|63&a):a<65536?(e[i++]=224|a>>>12,e[i++]=128|a>>>6&63,e[i++]=128|63&a):(e[i++]=240|a>>>18,e[i++]=128|a>>>12&63,e[i++]=128|a>>>6&63,e[i++]=128|63&a);return e}(a.data);return n.push(i,2),{type:\\\"wrote\\\",id:a.id,streamId:a.streamId,result:t(n.chunks.slice(r)),trailer:vt(n),additionalBytesCount:i.length}}case\\\"reset\\\":e.delete(a.streamId)}}(a,n.data);r&&e.postMessage(r)}catch(t){gt(e,t,n.data&&\\\"streamId\\\"in n.data?n.data.streamId:void 0)}})}catch(t){gt(e,t)}}()})();\"])));\n}\nlet state = { status: 0 /* DeflateWorkerStatus.Nil */ };\nexport function startDeflateWorker(configuration, source, onInitializationFailure, createDeflateWorkerImpl = createDeflateWorker) {\n if (state.status === 0 /* DeflateWorkerStatus.Nil */) {\n // doStartDeflateWorker updates the state to \"loading\" or \"error\"\n doStartDeflateWorker(configuration, source, createDeflateWorkerImpl);\n }\n switch (state.status) {\n case 1 /* DeflateWorkerStatus.Loading */:\n state.initializationFailureCallbacks.push(onInitializationFailure);\n return state.worker;\n case 3 /* DeflateWorkerStatus.Initialized */:\n return state.worker;\n }\n}\nexport function resetDeflateWorkerState() {\n if (state.status === 3 /* DeflateWorkerStatus.Initialized */ || state.status === 1 /* DeflateWorkerStatus.Loading */) {\n state.stop();\n }\n state = { status: 0 /* DeflateWorkerStatus.Nil */ };\n}\nexport function getDeflateWorkerStatus() {\n return state.status;\n}\n/**\n * Starts the deflate worker and handle messages and errors\n *\n * The spec allow browsers to handle worker errors differently:\n * - Chromium throws an exception\n * - Firefox fires an error event\n *\n * more details: https://bugzilla.mozilla.org/show_bug.cgi?id=1736865#c2\n */\nexport function doStartDeflateWorker(configuration, source, createDeflateWorkerImpl = createDeflateWorker) {\n try {\n const worker = createDeflateWorkerImpl(configuration);\n const { stop: removeErrorListener } = addEventListener(configuration, worker, 'error', (error) => {\n onError(configuration, source, error);\n });\n const { stop: removeMessageListener } = addEventListener(configuration, worker, 'message', ({ data }) => {\n if (data.type === 'errored') {\n onError(configuration, source, data.error, data.streamId);\n }\n else if (data.type === 'initialized') {\n onInitialized(data.version);\n }\n });\n worker.postMessage({ action: 'init' });\n setTimeout(() => onTimeout(source), INITIALIZATION_TIME_OUT_DELAY);\n const stop = () => {\n removeErrorListener();\n removeMessageListener();\n };\n state = { status: 1 /* DeflateWorkerStatus.Loading */, worker, stop, initializationFailureCallbacks: [] };\n }\n catch (error) {\n onError(configuration, source, error);\n }\n}\nfunction onTimeout(source) {\n if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n display.error(`${source} failed to start: a timeout occurred while initializing the Worker`);\n state.initializationFailureCallbacks.forEach((callback) => callback());\n state = { status: 2 /* DeflateWorkerStatus.Error */ };\n }\n}\nfunction onInitialized(version) {\n if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n state = { status: 3 /* DeflateWorkerStatus.Initialized */, worker: state.worker, stop: state.stop, version };\n }\n}\nfunction onError(configuration, source, error, streamId) {\n if (state.status === 1 /* DeflateWorkerStatus.Loading */ || state.status === 0 /* DeflateWorkerStatus.Nil */) {\n reportScriptLoadingError({\n configuredUrl: configuration.workerUrl,\n error,\n source,\n scriptType: 'worker',\n });\n if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n state.initializationFailureCallbacks.forEach((callback) => callback());\n }\n state = { status: 2 /* DeflateWorkerStatus.Error */ };\n }\n else {\n addTelemetryError(error, {\n worker_version: state.status === 3 /* DeflateWorkerStatus.Initialized */ && state.version,\n stream_id: streamId,\n });\n }\n}\n//# sourceMappingURL=deflateWorker.js.map","/**\n * Test for Browser features used while recording\n */\nexport function isBrowserSupported() {\n return (\n // Array.from is a bit less supported by browsers than CSSSupportsRule, but has higher chances\n // to be polyfilled. Test for both to be more confident. We could add more things if we find out\n // this test is not sufficient.\n typeof Array.from === 'function' &&\n typeof CSSSupportsRule === 'function' &&\n typeof URL.createObjectURL === 'function' &&\n 'forEach' in NodeList.prototype);\n}\n//# sourceMappingURL=isBrowserSupported.js.map","import { getSessionReplayUrl } from '@datadog/browser-rum-core';\nimport { isBrowserSupported } from '../boot/isBrowserSupported';\nexport function getSessionReplayLink(configuration, sessionManager, viewHistory, isRecordingStarted) {\n const session = sessionManager.findTrackedSession();\n const errorType = getErrorType(session, isRecordingStarted);\n const viewContext = viewHistory.findView();\n return getSessionReplayUrl(configuration, {\n viewContext,\n errorType,\n session,\n });\n}\nfunction getErrorType(session, isRecordingStarted) {\n if (!isBrowserSupported()) {\n return 'browser-not-supported';\n }\n if (!session) {\n // possibilities:\n // - rum sampled out\n // - session expired (edge case)\n return 'rum-not-tracked';\n }\n if (session.sessionReplay === 0 /* SessionReplayState.OFF */) {\n // possibilities\n // - replay sampled out\n return 'incorrect-session-plan';\n }\n if (!isRecordingStarted) {\n return 'replay-not-started';\n }\n}\n//# sourceMappingURL=getSessionReplayLink.js.map","import { addTelemetryMetrics, noop, timeStampNow, elapsed } from '@datadog/browser-core';\nexport function startRecorderInitTelemetry(telemetry, observable) {\n if (!telemetry.metricsEnabled) {\n return { stop: noop };\n }\n let startContext;\n let documentReadyDuration;\n let recorderSettledDuration;\n const { unsubscribe } = observable.subscribe((event) => {\n switch (event.type) {\n case 'start':\n startContext = { forced: event.forced, timestamp: timeStampNow() };\n documentReadyDuration = undefined;\n recorderSettledDuration = undefined;\n break;\n case 'document-ready':\n if (startContext) {\n documentReadyDuration = elapsed(startContext.timestamp, timeStampNow());\n }\n break;\n case 'recorder-settled':\n if (startContext) {\n recorderSettledDuration = elapsed(startContext.timestamp, timeStampNow());\n }\n break;\n case 'aborted':\n case 'deflate-encoder-load-failed':\n case 'recorder-load-failed':\n case 'succeeded':\n // Only send metrics for the first attempt at starting the recorder.\n unsubscribe();\n if (startContext) {\n // monitor-until: 2026-07-01\n addTelemetryMetrics(\"Recorder init metrics\" /* TelemetryMetrics.RECORDER_INIT_METRICS_TELEMETRY_NAME */, {\n metrics: createRecorderInitMetrics(startContext.forced, recorderSettledDuration, elapsed(startContext.timestamp, timeStampNow()), event.type, documentReadyDuration),\n });\n }\n break;\n }\n });\n return { stop: unsubscribe };\n}\nfunction createRecorderInitMetrics(forced, loadRecorderModuleDuration, recorderInitDuration, result, waitForDocReadyDuration) {\n return {\n forced,\n loadRecorderModuleDuration,\n recorderInitDuration,\n result,\n waitForDocReadyDuration,\n };\n}\n//# sourceMappingURL=startRecorderInitTelemetry.js.map","import { asyncRunOnReadyState, monitorError, Observable } from '@datadog/browser-core';\nimport { getSessionReplayLink } from '../domain/getSessionReplayLink';\nimport { startRecorderInitTelemetry } from '../domain/startRecorderInitTelemetry';\nexport function createPostStartStrategy(configuration, lifeCycle, sessionManager, viewHistory, loadRecorder, getOrCreateDeflateEncoder, telemetry) {\n let status = 0 /* RecorderStatus.Stopped */;\n let stopRecording;\n lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_EXPIRED */, () => {\n if (status === 2 /* RecorderStatus.Starting */ || status === 3 /* RecorderStatus.Started */) {\n stop();\n status = 1 /* RecorderStatus.IntentToStart */;\n }\n });\n lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, () => {\n if (status === 1 /* RecorderStatus.IntentToStart */) {\n start();\n }\n });\n const observable = new Observable();\n startRecorderInitTelemetry(telemetry, observable);\n const doStart = async (forced) => {\n observable.notify({ type: 'start', forced });\n const [startRecordingImpl] = await Promise.all([\n notifyWhenSettled(observable, { type: 'recorder-settled' }, loadRecorder()),\n notifyWhenSettled(observable, { type: 'document-ready' }, asyncRunOnReadyState(configuration, 'interactive')),\n ]);\n if (status !== 2 /* RecorderStatus.Starting */) {\n observable.notify({ type: 'aborted' });\n return;\n }\n if (!startRecordingImpl) {\n status = 0 /* RecorderStatus.Stopped */;\n observable.notify({ type: 'recorder-load-failed' });\n return;\n }\n const deflateEncoder = getOrCreateDeflateEncoder();\n if (!deflateEncoder) {\n status = 0 /* RecorderStatus.Stopped */;\n observable.notify({ type: 'deflate-encoder-load-failed' });\n return;\n }\n ;\n ({ stop: stopRecording } = startRecordingImpl(lifeCycle, configuration, sessionManager, viewHistory, deflateEncoder, telemetry));\n status = 3 /* RecorderStatus.Started */;\n observable.notify({ type: 'succeeded' });\n };\n function start(options) {\n const session = sessionManager.findTrackedSession();\n if (canStartRecording(session, options)) {\n status = 1 /* RecorderStatus.IntentToStart */;\n return;\n }\n if (isRecordingInProgress(status)) {\n return;\n }\n status = 2 /* RecorderStatus.Starting */;\n const forced = shouldForceReplay(session, options) || false;\n // Intentionally not awaiting doStart() to keep it asynchronous\n doStart(forced).catch(monitorError);\n if (forced) {\n sessionManager.setForcedReplay();\n }\n }\n function stop() {\n if (status === 3 /* RecorderStatus.Started */) {\n stopRecording === null || stopRecording === void 0 ? void 0 : stopRecording();\n }\n status = 0 /* RecorderStatus.Stopped */;\n }\n return {\n start,\n stop,\n getSessionReplayLink() {\n return getSessionReplayLink(configuration, sessionManager, viewHistory, status !== 0 /* RecorderStatus.Stopped */);\n },\n isRecording: () => status === 3 /* RecorderStatus.Started */,\n };\n}\nfunction canStartRecording(session, options) {\n return !session || (session.sessionReplay === 0 /* SessionReplayState.OFF */ && (!options || !options.force));\n}\nfunction isRecordingInProgress(status) {\n return status === 2 /* RecorderStatus.Starting */ || status === 3 /* RecorderStatus.Started */;\n}\nfunction shouldForceReplay(session, options) {\n return options && options.force && session.sessionReplay === 0 /* SessionReplayState.OFF */;\n}\nasync function notifyWhenSettled(observable, event, promise) {\n try {\n return await promise;\n }\n finally {\n observable.notify(event);\n }\n}\n//# sourceMappingURL=postStartStrategy.js.map","import { noop } from '@datadog/browser-core';\nexport function createPreStartStrategy() {\n let status = 0 /* PreStartRecorderStatus.None */;\n return {\n strategy: {\n start() {\n status = 1 /* PreStartRecorderStatus.HadManualStart */;\n },\n stop() {\n status = 2 /* PreStartRecorderStatus.HadManualStop */;\n },\n isRecording: () => false,\n getSessionReplayLink: noop,\n },\n shouldStartImmediately(configuration) {\n return (status === 1 /* PreStartRecorderStatus.HadManualStart */ ||\n (status === 0 /* PreStartRecorderStatus.None */ && !configuration.startSessionReplayRecordingManually));\n },\n };\n}\n//# sourceMappingURL=preStartStrategy.js.map","import { canUseEventBridge, noop, bridgeSupports, } from '@datadog/browser-core';\nimport { getReplayStats as getReplayStatsImpl } from '../domain/replayStats';\nimport { createDeflateEncoder, getDeflateWorkerStatus, startDeflateWorker, } from '../domain/deflate';\nimport { isBrowserSupported } from './isBrowserSupported';\nimport { createPostStartStrategy } from './postStartStrategy';\nimport { createPreStartStrategy } from './preStartStrategy';\nexport function makeRecorderApi(loadRecorder, createDeflateWorkerImpl) {\n if ((canUseEventBridge() && !bridgeSupports(\"records\" /* BridgeCapability.RECORDS */)) || !isBrowserSupported()) {\n return {\n start: noop,\n stop: noop,\n getReplayStats: () => undefined,\n onRumStart: noop,\n isRecording: () => false,\n getSessionReplayLink: () => undefined,\n };\n }\n // eslint-disable-next-line prefer-const\n let { strategy, shouldStartImmediately } = createPreStartStrategy();\n return {\n start: (options) => strategy.start(options),\n stop: () => strategy.stop(),\n getSessionReplayLink: () => strategy.getSessionReplayLink(),\n onRumStart,\n isRecording: () => \n // The worker is started optimistically, meaning we could have started to record but its\n // initialization fails a bit later. This could happen when:\n // * the worker URL (blob or plain URL) is blocked by CSP in Firefox only (Chromium and Safari\n // throw an exception when instantiating the worker, and IE doesn't care about CSP)\n // * the browser fails to load the worker in case the workerUrl is used\n // * an unexpected error occurs in the Worker before initialization, ex:\n // * a runtime exception collected by monitor()\n // * a syntax error notified by the browser via an error event\n // * the worker is unresponsive for some reason and timeouts\n //\n // It is not expected to happen often. Nonetheless, the \"replayable\" status on RUM events is\n // an important part of the Datadog App:\n // * If we have a false positive (we set has_replay: true even if no replay data is present),\n // we might display broken links to the Session Replay player.\n // * If we have a false negative (we don't set has_replay: true even if replay data is\n // available), it is less noticeable because no link will be displayed.\n //\n // Thus, it is better to have false negative, so let's make sure the worker is correctly\n // initialized before advertizing that we are recording.\n //\n // In the future, when the compression worker will also be used for RUM data, this will be\n // less important since no RUM event will be sent when the worker fails to initialize.\n getDeflateWorkerStatus() === 3 /* DeflateWorkerStatus.Initialized */ && strategy.isRecording(),\n getReplayStats: (viewId) => getDeflateWorkerStatus() === 3 /* DeflateWorkerStatus.Initialized */ ? getReplayStatsImpl(viewId) : undefined,\n };\n function onRumStart(lifeCycle, configuration, sessionManager, viewHistory, worker, telemetry) {\n let cachedDeflateEncoder;\n function getOrCreateDeflateEncoder() {\n if (!cachedDeflateEncoder) {\n worker !== null && worker !== void 0 ? worker : (worker = startDeflateWorker(configuration, 'Datadog Session Replay', () => {\n strategy.stop();\n }, createDeflateWorkerImpl));\n if (worker) {\n cachedDeflateEncoder = createDeflateEncoder(configuration, worker, 1 /* DeflateEncoderStreamId.REPLAY */);\n }\n }\n return cachedDeflateEncoder;\n }\n strategy = createPostStartStrategy(configuration, lifeCycle, sessionManager, viewHistory, loadRecorder, getOrCreateDeflateEncoder, telemetry);\n if (shouldStartImmediately(configuration)) {\n strategy.start();\n }\n }\n}\n//# sourceMappingURL=recorderApi.js.map","import { reportScriptLoadingError } from '../domain/scriptLoadingError';\nexport async function lazyLoadRecorder(importRecorderImpl = importRecorder) {\n try {\n return await importRecorderImpl();\n }\n catch (error) {\n reportScriptLoadingError({\n error,\n source: 'Recorder',\n scriptType: 'module',\n });\n }\n}\nasync function importRecorder() {\n const module = await import(/* webpackChunkName: \"recorder\" */ './startRecording');\n return module.startRecording;\n}\n//# sourceMappingURL=lazyLoadRecorder.js.map","import { getGlobalObject } from '@datadog/browser-core';\nexport function isProfilingSupported() {\n const globalThis = getGlobalObject();\n // This API might be unavailable in some browsers\n const globalThisProfiler = globalThis.Profiler;\n return globalThisProfiler !== undefined;\n}\n//# sourceMappingURL=profilingSupported.js.map","import { SKIPPED } from '@datadog/browser-core';\nimport { RumEventType } from '@datadog/browser-rum-core';\nexport function startProfilingContext(hooks) {\n let currentContext = {\n status: 'starting',\n };\n hooks.register(0 /* HookNames.Assemble */, ({ eventType }) => {\n if (eventType !== RumEventType.VIEW && eventType !== RumEventType.LONG_TASK) {\n return SKIPPED;\n }\n return {\n type: eventType,\n _dd: {\n profiling: currentContext,\n },\n };\n });\n return {\n get: () => currentContext,\n set: (newContext) => {\n currentContext = newContext;\n },\n };\n}\n//# sourceMappingURL=profilingContext.js.map","import { reportScriptLoadingError } from '../domain/scriptLoadingError';\nexport async function lazyLoadProfiler(importProfilerImpl = importProfiler) {\n try {\n return await importProfilerImpl();\n }\n catch (error) {\n reportScriptLoadingError({\n error,\n source: 'Profiler',\n scriptType: 'module',\n });\n }\n}\nasync function importProfiler() {\n const module = await import(/* webpackChunkName: \"profiler\" */ '../domain/profiling/profiler');\n return module.createRumProfiler;\n}\n//# sourceMappingURL=lazyLoadProfiler.js.map","import { isSampled } from '@datadog/browser-rum-core';\nimport { addTelemetryDebug, monitorError } from '@datadog/browser-core';\nimport { isProfilingSupported } from '../domain/profiling/profilingSupported';\nimport { startProfilingContext } from '../domain/profiling/profilingContext';\nimport { lazyLoadProfiler } from './lazyLoadProfiler';\nexport function makeProfilerApi() {\n let profiler;\n function onRumStart(lifeCycle, hooks, configuration, sessionManager, viewHistory, longTaskContexts, createEncoder) {\n const session = sessionManager.findTrackedSession(); // Check if the session is tracked.\n if (!session) {\n // No session tracked, no profiling.\n // Note: No Profiling context is set at this stage.\n return;\n }\n // Sampling (sticky sampling based on session id)\n if (!isSampled(session.id, configuration.profilingSampleRate)) {\n // No sampling, no profiling.\n // Note: No Profiling context is set at this stage.\n return;\n }\n // Listen to events and add the profiling context to them.\n const profilingContextManager = startProfilingContext(hooks);\n // Browser support check\n if (!isProfilingSupported()) {\n profilingContextManager.set({\n status: 'error',\n error_reason: 'not-supported-by-browser',\n });\n return;\n }\n lazyLoadProfiler()\n .then((createRumProfiler) => {\n if (!createRumProfiler) {\n // monitor-until: 2026-01-01, reconsider after profiling GA\n addTelemetryDebug('[DD_RUM] Failed to lazy load the RUM Profiler');\n profilingContextManager.set({ status: 'error', error_reason: 'failed-to-lazy-load' });\n return;\n }\n profiler = createRumProfiler(configuration, lifeCycle, sessionManager, profilingContextManager, longTaskContexts, createEncoder, viewHistory, undefined);\n profiler.start();\n })\n .catch(monitorError);\n }\n return {\n onRumStart,\n stop: () => {\n profiler === null || profiler === void 0 ? void 0 : profiler.stop().catch(monitorError);\n },\n };\n}\n//# sourceMappingURL=profilerApi.js.map","/**\n * Datadog Browser RUM SDK - Full version with Session Replay and Real User Profiling capabilities.\n * Use this package to monitor your web application's performance and user experience.\n *\n * @packageDocumentation\n * @see [RUM Browser Monitoring Setup](https://docs.datadoghq.com/real_user_monitoring/browser/)\n */\n// Keep the following in sync with packages/rum-slim/src/entries/main.ts\nimport { defineGlobal, getGlobalObject } from '@datadog/browser-core';\nimport { makeRumPublicApi, startRum } from '@datadog/browser-rum-core';\nimport { makeRecorderApi } from '../boot/recorderApi';\nimport { createDeflateEncoder, startDeflateWorker } from '../domain/deflate';\nimport { lazyLoadRecorder } from '../boot/lazyLoadRecorder';\nimport { makeProfilerApi } from '../boot/profilerApi';\nexport { DefaultPrivacyLevel } from '@datadog/browser-core';\nconst recorderApi = makeRecorderApi(lazyLoadRecorder);\nconst profilerApi = makeProfilerApi();\n/**\n * The global RUM instance. Use this to call RUM methods.\n *\n * @category Main\n * @see {@link DatadogRum}\n * @see [RUM Browser Monitoring Setup](https://docs.datadoghq.com/real_user_monitoring/browser/)\n */\nexport const datadogRum = makeRumPublicApi(startRum, recorderApi, profilerApi, {\n startDeflateWorker,\n createDeflateEncoder,\n sdkName: 'rum',\n});\ndefineGlobal(getGlobalObject(), 'DD_RUM', datadogRum);\n//# sourceMappingURL=main.js.map","export function isAuthorized(status, handlerType, logger) {\n const loggerHandler = logger.getHandler();\n const sanitizedHandlerType = Array.isArray(loggerHandler) ? loggerHandler : [loggerHandler];\n return STATUS_PRIORITIES[status] >= STATUS_PRIORITIES[logger.getLevel()] && sanitizedHandlerType.includes(handlerType);\n}\nexport const StatusType = {\n ok: 'ok',\n debug: 'debug',\n info: 'info',\n notice: 'notice',\n warn: 'warn',\n error: 'error',\n critical: 'critical',\n alert: 'alert',\n emerg: 'emerg',\n};\nexport const STATUS_PRIORITIES = {\n [StatusType.ok]: 0,\n [StatusType.debug]: 1,\n [StatusType.info]: 2,\n [StatusType.notice]: 4,\n [StatusType.warn]: 5,\n [StatusType.error]: 6,\n [StatusType.critical]: 7,\n [StatusType.alert]: 8,\n [StatusType.emerg]: 9,\n};\n//# sourceMappingURL=isAuthorized.js.map","export function createErrorFieldFromRawError(rawError, { \n/**\n * Set this to `true` to include the error message in the error field. In most cases, the error\n * message is already included in the log message, so we don't need to include it again.\n */\nincludeMessage = false, } = {}) {\n return {\n stack: rawError.stack,\n kind: rawError.type,\n message: includeMessage ? rawError.message : undefined,\n causes: rawError.causes,\n fingerprint: rawError.fingerprint,\n handling: rawError.handling,\n };\n}\n//# sourceMappingURL=createErrorFieldFromRawError.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { clocksNow, computeRawError, combine, createContextManager, ErrorSource, monitored, sanitize, createHandlingStack, buildTag, sanitizeTag, } from '@datadog/browser-core';\nimport { isAuthorized, StatusType } from './logger/isAuthorized';\nimport { createErrorFieldFromRawError } from './createErrorFieldFromRawError';\nexport const HandlerType = {\n console: 'console',\n http: 'http',\n silent: 'silent',\n};\nexport const STATUSES = Object.keys(StatusType);\n// note: it is safe to merge declarations as long as the methods are actually defined on the prototype\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging, no-restricted-syntax\nexport class Logger {\n constructor(handleLogStrategy, name, handlerType = HandlerType.http, level = StatusType.debug, loggerContext = {}) {\n this.handleLogStrategy = handleLogStrategy;\n this.handlerType = handlerType;\n this.level = level;\n this.contextManager = createContextManager('logger');\n this.tags = [];\n this.contextManager.setContext(loggerContext);\n if (name) {\n this.contextManager.setContextProperty('logger', { name });\n }\n }\n logImplementation(message, messageContext, status = StatusType.info, error, handlingStack) {\n const sanitizedMessageContext = sanitize(messageContext);\n let context;\n if (error !== undefined && error !== null) {\n const rawError = computeRawError({\n originalError: error,\n nonErrorPrefix: \"Provided\" /* NonErrorPrefix.PROVIDED */,\n source: ErrorSource.LOGGER,\n handling: \"handled\" /* ErrorHandling.HANDLED */,\n startClocks: clocksNow(),\n });\n context = combine({\n error: createErrorFieldFromRawError(rawError, { includeMessage: true }),\n }, rawError.context, sanitizedMessageContext);\n }\n else {\n context = sanitizedMessageContext;\n }\n this.handleLogStrategy({\n message: sanitize(message),\n context,\n status,\n }, this, handlingStack);\n }\n log(message, messageContext, status = StatusType.info, error) {\n let handlingStack;\n if (isAuthorized(status, HandlerType.http, this)) {\n handlingStack = createHandlingStack('log');\n }\n this.logImplementation(message, messageContext, status, error, handlingStack);\n }\n setContext(context) {\n this.contextManager.setContext(context);\n }\n getContext() {\n return this.contextManager.getContext();\n }\n setContextProperty(key, value) {\n this.contextManager.setContextProperty(key, value);\n }\n removeContextProperty(key) {\n this.contextManager.removeContextProperty(key);\n }\n clearContext() {\n this.contextManager.clearContext();\n }\n addTag(key, value) {\n this.tags.push(buildTag(key, value));\n }\n removeTagsWithKey(key) {\n const sanitizedKey = sanitizeTag(key);\n this.tags = this.tags.filter((tag) => tag !== sanitizedKey && !tag.startsWith(`${sanitizedKey}:`));\n }\n getTags() {\n return this.tags.slice();\n }\n setHandler(handler) {\n this.handlerType = handler;\n }\n getHandler() {\n return this.handlerType;\n }\n setLevel(level) {\n this.level = level;\n }\n getLevel() {\n return this.level;\n }\n}\n__decorate([\n monitored\n], Logger.prototype, \"logImplementation\", null);\n/* eslint-disable local-rules/disallow-side-effects */\nLogger.prototype.ok = createLoggerMethod(StatusType.ok);\nLogger.prototype.debug = createLoggerMethod(StatusType.debug);\nLogger.prototype.info = createLoggerMethod(StatusType.info);\nLogger.prototype.notice = createLoggerMethod(StatusType.notice);\nLogger.prototype.warn = createLoggerMethod(StatusType.warn);\nLogger.prototype.error = createLoggerMethod(StatusType.error);\nLogger.prototype.critical = createLoggerMethod(StatusType.critical);\nLogger.prototype.alert = createLoggerMethod(StatusType.alert);\nLogger.prototype.emerg = createLoggerMethod(StatusType.emerg);\nfunction createLoggerMethod(status) {\n return function (message, messageContext, error) {\n let handlingStack;\n if (isAuthorized(status, HandlerType.http, this)) {\n handlingStack = createHandlingStack('log');\n }\n this.logImplementation(message, messageContext, status, error, handlingStack);\n };\n}\n//# sourceMappingURL=logger.js.map","import { isWorkerEnvironment } from '@datadog/browser-core';\nexport function buildCommonContext() {\n if (isWorkerEnvironment) {\n return {};\n }\n return {\n view: {\n referrer: document.referrer,\n url: window.location.href,\n },\n };\n}\n//# sourceMappingURL=commonContext.js.map","import { serializeConfiguration, ONE_KIBI_BYTE, validateAndBuildConfiguration, display, removeDuplicates, ConsoleApiName, RawReportType, objectValues, } from '@datadog/browser-core';\n/**\n * arbitrary value, byte precision not needed\n */\nexport const DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT = 32 * ONE_KIBI_BYTE;\nexport function validateAndBuildLogsConfiguration(initConfiguration, errorStack) {\n if (initConfiguration.usePciIntake === true && initConfiguration.site && initConfiguration.site !== 'datadoghq.com') {\n display.warn('PCI compliance for Logs is only available for Datadog organizations in the US1 site. Default intake will be used.');\n }\n const baseConfiguration = validateAndBuildConfiguration(initConfiguration, errorStack);\n const forwardConsoleLogs = validateAndBuildForwardOption(initConfiguration.forwardConsoleLogs, objectValues(ConsoleApiName), 'Forward Console Logs');\n const forwardReports = validateAndBuildForwardOption(initConfiguration.forwardReports, objectValues(RawReportType), 'Forward Reports');\n if (!baseConfiguration || !forwardConsoleLogs || !forwardReports) {\n return;\n }\n if (initConfiguration.forwardErrorsToLogs && !forwardConsoleLogs.includes(ConsoleApiName.error)) {\n forwardConsoleLogs.push(ConsoleApiName.error);\n }\n return {\n forwardErrorsToLogs: initConfiguration.forwardErrorsToLogs !== false,\n forwardConsoleLogs,\n forwardReports,\n requestErrorResponseLengthLimit: DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT,\n ...baseConfiguration,\n };\n}\nexport function validateAndBuildForwardOption(option, allowedValues, label) {\n if (option === undefined) {\n return [];\n }\n if (!(option === 'all' || (Array.isArray(option) && option.every((api) => allowedValues.includes(api))))) {\n display.error(`${label} should be \"all\" or an array with allowed values \"${allowedValues.join('\", \"')}\"`);\n return;\n }\n return option === 'all' ? allowedValues : removeDuplicates(option);\n}\nexport function serializeLogsConfiguration(configuration) {\n const baseSerializedInitConfiguration = serializeConfiguration(configuration);\n return {\n forward_errors_to_logs: configuration.forwardErrorsToLogs,\n forward_console_logs: configuration.forwardConsoleLogs,\n forward_reports: configuration.forwardReports,\n use_pci_intake: configuration.usePciIntake,\n ...baseSerializedInitConfiguration,\n };\n}\n//# sourceMappingURL=configuration.js.map","import { createBoundedBuffer, canUseEventBridge, display, displayAlreadyInitializedError, initFeatureFlags, initFetchObservable, noop, timeStampNow, buildAccountContextManager, CustomerContextKey, bufferContextCalls, addTelemetryConfiguration, buildGlobalContextManager, buildUserContextManager, } from '@datadog/browser-core';\nimport { serializeLogsConfiguration, validateAndBuildLogsConfiguration } from '../domain/configuration';\nexport function createPreStartStrategy(getCommonContext, trackingConsentState, doStartLogs) {\n const bufferApiCalls = createBoundedBuffer();\n // TODO next major: remove the globalContext, accountContextManager, userContext from preStartStrategy and use an empty context instead\n const globalContext = buildGlobalContextManager();\n bufferContextCalls(globalContext, CustomerContextKey.globalContext, bufferApiCalls);\n const accountContext = buildAccountContextManager();\n bufferContextCalls(accountContext, CustomerContextKey.accountContext, bufferApiCalls);\n const userContext = buildUserContextManager();\n bufferContextCalls(userContext, CustomerContextKey.userContext, bufferApiCalls);\n let cachedInitConfiguration;\n let cachedConfiguration;\n const trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartLogs);\n function tryStartLogs() {\n if (!cachedConfiguration || !cachedInitConfiguration || !trackingConsentState.isGranted()) {\n return;\n }\n trackingConsentStateSubscription.unsubscribe();\n const startLogsResult = doStartLogs(cachedInitConfiguration, cachedConfiguration);\n bufferApiCalls.drain(startLogsResult);\n }\n return {\n init(initConfiguration, errorStack) {\n if (!initConfiguration) {\n display.error('Missing configuration');\n return;\n }\n // Set the experimental feature flags as early as possible, so we can use them in most places\n initFeatureFlags(initConfiguration.enableExperimentalFeatures);\n if (canUseEventBridge()) {\n initConfiguration = overrideInitConfigurationForBridge(initConfiguration);\n }\n // Expose the initial configuration regardless of initialization success.\n cachedInitConfiguration = initConfiguration;\n addTelemetryConfiguration(serializeLogsConfiguration(initConfiguration));\n if (cachedConfiguration) {\n displayAlreadyInitializedError('DD_LOGS', initConfiguration);\n return;\n }\n const configuration = validateAndBuildLogsConfiguration(initConfiguration, errorStack);\n if (!configuration) {\n return;\n }\n cachedConfiguration = configuration;\n // Instrumuent fetch to track network requests\n // This is needed in case the consent is not granted and some cutsomer\n // library (Apollo Client) is storing uninstrumented fetch to be used later\n // The subscrption is needed so that the instrumentation process is completed\n initFetchObservable().subscribe(noop);\n trackingConsentState.tryToInit(configuration.trackingConsent);\n tryStartLogs();\n },\n get initConfiguration() {\n return cachedInitConfiguration;\n },\n globalContext,\n accountContext,\n userContext,\n getInternalContext: noop,\n handleLog(message, statusType, handlingStack, context = getCommonContext(), date = timeStampNow()) {\n bufferApiCalls.add((startLogsResult) => startLogsResult.handleLog(message, statusType, handlingStack, context, date));\n },\n };\n}\nfunction overrideInitConfigurationForBridge(initConfiguration) {\n return { ...initConfiguration, clientToken: 'empty' };\n}\n//# sourceMappingURL=preStartLogs.js.map","import { ContextManagerMethod, CustomerContextKey, addTelemetryUsage, makePublicApi, monitor, sanitize, displayAlreadyInitializedError, deepClone, createTrackingConsentState, defineContextMethod, startBufferingData, callMonitored, } from '@datadog/browser-core';\nimport { Logger } from '../domain/logger';\nimport { buildCommonContext } from '../domain/contexts/commonContext';\nimport { createPreStartStrategy } from './preStartLogs';\nexport function makeLogsPublicApi(startLogsImpl) {\n const trackingConsentState = createTrackingConsentState();\n const bufferedDataObservable = startBufferingData().observable;\n let strategy = createPreStartStrategy(buildCommonContext, trackingConsentState, (initConfiguration, configuration) => {\n const startLogsResult = startLogsImpl(configuration, buildCommonContext, trackingConsentState, bufferedDataObservable);\n strategy = createPostStartStrategy(initConfiguration, startLogsResult);\n return startLogsResult;\n });\n const getStrategy = () => strategy;\n const customLoggers = {};\n const mainLogger = new Logger((...params) => strategy.handleLog(...params));\n return makePublicApi({\n logger: mainLogger,\n init: (initConfiguration) => {\n const errorStack = new Error().stack;\n callMonitored(() => strategy.init(initConfiguration, errorStack));\n },\n setTrackingConsent: monitor((trackingConsent) => {\n trackingConsentState.update(trackingConsent);\n addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent });\n }),\n getGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.getContext),\n setGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.setContext),\n setGlobalContextProperty: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.setContextProperty),\n removeGlobalContextProperty: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.removeContextProperty),\n clearGlobalContext: defineContextMethod(getStrategy, CustomerContextKey.globalContext, ContextManagerMethod.clearContext),\n createLogger: monitor((name, conf = {}) => {\n customLoggers[name] = new Logger((...params) => strategy.handleLog(...params), sanitize(name), conf.handler, conf.level, sanitize(conf.context));\n return customLoggers[name];\n }),\n getLogger: monitor((name) => customLoggers[name]),\n getInitConfiguration: monitor(() => deepClone(strategy.initConfiguration)),\n getInternalContext: monitor((startTime) => strategy.getInternalContext(startTime)),\n setUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.setContext),\n getUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.getContext),\n setUserProperty: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.setContextProperty),\n removeUserProperty: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.removeContextProperty),\n clearUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.clearContext),\n setAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.setContext),\n getAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.getContext),\n setAccountProperty: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.setContextProperty),\n removeAccountProperty: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.removeContextProperty),\n clearAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.clearContext),\n });\n}\nfunction createPostStartStrategy(initConfiguration, startLogsResult) {\n return {\n init: (initConfiguration) => {\n displayAlreadyInitializedError('DD_LOGS', initConfiguration);\n },\n initConfiguration,\n ...startLogsResult,\n };\n}\n//# sourceMappingURL=logsPublicApi.js.map","import { Observable, performDraw, SESSION_NOT_TRACKED, startSessionManager } from '@datadog/browser-core';\nexport const LOGS_SESSION_KEY = 'logs';\nexport function startLogsSessionManager(configuration, trackingConsentState) {\n const sessionManager = startSessionManager(configuration, LOGS_SESSION_KEY, (rawTrackingType) => computeTrackingType(configuration, rawTrackingType), trackingConsentState);\n return {\n findTrackedSession: (startTime, options = { returnInactive: false }) => {\n const session = sessionManager.findSession(startTime, options);\n return session && session.trackingType === \"1\" /* LoggerTrackingType.TRACKED */\n ? {\n id: session.id,\n anonymousId: session.anonymousId,\n }\n : undefined;\n },\n expireObservable: sessionManager.expireObservable,\n };\n}\nexport function startLogsSessionManagerStub(configuration) {\n const isTracked = computeTrackingType(configuration) === \"1\" /* LoggerTrackingType.TRACKED */;\n const session = isTracked ? {} : undefined;\n return {\n findTrackedSession: () => session,\n expireObservable: new Observable(),\n };\n}\nfunction computeTrackingType(configuration, rawTrackingType) {\n if (hasValidLoggerSession(rawTrackingType)) {\n return rawTrackingType;\n }\n if (!performDraw(configuration.sessionSampleRate)) {\n return \"0\" /* LoggerTrackingType.NOT_TRACKED */;\n }\n return \"1\" /* LoggerTrackingType.TRACKED */;\n}\nfunction hasValidLoggerSession(trackingType) {\n return trackingType === \"0\" /* LoggerTrackingType.NOT_TRACKED */ || trackingType === \"1\" /* LoggerTrackingType.TRACKED */;\n}\n//# sourceMappingURL=logsSessionManager.js.map","import { DISCARDED, ErrorSource, buildTags, combine, createEventRateLimiter, getRelativeTime, } from '@datadog/browser-core';\nimport { STATUSES } from './logger';\nexport function startLogsAssembly(configuration, lifeCycle, hooks, getCommonContext, reportError, eventRateLimit) {\n const statusWithCustom = STATUSES.concat(['custom']);\n const logRateLimiters = {};\n statusWithCustom.forEach((status) => {\n logRateLimiters[status] = createEventRateLimiter(status, reportError, eventRateLimit);\n });\n lifeCycle.subscribe(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, ({ rawLogsEvent, messageContext = undefined, savedCommonContext = undefined, domainContext, ddtags = [] }) => {\n var _a, _b;\n const startTime = getRelativeTime(rawLogsEvent.date);\n const commonContext = savedCommonContext || getCommonContext();\n const defaultLogsEventAttributes = hooks.triggerHook(0 /* HookNames.Assemble */, {\n startTime,\n });\n if (defaultLogsEventAttributes === DISCARDED) {\n return;\n }\n const defaultDdtags = buildTags(configuration);\n const log = combine({\n view: commonContext.view,\n }, defaultLogsEventAttributes, rawLogsEvent, messageContext, {\n ddtags: defaultDdtags.concat(ddtags).join(','),\n });\n if (((_a = configuration.beforeSend) === null || _a === void 0 ? void 0 : _a.call(configuration, log, domainContext)) === false ||\n (log.origin !== ErrorSource.AGENT &&\n ((_b = logRateLimiters[log.status]) !== null && _b !== void 0 ? _b : logRateLimiters['custom']).isLimitReached())) {\n return;\n }\n lifeCycle.notify(1 /* LifeCycleEventType.LOG_COLLECTED */, log);\n });\n}\n//# sourceMappingURL=assembly.js.map","import { timeStampNow, ConsoleApiName, ErrorSource, initConsoleObservable } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nimport { createErrorFieldFromRawError } from '../createErrorFieldFromRawError';\nexport const LogStatusForApi = {\n [ConsoleApiName.log]: StatusType.info,\n [ConsoleApiName.debug]: StatusType.debug,\n [ConsoleApiName.info]: StatusType.info,\n [ConsoleApiName.warn]: StatusType.warn,\n [ConsoleApiName.error]: StatusType.error,\n};\nexport function startConsoleCollection(configuration, lifeCycle) {\n const consoleSubscription = initConsoleObservable(configuration.forwardConsoleLogs).subscribe((log) => {\n var _a;\n const collectedData = {\n rawLogsEvent: {\n date: timeStampNow(),\n message: log.message,\n origin: ErrorSource.CONSOLE,\n error: log.error && createErrorFieldFromRawError(log.error),\n status: LogStatusForApi[log.api],\n },\n messageContext: (_a = log.error) === null || _a === void 0 ? void 0 : _a.context,\n domainContext: {\n handlingStack: log.handlingStack,\n },\n };\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, collectedData);\n });\n return {\n stop: () => {\n consoleSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=consoleCollection.js.map","import { timeStampNow, ErrorSource, getFileFromStackTraceString, initReportObservable } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nimport { createErrorFieldFromRawError } from '../createErrorFieldFromRawError';\nexport function startReportCollection(configuration, lifeCycle) {\n const reportSubscription = initReportObservable(configuration, configuration.forwardReports).subscribe((rawError) => {\n let message = rawError.message;\n let error;\n const status = rawError.originalError.type === 'deprecation' ? StatusType.warn : StatusType.error;\n if (status === StatusType.error) {\n error = createErrorFieldFromRawError(rawError);\n }\n else if (rawError.stack) {\n message += ` Found in ${getFileFromStackTraceString(rawError.stack)}`;\n }\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n rawLogsEvent: {\n date: timeStampNow(),\n message,\n origin: ErrorSource.REPORT,\n error,\n status,\n },\n });\n });\n return {\n stop: () => {\n reportSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=reportCollection.js.map","import { isWorkerEnvironment, Observable, ErrorSource, initXhrObservable, RequestType, initFetchObservable, computeStackTrace, toStackTraceString, noop, isServerError, isIntakeUrl, safeTruncate, } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nexport function startNetworkErrorCollection(configuration, lifeCycle) {\n if (!configuration.forwardErrorsToLogs) {\n return { stop: noop };\n }\n // XHR is not available in web workers, so we use an empty observable that never emits\n const xhrSubscription = (isWorkerEnvironment ? new Observable() : initXhrObservable(configuration)).subscribe((context) => {\n if (context.state === 'complete') {\n handleResponse(RequestType.XHR, context);\n }\n });\n const fetchSubscription = initFetchObservable({\n responseBodyAction: (context) => (isNetworkError(context) ? 2 /* ResponseBodyAction.COLLECT */ : 0 /* ResponseBodyAction.IGNORE */),\n }).subscribe((context) => {\n if (context.state === 'resolve') {\n handleResponse(RequestType.FETCH, context);\n }\n });\n function isNetworkError(request) {\n return !isIntakeUrl(request.url) && (isRejected(request) || isServerError(request.status));\n }\n function handleResponse(type, request) {\n if (!isNetworkError(request)) {\n return;\n }\n const stack = 'error' in request && request.error\n ? toStackTraceString(computeStackTrace(request.error))\n : request.responseBody || 'Failed to load';\n const domainContext = {\n isAborted: request.isAborted,\n handlingStack: request.handlingStack,\n };\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n rawLogsEvent: {\n message: `${format(type)} error ${request.method} ${request.url}`,\n date: request.startClocks.timeStamp,\n error: {\n stack: safeTruncate(stack, configuration.requestErrorResponseLengthLimit, '...'),\n // We don't know if the error was handled or not, so we set it to undefined\n handling: undefined,\n },\n http: {\n method: request.method, // Cast resource method because of case mismatch cf issue RUMF-1152\n status_code: request.status,\n url: request.url,\n },\n status: StatusType.error,\n origin: ErrorSource.NETWORK,\n },\n domainContext,\n });\n }\n return {\n stop: () => {\n xhrSubscription.unsubscribe();\n fetchSubscription.unsubscribe();\n },\n };\n}\nfunction isRejected(request) {\n return request.status === 0 && request.responseType !== 'opaque';\n}\nfunction format(type) {\n if (RequestType.XHR === type) {\n return 'XHR';\n }\n return 'Fetch';\n}\n//# sourceMappingURL=networkErrorCollection.js.map","import { noop, ErrorSource } from '@datadog/browser-core';\nimport { StatusType } from '../logger/isAuthorized';\nimport { createErrorFieldFromRawError } from '../createErrorFieldFromRawError';\nexport function startRuntimeErrorCollection(configuration, lifeCycle, bufferedDataObservable) {\n if (!configuration.forwardErrorsToLogs) {\n return { stop: noop };\n }\n const rawErrorSubscription = bufferedDataObservable.subscribe((bufferedData) => {\n if (bufferedData.type === 0 /* BufferedDataType.RUNTIME_ERROR */) {\n const error = bufferedData.error;\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n rawLogsEvent: {\n message: error.message,\n date: error.startClocks.timeStamp,\n error: createErrorFieldFromRawError(error),\n origin: ErrorSource.SOURCE,\n status: StatusType.error,\n },\n messageContext: error.context,\n });\n }\n });\n return {\n stop: () => {\n rawErrorSubscription.unsubscribe();\n },\n };\n}\n//# sourceMappingURL=runtimeErrorCollection.js.map","import { AbstractLifeCycle } from '@datadog/browser-core';\nexport const LifeCycle = (AbstractLifeCycle);\n//# sourceMappingURL=lifeCycle.js.map","import { combine, ErrorSource, timeStampNow, originalConsoleMethods, globalConsole, ConsoleApiName, } from '@datadog/browser-core';\nimport { HandlerType } from '../logger';\nimport { isAuthorized, StatusType } from './isAuthorized';\nexport function startLoggerCollection(lifeCycle) {\n function handleLog(logsMessage, logger, handlingStack, savedCommonContext, savedDate) {\n const messageContext = combine(logger.getContext(), logsMessage.context);\n if (isAuthorized(logsMessage.status, HandlerType.console, logger)) {\n displayInConsole(logsMessage, messageContext);\n }\n if (isAuthorized(logsMessage.status, HandlerType.http, logger)) {\n const rawLogEventData = {\n rawLogsEvent: {\n date: savedDate || timeStampNow(),\n message: logsMessage.message,\n status: logsMessage.status,\n origin: ErrorSource.LOGGER,\n },\n messageContext,\n savedCommonContext,\n ddtags: logger.getTags(),\n };\n if (handlingStack) {\n rawLogEventData.domainContext = { handlingStack };\n }\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, rawLogEventData);\n }\n }\n return {\n handleLog,\n };\n}\nconst loggerToConsoleApiName = {\n [StatusType.ok]: ConsoleApiName.debug,\n [StatusType.debug]: ConsoleApiName.debug,\n [StatusType.info]: ConsoleApiName.info,\n [StatusType.notice]: ConsoleApiName.info,\n [StatusType.warn]: ConsoleApiName.warn,\n [StatusType.error]: ConsoleApiName.error,\n [StatusType.critical]: ConsoleApiName.error,\n [StatusType.alert]: ConsoleApiName.error,\n [StatusType.emerg]: ConsoleApiName.error,\n};\nfunction displayInConsole({ status, message }, messageContext) {\n originalConsoleMethods[loggerToConsoleApiName[status]].call(globalConsole, message, messageContext);\n}\n//# sourceMappingURL=loggerCollection.js.map","import { createBatch, createFlushController, createHttpRequest, createIdentityEncoder } from '@datadog/browser-core';\nexport function startLogsBatch(configuration, lifeCycle, reportError, pageMayExitObservable, session) {\n const endpoints = [configuration.logsEndpointBuilder];\n if (configuration.replica) {\n endpoints.push(configuration.replica.logsEndpointBuilder);\n }\n const batch = createBatch({\n encoder: createIdentityEncoder(),\n request: createHttpRequest(endpoints, reportError),\n flushController: createFlushController({\n pageMayExitObservable,\n sessionExpireObservable: session.expireObservable,\n }),\n });\n lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, (serverLogsEvent) => {\n batch.add(serverLogsEvent);\n });\n return batch;\n}\n//# sourceMappingURL=startLogsBatch.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startLogsBridge(lifeCycle) {\n const bridge = getEventBridge();\n lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, (serverLogsEvent) => {\n bridge.send('log', serverLogsEvent);\n });\n}\n//# sourceMappingURL=startLogsBridge.js.map","export function startInternalContext(sessionManager) {\n return {\n get: (startTime) => {\n const trackedSession = sessionManager.findTrackedSession(startTime);\n if (trackedSession) {\n return {\n session_id: trackedSession.id,\n };\n }\n },\n };\n}\n//# sourceMappingURL=internalContext.js.map","import { ErrorSource, addTelemetryDebug } from '@datadog/browser-core';\nimport { StatusType } from './logger/isAuthorized';\nexport function startReportError(lifeCycle) {\n return (error) => {\n lifeCycle.notify(0 /* LifeCycleEventType.RAW_LOG_COLLECTED */, {\n rawLogsEvent: {\n message: error.message,\n date: error.startClocks.timeStamp,\n origin: ErrorSource.AGENT,\n status: StatusType.error,\n },\n });\n // monitor-until: forever, to keep an eye on the errors reported to customers\n addTelemetryDebug('Error reported to customer', { 'error.message': error.message });\n };\n}\n//# sourceMappingURL=reportError.js.map","import { abstractHooks } from '@datadog/browser-core';\nexport const createHooks = (abstractHooks);\n//# sourceMappingURL=hooks.js.map","import { globalObject, willSyntheticsInjectRum, SKIPPED } from '@datadog/browser-core';\nexport function startRUMInternalContext(hooks) {\n const browserWindow = globalObject;\n hooks.register(0 /* HookNames.Assemble */, ({ startTime }) => {\n const internalContext = getRUMInternalContext(startTime);\n if (!internalContext) {\n return SKIPPED;\n }\n return internalContext;\n });\n hooks.register(1 /* HookNames.AssembleTelemetry */, ({ startTime }) => {\n var _a, _b;\n const internalContext = getRUMInternalContext(startTime);\n if (!internalContext) {\n return SKIPPED;\n }\n return {\n application: { id: internalContext.application_id },\n view: { id: (_a = internalContext.view) === null || _a === void 0 ? void 0 : _a.id },\n action: { id: (_b = internalContext.user_action) === null || _b === void 0 ? void 0 : _b.id },\n };\n });\n function getRUMInternalContext(startTime) {\n const willSyntheticsInjectRumResult = willSyntheticsInjectRum();\n const rumSource = willSyntheticsInjectRumResult ? browserWindow.DD_RUM_SYNTHETICS : browserWindow.DD_RUM;\n const rumContext = getInternalContextFromRumGlobal(startTime, rumSource);\n if (rumContext) {\n return rumContext;\n }\n }\n function getInternalContextFromRumGlobal(startTime, rumGlobal) {\n if (rumGlobal && rumGlobal.getInternalContext) {\n return rumGlobal.getInternalContext(startTime);\n }\n }\n}\n//# sourceMappingURL=rumInternalContext.js.map","import { DISCARDED, SKIPPED } from '@datadog/browser-core';\nexport function startSessionContext(hooks, configuration, sessionManager) {\n hooks.register(0 /* HookNames.Assemble */, ({ startTime }) => {\n const session = sessionManager.findTrackedSession(startTime);\n const isSessionTracked = sessionManager.findTrackedSession(startTime, { returnInactive: true });\n if (!isSessionTracked) {\n return DISCARDED;\n }\n return {\n service: configuration.service,\n session_id: session ? session.id : undefined,\n session: session ? { id: session.id } : undefined,\n };\n });\n hooks.register(1 /* HookNames.AssembleTelemetry */, ({ startTime }) => {\n const session = sessionManager.findTrackedSession(startTime);\n if (!session || !session.id) {\n return SKIPPED;\n }\n return {\n session: { id: session.id },\n };\n });\n}\n//# sourceMappingURL=sessionContext.js.map","import { DISCARDED, SKIPPED } from '@datadog/browser-core';\nexport function startTrackingConsentContext(hooks, trackingConsentState) {\n function isConsented() {\n const wasConsented = trackingConsentState.isGranted();\n if (!wasConsented) {\n return DISCARDED;\n }\n return SKIPPED;\n }\n hooks.register(0 /* HookNames.Assemble */, isConsented);\n hooks.register(1 /* HookNames.AssembleTelemetry */, isConsented);\n}\n//# sourceMappingURL=trackingConsentContext.js.map","import { Observable, sendToExtension, createPageMayExitObservable, willSyntheticsInjectRum, canUseEventBridge, startAccountContext, startGlobalContext, startTelemetry, createIdentityEncoder, startUserContext, isWorkerEnvironment, } from '@datadog/browser-core';\nimport { startLogsSessionManager, startLogsSessionManagerStub } from '../domain/logsSessionManager';\nimport { startLogsAssembly } from '../domain/assembly';\nimport { startConsoleCollection } from '../domain/console/consoleCollection';\nimport { startReportCollection } from '../domain/report/reportCollection';\nimport { startNetworkErrorCollection } from '../domain/networkError/networkErrorCollection';\nimport { startRuntimeErrorCollection } from '../domain/runtimeError/runtimeErrorCollection';\nimport { LifeCycle } from '../domain/lifeCycle';\nimport { startLoggerCollection } from '../domain/logger/loggerCollection';\nimport { startLogsBatch } from '../transport/startLogsBatch';\nimport { startLogsBridge } from '../transport/startLogsBridge';\nimport { startInternalContext } from '../domain/contexts/internalContext';\nimport { startReportError } from '../domain/reportError';\nimport { createHooks } from '../domain/hooks';\nimport { startRUMInternalContext } from '../domain/contexts/rumInternalContext';\nimport { startSessionContext } from '../domain/contexts/sessionContext';\nimport { startTrackingConsentContext } from '../domain/contexts/trackingConsentContext';\nconst LOGS_STORAGE_KEY = 'logs';\nexport function startLogs(configuration, getCommonContext, \n// `startLogs` and its subcomponents assume tracking consent is granted initially and starts\n// collecting logs unconditionally. As such, `startLogs` should be called with a\n// `trackingConsentState` set to \"granted\".\ntrackingConsentState, bufferedDataObservable) {\n const lifeCycle = new LifeCycle();\n const hooks = createHooks();\n const cleanupTasks = [];\n lifeCycle.subscribe(1 /* LifeCycleEventType.LOG_COLLECTED */, (log) => sendToExtension('logs', log));\n const reportError = startReportError(lifeCycle);\n // Page exit is not observable in worker environments (no window/document events)\n const pageMayExitObservable = isWorkerEnvironment\n ? new Observable()\n : createPageMayExitObservable(configuration);\n const telemetry = startTelemetry(\"browser-logs-sdk\" /* TelemetryService.LOGS */, configuration, hooks, reportError, pageMayExitObservable, createIdentityEncoder);\n cleanupTasks.push(telemetry.stop);\n const session = configuration.sessionStoreStrategyType && !canUseEventBridge() && !willSyntheticsInjectRum()\n ? startLogsSessionManager(configuration, trackingConsentState)\n : startLogsSessionManagerStub(configuration);\n startTrackingConsentContext(hooks, trackingConsentState);\n // Start user and account context first to allow overrides from global context\n startSessionContext(hooks, configuration, session);\n const accountContext = startAccountContext(hooks, configuration, LOGS_STORAGE_KEY);\n const userContext = startUserContext(hooks, configuration, session, LOGS_STORAGE_KEY);\n const globalContext = startGlobalContext(hooks, configuration, LOGS_STORAGE_KEY, false);\n startRUMInternalContext(hooks);\n startNetworkErrorCollection(configuration, lifeCycle);\n startRuntimeErrorCollection(configuration, lifeCycle, bufferedDataObservable);\n bufferedDataObservable.unbuffer();\n startConsoleCollection(configuration, lifeCycle);\n startReportCollection(configuration, lifeCycle);\n const { handleLog } = startLoggerCollection(lifeCycle);\n startLogsAssembly(configuration, lifeCycle, hooks, getCommonContext, reportError);\n if (!canUseEventBridge()) {\n const { stop: stopLogsBatch } = startLogsBatch(configuration, lifeCycle, reportError, pageMayExitObservable, session);\n cleanupTasks.push(() => stopLogsBatch());\n }\n else {\n startLogsBridge(lifeCycle);\n }\n const internalContext = startInternalContext(session);\n return {\n handleLog,\n getInternalContext: internalContext.get,\n accountContext,\n globalContext,\n userContext,\n stop: () => {\n cleanupTasks.forEach((task) => task());\n },\n };\n}\n//# sourceMappingURL=startLogs.js.map","/**\n *\n * Datadog Browser Logs SDK for collecting and forwarding browser logs to Datadog.\n * Provides comprehensive logging capabilities with automatic error tracking and custom log collection.\n *\n * @packageDocumentation\n * @see [Browser Log Collection](https://docs.datadoghq.com/logs/log_collection/javascript/)\n */\nimport { defineGlobal, getGlobalObject } from '@datadog/browser-core';\nimport { makeLogsPublicApi } from '../boot/logsPublicApi';\nimport { startLogs } from '../boot/startLogs';\nexport { Logger, HandlerType } from '../domain/logger';\nexport { StatusType } from '../domain/logger/isAuthorized';\n/**\n * The global Logs instance. Use this to call Logs methods.\n *\n * @category Main\n * @see {@link DatadogLogs}\n * @see [Browser Log Collection](https://docs.datadoghq.com/logs/log_collection/javascript/)\n */\nexport const datadogLogs = makeLogsPublicApi(startLogs);\ndefineGlobal(getGlobalObject(), 'DD_LOGS', datadogLogs);\n//# sourceMappingURL=main.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ILogger\"), exports);\n__exportStar(require(\"./LoggerConfig\"), exports);\n__exportStar(require(\"./ChildLoggerConfig\"), exports);\n__exportStar(require(\"./NodeConfig\"), exports);\n__exportStar(require(\"./BrowserConfig\"), exports);\n__exportStar(require(\"./BaseConfig\"), exports);\n__exportStar(require(\"./LogMethod\"), exports);\n","'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || '<anonymous>'\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n","'use strict'\n\nconst format = require('quick-format-unescaped')\n\nmodule.exports = pino\n\nconst _console = pfGlobalThisOrFallback().console || {}\nconst stdSerializers = {\n mapHttpRequest: mock,\n mapHttpResponse: mock,\n wrapRequestSerializer: passthrough,\n wrapResponseSerializer: passthrough,\n wrapErrorSerializer: passthrough,\n req: mock,\n res: mock,\n err: asErrValue,\n errWithCause: asErrValue\n}\nfunction levelToValue (level, logger) {\n return level === 'silent'\n ? Infinity\n : logger.levels.values[level]\n}\nconst baseLogFunctionSymbol = Symbol('pino.logFuncs')\nconst hierarchySymbol = Symbol('pino.hierarchy')\n\nconst logFallbackMap = {\n error: 'log',\n fatal: 'error',\n warn: 'error',\n info: 'log',\n debug: 'log',\n trace: 'log'\n}\n\nfunction appendChildLogger (parentLogger, childLogger) {\n const newEntry = {\n logger: childLogger,\n parent: parentLogger[hierarchySymbol]\n }\n childLogger[hierarchySymbol] = newEntry\n}\n\nfunction setupBaseLogFunctions (logger, levels, proto) {\n const logFunctions = {}\n levels.forEach(level => {\n logFunctions[level] = proto[level] ? proto[level] : (_console[level] || _console[logFallbackMap[level] || 'log'] || noop)\n })\n logger[baseLogFunctionSymbol] = logFunctions\n}\n\nfunction shouldSerialize (serialize, serializers) {\n if (Array.isArray(serialize)) {\n const hasToFilter = serialize.filter(function (k) {\n return k !== '!stdSerializers.err'\n })\n return hasToFilter\n } else if (serialize === true) {\n return Object.keys(serializers)\n }\n\n return false\n}\n\nfunction pino (opts) {\n opts = opts || {}\n opts.browser = opts.browser || {}\n\n const transmit = opts.browser.transmit\n if (transmit && typeof transmit.send !== 'function') { throw Error('pino: transmit option must have a send function') }\n\n const proto = opts.browser.write || _console\n if (opts.browser.write) opts.browser.asObject = true\n const serializers = opts.serializers || {}\n const serialize = shouldSerialize(opts.browser.serialize, serializers)\n let stdErrSerialize = opts.browser.serialize\n\n if (\n Array.isArray(opts.browser.serialize) &&\n opts.browser.serialize.indexOf('!stdSerializers.err') > -1\n ) stdErrSerialize = false\n\n const customLevels = Object.keys(opts.customLevels || {})\n const levels = ['error', 'fatal', 'warn', 'info', 'debug', 'trace'].concat(customLevels)\n\n if (typeof proto === 'function') {\n levels.forEach(function (level) {\n proto[level] = proto\n })\n }\n if (opts.enabled === false || opts.browser.disabled) opts.level = 'silent'\n const level = opts.level || 'info'\n const logger = Object.create(proto)\n if (!logger.log) logger.log = noop\n\n setupBaseLogFunctions(logger, levels, proto)\n // setup root hierarchy entry\n appendChildLogger({}, logger)\n\n Object.defineProperty(logger, 'levelVal', {\n get: getLevelVal\n })\n Object.defineProperty(logger, 'level', {\n get: getLevel,\n set: setLevel\n })\n\n const setOpts = {\n transmit,\n serialize,\n asObject: opts.browser.asObject,\n asObjectBindingsOnly: opts.browser.asObjectBindingsOnly,\n formatters: opts.browser.formatters,\n levels,\n timestamp: getTimeFunction(opts),\n messageKey: opts.messageKey || 'msg',\n onChild: opts.onChild || noop\n }\n logger.levels = getLevels(opts)\n logger.level = level\n\n logger.isLevelEnabled = function (level) {\n if (!this.levels.values[level]) {\n return false\n }\n\n return this.levels.values[level] >= this.levels.values[this.level]\n }\n logger.setMaxListeners = logger.getMaxListeners =\n logger.emit = logger.addListener = logger.on =\n logger.prependListener = logger.once =\n logger.prependOnceListener = logger.removeListener =\n logger.removeAllListeners = logger.listeners =\n logger.listenerCount = logger.eventNames =\n logger.write = logger.flush = noop\n logger.serializers = serializers\n logger._serialize = serialize\n logger._stdErrSerialize = stdErrSerialize\n logger.child = function (...args) { return child.call(this, setOpts, ...args) }\n\n if (transmit) logger._logEvent = createLogEventShape()\n\n function getLevelVal () {\n return levelToValue(this.level, this)\n }\n\n function getLevel () {\n return this._level\n }\n function setLevel (level) {\n if (level !== 'silent' && !this.levels.values[level]) {\n throw Error('unknown level ' + level)\n }\n this._level = level\n\n set(this, setOpts, logger, 'error') // <-- must stay first\n set(this, setOpts, logger, 'fatal')\n set(this, setOpts, logger, 'warn')\n set(this, setOpts, logger, 'info')\n set(this, setOpts, logger, 'debug')\n set(this, setOpts, logger, 'trace')\n\n customLevels.forEach((level) => {\n set(this, setOpts, logger, level)\n })\n }\n\n function child (setOpts, bindings, childOptions) {\n if (!bindings) {\n throw new Error('missing bindings for child Pino')\n }\n childOptions = childOptions || {}\n if (serialize && bindings.serializers) {\n childOptions.serializers = bindings.serializers\n }\n const childOptionsSerializers = childOptions.serializers\n if (serialize && childOptionsSerializers) {\n var childSerializers = Object.assign({}, serializers, childOptionsSerializers)\n var childSerialize = opts.browser.serialize === true\n ? Object.keys(childSerializers)\n : serialize\n delete bindings.serializers\n applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize)\n }\n function Child (parent) {\n this._childLevel = (parent._childLevel | 0) + 1\n\n // make sure bindings are available in the `set` function\n this.bindings = bindings\n\n if (childSerializers) {\n this.serializers = childSerializers\n this._serialize = childSerialize\n }\n if (transmit) {\n this._logEvent = createLogEventShape(\n [].concat(parent._logEvent.bindings, bindings)\n )\n }\n }\n Child.prototype = this\n const newLogger = new Child(this)\n\n // must happen before the level is assigned\n appendChildLogger(this, newLogger)\n newLogger.child = function (...args) { return child.call(this, setOpts, ...args) }\n // required to actually initialize the logger functions for any given child\n newLogger.level = childOptions.level || this.level // allow level to be set by childOptions\n setOpts.onChild(newLogger)\n\n return newLogger\n }\n return logger\n}\n\nfunction getLevels (opts) {\n const customLevels = opts.customLevels || {}\n\n const values = Object.assign({}, pino.levels.values, customLevels)\n const labels = Object.assign({}, pino.levels.labels, invertObject(customLevels))\n\n return {\n values,\n labels\n }\n}\n\nfunction invertObject (obj) {\n const inverted = {}\n Object.keys(obj).forEach(function (key) {\n inverted[obj[key]] = key\n })\n return inverted\n}\n\npino.levels = {\n values: {\n fatal: 60,\n error: 50,\n warn: 40,\n info: 30,\n debug: 20,\n trace: 10\n },\n labels: {\n 10: 'trace',\n 20: 'debug',\n 30: 'info',\n 40: 'warn',\n 50: 'error',\n 60: 'fatal'\n }\n}\n\npino.stdSerializers = stdSerializers\npino.stdTimeFunctions = Object.assign({}, { nullTime, epochTime, unixTime, isoTime })\n\nfunction getBindingChain (logger) {\n const bindings = []\n if (logger.bindings) {\n bindings.push(logger.bindings)\n }\n\n // traverse up the tree to get all bindings\n let hierarchy = logger[hierarchySymbol]\n while (hierarchy.parent) {\n hierarchy = hierarchy.parent\n if (hierarchy.logger.bindings) {\n bindings.push(hierarchy.logger.bindings)\n }\n }\n\n return bindings.reverse()\n}\n\nfunction set (self, opts, rootLogger, level) {\n // override the current log functions with either `noop` or the base log function\n Object.defineProperty(self, level, {\n value: (levelToValue(self.level, rootLogger) > levelToValue(level, rootLogger)\n ? noop\n : rootLogger[baseLogFunctionSymbol][level]),\n writable: true,\n enumerable: true,\n configurable: true\n })\n\n if (self[level] === noop) {\n if (!opts.transmit) return\n\n const transmitLevel = opts.transmit.level || self.level\n const transmitValue = levelToValue(transmitLevel, rootLogger)\n const methodValue = levelToValue(level, rootLogger)\n if (methodValue < transmitValue) return\n }\n\n // make sure the log format is correct\n self[level] = createWrap(self, opts, rootLogger, level)\n\n // prepend bindings if it is not the root logger\n const bindings = getBindingChain(self)\n if (bindings.length === 0) {\n // early exit in case for rootLogger\n return\n }\n self[level] = prependBindingsInArguments(bindings, self[level])\n}\n\nfunction prependBindingsInArguments (bindings, logFunc) {\n return function () {\n return logFunc.apply(this, [...bindings, ...arguments])\n }\n}\n\nfunction createWrap (self, opts, rootLogger, level) {\n return (function (write) {\n return function LOG () {\n const ts = opts.timestamp()\n const args = new Array(arguments.length)\n const proto = (Object.getPrototypeOf && Object.getPrototypeOf(this) === _console) ? _console : this\n for (var i = 0; i < args.length; i++) args[i] = arguments[i]\n\n var argsIsSerialized = false\n if (opts.serialize) {\n applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize)\n argsIsSerialized = true\n }\n if (opts.asObject || opts.formatters) {\n write.call(proto, ...asObject(this, level, args, ts, opts))\n } else write.apply(proto, args)\n\n if (opts.transmit) {\n const transmitLevel = opts.transmit.level || self._level\n const transmitValue = levelToValue(transmitLevel, rootLogger)\n const methodValue = levelToValue(level, rootLogger)\n if (methodValue < transmitValue) return\n transmit(this, {\n ts,\n methodLevel: level,\n methodValue,\n transmitLevel,\n transmitValue: rootLogger.levels.values[opts.transmit.level || self._level],\n send: opts.transmit.send,\n val: levelToValue(self._level, rootLogger)\n }, args, argsIsSerialized)\n }\n }\n })(self[baseLogFunctionSymbol][level])\n}\n\nfunction asObject (logger, level, args, ts, opts) {\n const {\n level: levelFormatter,\n log: logObjectFormatter = (obj) => obj\n } = opts.formatters || {}\n const argsCloned = args.slice()\n let msg = argsCloned[0]\n const logObject = {}\n\n let lvl = (logger._childLevel | 0) + 1\n if (lvl < 1) lvl = 1\n\n if (ts) {\n logObject.time = ts\n }\n\n if (levelFormatter) {\n const formattedLevel = levelFormatter(level, logger.levels.values[level])\n Object.assign(logObject, formattedLevel)\n } else {\n logObject.level = logger.levels.values[level]\n }\n\n if (opts.asObjectBindingsOnly) {\n if (msg !== null && typeof msg === 'object') {\n while (lvl-- && typeof argsCloned[0] === 'object') {\n Object.assign(logObject, argsCloned.shift())\n }\n }\n\n const formattedLogObject = logObjectFormatter(logObject)\n return [formattedLogObject, ...argsCloned]\n } else {\n // deliberate, catching objects, arrays\n if (msg !== null && typeof msg === 'object') {\n while (lvl-- && typeof argsCloned[0] === 'object') {\n Object.assign(logObject, argsCloned.shift())\n }\n msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : undefined\n } else if (typeof msg === 'string') msg = format(argsCloned.shift(), argsCloned)\n if (msg !== undefined) logObject[opts.messageKey] = msg\n\n const formattedLogObject = logObjectFormatter(logObject)\n return [formattedLogObject]\n }\n}\n\nfunction applySerializers (args, serialize, serializers, stdErrSerialize) {\n for (const i in args) {\n if (stdErrSerialize && args[i] instanceof Error) {\n args[i] = pino.stdSerializers.err(args[i])\n } else if (typeof args[i] === 'object' && !Array.isArray(args[i]) && serialize) {\n for (const k in args[i]) {\n if (serialize.indexOf(k) > -1 && k in serializers) {\n args[i][k] = serializers[k](args[i][k])\n }\n }\n }\n }\n}\n\nfunction transmit (logger, opts, args, argsIsSerialized = false) {\n const send = opts.send\n const ts = opts.ts\n const methodLevel = opts.methodLevel\n const methodValue = opts.methodValue\n const val = opts.val\n const bindings = logger._logEvent.bindings\n\n if (!argsIsSerialized) {\n applySerializers(\n args,\n logger._serialize || Object.keys(logger.serializers),\n logger.serializers,\n logger._stdErrSerialize === undefined ? true : logger._stdErrSerialize\n )\n }\n\n logger._logEvent.ts = ts\n logger._logEvent.messages = args.filter(function (arg) {\n // bindings can only be objects, so reference equality check via indexOf is fine\n return bindings.indexOf(arg) === -1\n })\n\n logger._logEvent.level.label = methodLevel\n logger._logEvent.level.value = methodValue\n\n send(methodLevel, logger._logEvent, val)\n\n logger._logEvent = createLogEventShape(bindings)\n}\n\nfunction createLogEventShape (bindings) {\n return {\n ts: 0,\n messages: [],\n bindings: bindings || [],\n level: { label: '', value: 0 }\n }\n}\n\nfunction asErrValue (err) {\n const obj = {\n type: err.constructor.name,\n msg: err.message,\n stack: err.stack\n }\n for (const key in err) {\n if (obj[key] === undefined) {\n obj[key] = err[key]\n }\n }\n return obj\n}\n\nfunction getTimeFunction (opts) {\n if (typeof opts.timestamp === 'function') {\n return opts.timestamp\n }\n if (opts.timestamp === false) {\n return nullTime\n }\n return epochTime\n}\n\nfunction mock () { return {} }\nfunction passthrough (a) { return a }\nfunction noop () {}\n\nfunction nullTime () { return false }\nfunction epochTime () { return Date.now() }\nfunction unixTime () { return Math.round(Date.now() / 1000.0) }\nfunction isoTime () { return new Date(Date.now()).toISOString() } // using Date.now() for testability\n\n/* eslint-disable */\n/* istanbul ignore next */\nfunction pfGlobalThisOrFallback () {\n function defd (o) { return typeof o !== 'undefined' && o }\n try {\n if (typeof globalThis !== 'undefined') return globalThis\n Object.defineProperty(Object.prototype, 'globalThis', {\n get: function () {\n delete Object.prototype.globalThis\n return (this.globalThis = this)\n },\n configurable: true\n })\n return globalThis\n } catch (e) {\n return defd(self) || defd(window) || defd(this) || {}\n }\n}\n/* eslint-enable */\n\nmodule.exports.default = pino\nmodule.exports.pino = pino\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLogger = createLogger;\nconst pino_1 = __importDefault(require(\"pino\"));\nfunction createLogger(configOrDestination, destination) {\n if (configOrDestination && 'write' in configOrDestination) {\n return (0, pino_1.default)({ level: 'info' }, configOrDestination);\n }\n return (0, pino_1.default)({\n level: 'info',\n ...configOrDestination,\n }, destination);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLoggerHttpMiddleware = createLoggerHttpMiddleware;\nconst createLogger_1 = require(\"./createLogger\");\nfunction createLoggerHttpMiddleware(opts) {\n const { logger, genReqId, logRequest = true } = opts ?? {};\n return (req, res, next) => {\n const middlewareLogger = (logger ?? (0, createLogger_1.createLogger)()).child({\n req: {\n reqId: genReqId?.(req),\n method: req.method,\n url: req.url,\n headers: req.headers,\n params: req.params,\n query: req.query,\n },\n });\n req.logger = middlewareLogger;\n res.logger = middlewareLogger;\n req.startTime = Date.now();\n if (logRequest) {\n const onRequestComplete = (err) => {\n res.removeListener('error', onRequestComplete);\n res.removeListener('finish', onRequestComplete);\n res.removeListener('close', onRequestComplete);\n res.logger.info({\n err,\n duration: Date.now() - req.startTime,\n }, `Request ${req.method} ${req.url} ${err ? 'failed' : 'completed'}`);\n };\n res.on('finish', onRequestComplete);\n res.on('close', onRequestComplete);\n res.on('error', onRequestComplete);\n }\n next();\n };\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./createLogger\"), exports);\n__exportStar(require(\"./createLoggerHttpMiddleware\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./types\"), exports);\n__exportStar(require(\"./utils\"), exports);\n","import { datadogLogs } from \"@datadog/browser-logs\"\nimport type { ILogger } from \"@volley/logger\"\nimport { createLogger } from \"@volley/logger\"\n\nexport interface DatadogLoggerOptions {\n /** Environment (e.g., \"dev\", \"staging\", \"prod\") */\n env: string\n /** Application version */\n version: string\n /** Service name (defaults to \"vwr-loader\") */\n service: string\n /** Client Id for Datadog */\n clientToken: string\n}\n\n// shells/vwr/src/logger.ts\nexport function initDatadogLogs(options: DatadogLoggerOptions): void {\n datadogLogs.init({\n clientToken: options?.clientToken,\n site: \"datadoghq.com\",\n service: options.service,\n env: options.env,\n version: options.version,\n forwardErrorsToLogs: true, // RUM picks up console errors automatically\n sessionSampleRate: 100,\n })\n}\n\n/**\n * Extract message and context from pino log object.\n * Removes internal pino fields (msg, level, time) and extracts error if present.\n */\nfunction parseLogObject(logObject: object) {\n const obj = logObject as Record<string, unknown>\n const msg = (obj.msg as string) || \"\"\n const errorObj = obj.error instanceof Error ? obj.error : undefined\n\n // Build context (exclude internal pino fields)\n const {\n msg: _msg,\n level: _level,\n time: _time,\n error: _error,\n ...context\n } = obj\n\n return { msg, context, errorObj }\n}\n\n/**\n * Write handler for non-error logs (trace, debug, info, warn).\n * Sends to console and Datadog Logs.\n */\nfunction writeLog(\n logObject: object,\n consoleMethod: \"debug\" | \"info\" | \"warn\",\n datadogLevel: \"debug\" | \"info\" | \"warn\"\n) {\n const { msg, context } = parseLogObject(logObject)\n\n // Write to console for dev visibility\n console[consoleMethod](msg, context)\n\n // Send to Datadog Logs\n datadogLogs.logger[datadogLevel](msg, context)\n}\n\n/**\n * Write handler for error logs (error, fatal).\n * Sends to console and Datadog Logs with Error object.\n */\nfunction writeError(logObject: object) {\n const { msg, context, errorObj } = parseLogObject(logObject)\n\n // Write to console for dev visibility (include error for stack trace)\n if (errorObj) {\n console.error(msg, context, errorObj)\n } else {\n console.error(msg, context)\n }\n\n /*NOTE: This is commented out because forwardErrorsToLogs: true in datadogLogs.init()\n * automatically forwards console.error calls to Datadog Logs. If forwardErrorsToLogs\n * were disabled, we would use this handler to manually send errors to Datadog.\n */\n // Send to Datadog Logs with Error object as 3rd arg\n //datadogLogs.logger.error(msg, context, errorObj)\n}\n\nexport let logger: ILogger = createLogger({\n type: \"browser\",\n browser: {\n asObject: true,\n formatters: {\n level(label: string) {\n return { level: label }\n },\n },\n // Separate write handlers per level for clarity\n write: {\n trace: (o: object) => writeLog(o, \"debug\", \"debug\"),\n debug: (o: object) => writeLog(o, \"debug\", \"debug\"),\n info: (o: object) => writeLog(o, \"info\", \"info\"),\n warn: (o: object) => writeLog(o, \"warn\", \"warn\"),\n // error and fatal logs are automatically forwarded to Datadog via forwardErrorsToLogs\n error: writeError,\n fatal: writeError,\n },\n },\n})\n\nexport function setLogger(_logger: ILogger) {\n logger = _logger\n}\n","import { datadogRum, type DatadogRum } from \"@datadog/browser-rum\"\n\nimport { logger } from \"./logger\"\n\nconst APPLICATION_ID = import.meta.env.VITE_DATADOG_APPLICATION_ID as\n | string\n | undefined\nconst CLIENT_TOKEN = import.meta.env.VITE_DATADOG_CLIENT_TOKEN as\n | string\n | undefined\n\nexport interface RumOptions {\n /** Environment (e.g., \"dev\", \"staging\", \"prod\") */\n env: string\n /** Application version */\n version?: string\n /** Service name (defaults to \"vwr-loader\") */\n service?: string\n /** Application Id for Datadog */\n applicationId?: string\n /** Client Id for Datadog */\n clientToken?: string\n}\n\n/**\n * Initialize Datadog RUM with build-time injected credentials.\n *\n * When running in a mobile webview with WebViewTracking.enable(),\n * events are automatically forwarded to the mobile app's RUM session.\n *\n * @returns true if RUM was initialized, false if credentials were missing\n */\nexport function initRumGlobal(options: RumOptions): DatadogRum | undefined {\n try {\n if (\n (!APPLICATION_ID && !options.applicationId) ||\n (!CLIENT_TOKEN && !options.clientToken)\n ) {\n throw new Error(\"Datadog credentials not provided\")\n }\n datadogRum.init({\n applicationId: (options.applicationId ?? APPLICATION_ID) as string,\n clientToken: (options.clientToken ?? CLIENT_TOKEN) as string,\n site: \"datadoghq.com\",\n service: options.service ?? \"vwr-loader\",\n env: options.env,\n version: options.version,\n sessionSampleRate: 100,\n sessionReplaySampleRate: 0,\n trackResources: true,\n trackLongTasks: true,\n defaultPrivacyLevel: \"mask-user-input\",\n allowFallbackToLocalStorage: true,\n })\n\n return datadogRum\n } catch (error) {\n logger.error(\"Failed to initialize Datadog RUM:\", error)\n }\n}\n","/**\n * Reason codes for VWR loader initialization failures.\n * Each code maps to a specific failure point in the init flow.\n */\nexport const InitializationErrorReason = {\n // Environment variable errors\n ENV_VARS_MISSING: \"ENV_VARS_MISSING\",\n ENV_UNKNOWN: \"ENV_UNKNOWN\",\n\n // Device/platform errors\n DEVICE_ID_FAILED: \"DEVICE_ID_FAILED\",\n SHELL_VERSION_FAILED: \"SHELL_VERSION_FAILED\",\n\n // Feature flag errors\n FLAG_DISABLED: \"FLAG_DISABLED\",\n FLAG_FETCH_FAILED: \"FLAG_FETCH_FAILED\",\n\n // Runtime config errors\n CONFIG_FETCH_FAILED: \"CONFIG_FETCH_FAILED\",\n CONFIG_INVALID: \"CONFIG_INVALID\",\n\n // Module loading errors\n MODULE_FETCH_FAILED: \"MODULE_FETCH_FAILED\",\n MODULE_INVALID: \"MODULE_INVALID\",\n\n // VWR init errors\n INIT_FAILED: \"INIT_FAILED\",\n} as const\n\nexport type InitializationErrorReason =\n (typeof InitializationErrorReason)[keyof typeof InitializationErrorReason]\n\n/**\n * Context for initialization errors - used for structured logging\n * and Datadog dashboard creation.\n */\nexport interface InitializationErrorContext {\n cause?: Error\n [key: string]: unknown\n}\n\n/**\n * Custom error for VWR loader initialization failures.\n *\n * Provides structured information for:\n * - Error categorization (reason code)\n * - RUM phase tracking\n * - Datadog dashboard filtering\n * - Original error chain preservation\n *\n * @example\n * ```typescript\n * throw new InitializationError(\n * InitializationErrorReason.DEVICE_ID_FAILED,\n * `Failed to retrieve device ID for platform: ${platform}`,\n * {\n * phase: \"vwr-loader:device_id\",\n * platform,\n * }\n * );\n * ```\n */\nexport class InitializationError extends Error {\n public readonly name = \"InitializationError\"\n\n constructor(\n /** Structured reason code for categorization */\n public readonly reason: InitializationErrorReason,\n /** Human-readable error message */\n public readonly message: string,\n /** Context for logging and RUM tracking */\n public readonly context: InitializationErrorContext = {}\n ) {\n super(message)\n\n // Ensure proper prototype chain for instanceof checks\n Object.setPrototypeOf(this, InitializationError.prototype)\n }\n\n /**\n * Convert to a plain object for structured logging.\n * Useful for Datadog Logs and JSON serialization.\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n reason: this.reason,\n message: this.message,\n ...this.context,\n cause: this.context.cause?.message,\n stack: this.stack,\n }\n }\n\n /**\n * Get error context.\n * Returns the context object.\n */\n getContext(): Record<string, unknown> {\n return {\n ...this.context,\n reason: this.reason,\n }\n }\n}\n","export { ensureError } from \"./ensureError\"\nexport type { InitializationErrorContext } from \"./InitializationError\"\nexport {\n InitializationError,\n InitializationErrorReason,\n} from \"./InitializationError\"\n\n/**\n * Type guard for VWR initialization errors.\n * Checks error.name instead of instanceof to avoid runtime dependency on @volley/vwr.\n */\nexport function isVWRInitializationError(\n error: unknown\n): error is Error & { name: \"VWRInitializationError\"; reason: string } {\n return error instanceof Error && error.name === \"VWRInitializationError\"\n}\n","import { initDatadogLogs, logger, setLogger } from \"@volley/vwr/src/logger\"\n\ninitDatadogLogs({\n service: \"vwr-loader\",\n clientToken: import.meta.env.VITE_DATADOG_CLIENT_TOKEN,\n env: import.meta.env.VITE_ENVIRONMENT,\n version: import.meta.env.VITE_SHELL_VERSION,\n})\n\nexport { logger }\nexport { setLogger }\n","/**\n * Back button / exit handling for vwr-loader.\n *\n * This is a safety net for when VWR fails to load and user presses back.\n * When VWR loads successfully, it handles exit behavior itself.\n */\n\nimport { logger } from \"./logger\"\n\n/** LG webOS back button keycode */\nconst LG_BACK_KEYCODE = 461\n\n/** Android back button keycode (used by Fire TV InputHandler plugin) */\nconst ANDROID_BACK_KEYCODE = 4\n\n/**\n * Exit the app if the page was loaded via back/forward navigation.\n *\n * This is a safety net for Samsung/LG TVs: if VWR failed to load and user\n * pressed back, they'd land on the loader again. This detects that and exits.\n *\n * Note: On LG TV with disableBackHistoryAPI: true, this won't trigger\n * because the platform doesn't automatically navigate back. Use\n * setupLGBackButtonHandler() for LG back button support.\n */\nexport function exitIfBackNavigation(platform: Platform): void {\n try {\n const navEntries = performance.getEntriesByType(\"navigation\")\n const navEntry = navEntries[0] as\n | PerformanceNavigationTiming\n | undefined\n\n if (navEntry?.type === \"back_forward\") {\n logger.info(\n { platform, navigationType: navEntry.type },\n \"[Shell] Back navigation detected, exiting app\"\n )\n exitApp(platform)\n }\n } catch (error) {\n // Performance API may not be available on all platforms\n logger.warn({ error }, \"[Shell] Could not check navigation type\")\n }\n}\n\n/**\n * Set up LG back button (keycode 461) handler.\n *\n * On LG TV with disableBackHistoryAPI: true in appinfo.json, the platform\n * doesn't automatically handle the back button. This sets up a keydown\n * listener to call webOS.platformBack() which shows the system exit popup\n * on webOS 6.0+ or launches Home on older versions.\n *\n * Once VWR loads successfully, call the returned cleanup function - VWR/PSDK\n * will take over back button handling with its own custom modal.\n *\n * @returns Cleanup function to remove the listener\n */\nexport function setupLGBackButtonHandler(): () => void {\n const handleKeyDown = (event: KeyboardEvent): void => {\n if (event.keyCode === LG_BACK_KEYCODE) {\n logger.info(\n \"[Shell] LG back button pressed, triggering platform exit\"\n )\n\n if (window.webOS?.platformBack) {\n window.webOS.platformBack()\n } else {\n logger.warn(\n \"[Shell] webOS.platformBack not available, using window.close\"\n )\n window.close()\n }\n }\n }\n\n document.addEventListener(\"keydown\", handleKeyDown)\n logger.info(\"[Shell] LG back button handler registered\")\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown)\n logger.info(\"[Shell] LG back button handler removed\")\n }\n}\n\n/**\n * Set up Fire TV back button (keycode 4) handler.\n *\n * On Fire TV, the native shell intercepts the back button at the Activity\n * level and forwards it to JavaScript via the InputHandler Capacitor plugin.\n * During the vwr-loader loading phase, we subscribe directly to InputHandler\n * keyDown events and call Capacitor AppLifecycle.exitApp().\n *\n * Once VWR loads successfully, call the returned cleanup function - VWR\n * will take over back button handling.\n *\n * @returns Cleanup function to remove the listener\n */\nexport function setupFireTVBackButtonHandler(): () => void {\n const inputHandler = window.Capacitor?.Plugins?.InputHandler\n\n if (!inputHandler?.addListener) {\n logger.warn(\"[Shell] Capacitor InputHandler plugin not available\")\n return () => {\n logger.info(\"[Shell] Fire TV back button handler removed\")\n }\n }\n\n let listenerHandle: { remove: () => Promise<void> | void } | null = null\n let isCleanedUp = false\n\n const listenerRegistration = Promise.resolve(\n inputHandler.addListener(\"keyDown\", (event: { keyCode: number }) => {\n if (event.keyCode === ANDROID_BACK_KEYCODE) {\n logger.info(\"[Shell] Fire TV back button pressed, exiting app\")\n exitFireTVApp()\n }\n })\n )\n .then((handle: { remove: () => Promise<void> | void }) => {\n listenerHandle = handle\n\n if (isCleanedUp) {\n return Promise.resolve(handle.remove()).catch(\n (error: unknown) => {\n logger.error(\n { error },\n \"[Shell] Failed to remove Fire TV back button handler\"\n )\n }\n )\n }\n\n return undefined\n })\n .catch((error: unknown) => {\n logger.error(\n { error },\n \"[Shell] Failed to register Fire TV back button handler\"\n )\n })\n\n logger.info(\"[Shell] Fire TV back button handler registered\")\n\n return () => {\n isCleanedUp = true\n\n if (listenerHandle) {\n void Promise.resolve(listenerHandle.remove()).catch(\n (error: unknown) => {\n logger.error(\n { error },\n \"[Shell] Failed to remove Fire TV back button handler\"\n )\n }\n )\n listenerHandle = null\n } else {\n void listenerRegistration\n }\n\n logger.info(\"[Shell] Fire TV back button handler removed\")\n }\n}\n\n/**\n * Exit the app using platform-specific methods.\n *\n * @param platform - Platform identifier\n */\nfunction exitApp(platform: Platform): void {\n switch (platform) {\n case \"SAMSUNG_TV\":\n exitSamsungApp()\n break\n case \"LG_TV\":\n exitLGAppViaBackNavigation()\n break\n case \"FIRE_TV\":\n exitFireTVApp()\n break\n // Mobile apps handle exit at the native layer\n // Web doesn't have a meaningful \"exit\" concept\n default:\n logger.info({ platform }, \"[Shell] No platform-specific exit\")\n }\n}\n\nfunction exitSamsungApp(): void {\n try {\n if (window.tizen?.application?.getCurrentApplication) {\n window.tizen.application.getCurrentApplication().exit()\n } else {\n logger.warn(\"[Shell] Tizen exit API not available\")\n }\n } catch (error) {\n logger.error({ error }, \"[Shell] Failed to exit Samsung app\")\n }\n}\n\n/**\n * Exit LG app when back navigation is detected.\n * Uses window.close() for immediate exit since user already navigated back.\n */\nfunction exitLGAppViaBackNavigation(): void {\n try {\n window.close()\n } catch (error) {\n logger.error({ error }, \"[Shell] Failed to exit LG app\")\n }\n}\n\n/**\n * Exit Fire TV app via Capacitor AppLifecycle plugin.\n */\nfunction exitFireTVApp(): void {\n try {\n if (window.Capacitor?.Plugins?.AppLifecycle?.exitApp) {\n void window.Capacitor.Plugins.AppLifecycle.exitApp().catch(\n (error: unknown) => {\n logger.error(\n { error },\n \"[Shell] Failed to exit Fire TV app\"\n )\n }\n )\n } else {\n logger.warn(\"[Shell] Capacitor AppLifecycle plugin not available\")\n }\n } catch (error) {\n logger.error({ error }, \"[Shell] Failed to exit Fire TV app\")\n }\n}\n","import type { DatadogRum } from \"@datadog/browser-rum\"\nimport type * as VWR from \"@volley/vwr\"\nimport { ENV_DEFAULTS } from \"@volley/vwr/src/envDefaults\"\n\nimport { getDeviceId } from \"../../vwr/src/native/device-info/getDeviceId\"\nimport type {\n ConfigFetchAttempt,\n VWRConfig,\n VWRConfigRequest,\n VWRConfigResult,\n} from \"../../vwr/src/vwrConfig\"\nimport { getVWRConfig, validateConfig } from \"../../vwr/src/vwrConfig\"\nimport { fetchAmplitudeFlags, FlagFetchError } from \"./amplitudeFlagFetcher\"\nimport {\n InitializationError,\n InitializationErrorReason,\n isVWRInitializationError,\n} from \"./errors\"\nimport { getEnvironment } from \"./getEnvironment\"\nimport { getShellVersion } from \"./getShellVersion\"\nimport { logger, setLogger } from \"./logger\"\n\n// Vite injects these at build time\n// VITE_ENVIRONMENT is optional for platforms that support native env reading (Fire TV)\nconst BUILD_TIME_ENVIRONMENT = import.meta.env.VITE_ENVIRONMENT as\n | string\n | undefined\nconst PLATFORM = import.meta.env.VITE_PLATFORM\nconst CONFIG_URL = import.meta.env.VITE_CONFIG_URL\nconst CONFIG_FILE = import.meta.env.VITE_CONFIG_FILE\n\n// AMPLITUDE_KEY can be optionally injected at build time (via build.ts script)\n// Falls back to envDefaults if not injected (e.g., vite.config.dev.ts)\nconst AMPLITUDE_KEY = import.meta.env.VITE_AMPLITUDE_DEPLOYMENT_KEY\n\n/**\n * Load VWR runtime.\n *\n * Optimized flow: checks vwr-enabled flag FIRST using baked-in Amplitude key,\n * before doing any config fetches. For flag-OFF users (100% at initial launch),\n * this reduces startup latency from ~2-4s to ~500ms by skipping config fetches.\n *\n * Flow:\n * 1. Get deviceId, shellVersion, environment (fast, local/native)\n * 2. Check vwr-enabled flag (single request, ~500ms)\n * 3. If OFF → throw immediately (no config fetches)\n * 4. If ON → fetch config, load VWR module, initialize\n *\n * Environment resolution:\n * - Fire TV: reads from native BuildConfig.ENVIRONMENT (prevents env mismatch)\n * - Other platforms: uses build-time injected VITE_ENVIRONMENT\n * - Fallback: \"dev\"\n *\n * @param logger - Optional legacy logger, defaults to console\n * @param observability - Optional observability config with @volley/logger and RUM client\n */\nexport const loadVwr = async (rum?: DatadogRum) => {\n setLogger(\n logger.child({\n service: \"vwr-loader\",\n env: import.meta.env.VITE_ENVIRONMENT,\n platform: import.meta.env.VITE_PLATFORM,\n })\n )\n\n const totalStartTime = performance.now()\n\n try {\n await initializeVwr(rum)\n\n // Track successful VWR initialization\n rum?.addAction(\"vwr:init:complete\", {\n outcome: \"success\",\n duration_ms: performance.now() - totalStartTime,\n })\n } catch (error) {\n // Track failed VWR initialization\n rum?.addAction(\"vwr:init:complete\", {\n outcome: \"failure\",\n duration_ms: performance.now() - totalStartTime,\n })\n\n // Track fallback with structured reason\n let reason = \"UNKNOWN_ERROR\"\n if (error instanceof InitializationError) {\n reason = error.reason\n } else if (isVWRInitializationError(error)) {\n reason = error.reason\n }\n rum?.addAction(\"vwr:fallback\", {\n reason,\n error_type: error instanceof Error ? error.name : \"UnknownError\",\n })\n\n throw error\n }\n}\n\nasync function initializeVwr(rum: DatadogRum | undefined) {\n if (!PLATFORM || !CONFIG_URL || !CONFIG_FILE) {\n throw new InitializationError(\n InitializationErrorReason.ENV_VARS_MISSING,\n \"[Shell] Required environment variables not injected (PLATFORM, CONFIG_URL, or CONFIG_FILE)\",\n {\n configUrl: CONFIG_URL,\n configFile: CONFIG_FILE,\n }\n )\n }\n\n logger.info({ platform: PLATFORM }, \"Starting VWR load\")\n rum?.setGlobalContextProperty(\"platform\", PLATFORM)\n\n const deviceId = await getDeviceId(PLATFORM, logger)\n if (!deviceId) {\n throw new InitializationError(\n InitializationErrorReason.DEVICE_ID_FAILED,\n `[Shell] Failed to retrieve device ID for platform: ${PLATFORM}`\n )\n }\n\n // Set logger with deviceId context\n setLogger(logger.child({ deviceId }))\n\n const shellVersion = await getShellVersion(PLATFORM)\n\n if (!shellVersion) {\n throw new InitializationError(\n InitializationErrorReason.SHELL_VERSION_FAILED,\n `[Shell] Failed to retrieve shell version for platform: ${PLATFORM}`\n )\n }\n\n // Set logger with shellVersion context\n setLogger(logger.child({ shellVersion }))\n\n // Get environment from native (Fire TV) or build-time injection\n // This ensures prod APKs cannot accidentally run dev VWR\n const { environment: ENVIRONMENT } = await getEnvironment(\n PLATFORM,\n BUILD_TIME_ENVIRONMENT\n )\n\n // Get amplitude key: injected at build time OR from envDefaults\n // Precedence: build-time injection > envDefaults\n let amplitudeKey = AMPLITUDE_KEY\n if (!amplitudeKey) {\n const envDefaults = ENV_DEFAULTS[ENVIRONMENT]\n if (!envDefaults) {\n throw new InitializationError(\n InitializationErrorReason.ENV_UNKNOWN,\n `[Shell] Unknown environment: ${ENVIRONMENT}`\n )\n }\n amplitudeKey = envDefaults.amplitudeKey\n }\n\n // FAST PATH: Check flag first using amplitude key\n // This avoids config fetches for flag-OFF users (majority at launch)\n let flags\n try {\n flags = await fetchAmplitudeFlags(\n deviceId,\n PLATFORM,\n {\n apiKey: amplitudeKey,\n timeout: 2000,\n },\n shellVersion\n )\n } catch (error) {\n if (error instanceof FlagFetchError) {\n throw new InitializationError(\n InitializationErrorReason.FLAG_FETCH_FAILED,\n `[Shell] ${error.message}`,\n {\n cause: error.cause,\n }\n )\n }\n throw error\n }\n\n logger.debug({ flags }, \"Flags fetched\")\n\n // Set RUM context for flag result (enables filtering by flag outcome)\n rum?.setGlobalContextProperty(\n \"flag_result\",\n flags[\"vwr-enabled\"] ? \"enabled\" : \"disabled\"\n )\n\n if (!flags[\"vwr-enabled\"]) {\n // Flag OFF: skip all config fetches, fail fast\n throw new InitializationError(\n InitializationErrorReason.FLAG_DISABLED,\n \"[Shell] VWR not enabled via Amplitude flags\"\n )\n }\n\n // Flag ON: proceed with full config loading\n logger.debug(\"VWR flag enabled, fetching config\")\n\n const vwrConfigRequest: VWRConfigRequest = {\n configUrl: CONFIG_URL,\n configFile: CONFIG_FILE,\n platform: PLATFORM,\n deviceId: deviceId,\n environment: ENVIRONMENT,\n shellVersion: shellVersion,\n }\n\n let vwrConfig: VWRConfig\n let configSource: VWRConfigResult[\"source\"]\n let configAttempts: ConfigFetchAttempt[]\n let configTotalDurationMs: number\n try {\n const result = await getVWRConfig(vwrConfigRequest, logger)\n vwrConfig = result.config\n configSource = result.source\n configAttempts = result.attempts\n configTotalDurationMs = result.total_duration_ms\n\n // Set RUM context for config source (enables tracking config fallback rate)\n rum?.setGlobalContextProperty(\"config_source\", configSource)\n\n // Track per-source fetch attempts for detailed analysis\n for (const attempt of configAttempts) {\n rum?.addAction(\"vwr:config:fetch_attempt\", {\n source: attempt.source,\n success: attempt.success,\n duration_ms: attempt.duration_ms,\n })\n }\n\n // Track total config resolution (all sources fetched in parallel)\n rum?.addAction(\"vwr:config:resolved\", {\n source: configSource,\n total_duration_ms: configTotalDurationMs,\n })\n\n logger.debug(\n {\n source: configSource,\n total_duration_ms: configTotalDurationMs,\n attempts: configAttempts,\n },\n \"Config fetched\"\n )\n } catch (configError) {\n throw new InitializationError(\n InitializationErrorReason.CONFIG_FETCH_FAILED,\n configError instanceof Error\n ? configError.message\n : \"Config fetch failed\",\n {\n cause: configError instanceof Error ? configError : undefined,\n configUrl: CONFIG_URL,\n }\n )\n }\n\n if (!validateConfig(vwrConfig)) {\n throw new InitializationError(\n InitializationErrorReason.CONFIG_INVALID,\n \"[Shell] Invalid config (missing vwrUrl, hubUrl, or trustedDomains)\",\n {\n config: JSON.stringify(vwrConfig),\n }\n )\n }\n\n logger.debug({ vwrUrl: vwrConfig.vwrUrl }, \"Loading VWR module\")\n\n let vwr: typeof VWR\n try {\n vwr = (await import(/* @vite-ignore */ vwrConfig.vwrUrl)) as typeof VWR\n\n logger.debug(\"VWR module loaded successfully\")\n } catch (fetchError) {\n const err =\n fetchError instanceof Error\n ? fetchError\n : new Error(String(fetchError))\n\n throw new InitializationError(\n InitializationErrorReason.MODULE_FETCH_FAILED,\n `[Shell] Failed to fetch VWR module: ${err.message}`,\n {\n cause: err,\n vwrUrl: vwrConfig.vwrUrl,\n }\n )\n }\n\n if (typeof vwr.init !== \"function\") {\n throw new InitializationError(\n InitializationErrorReason.MODULE_INVALID,\n \"[Shell] VWR module missing init() function\",\n {\n vwrUrl: vwrConfig.vwrUrl,\n }\n )\n }\n\n // Build config source display string for VWR mode indicator\n let configSourceDisplay: string\n switch (configSource) {\n case \"device\":\n configSourceDisplay = `device (${deviceId})`\n break\n case \"environment\":\n configSourceDisplay = `environment (${ENVIRONMENT})`\n break\n case \"shellVersion\":\n configSourceDisplay = `shell-version (${ENVIRONMENT}/${PLATFORM}/${shellVersion})`\n break\n case \"local\":\n configSourceDisplay = \"local\"\n break\n default:\n configSourceDisplay = \"defaults\"\n break\n }\n\n try {\n await vwr.init(\n {\n hubUrl: vwrConfig.hubUrl,\n platform: PLATFORM,\n stage: ENVIRONMENT,\n appVersion: shellVersion,\n platformApiUrl: vwrConfig.platformApiUrl,\n platformAuthApiUrl: vwrConfig.platformAuthApiUrl,\n nativeShellVersion: shellVersion,\n configSource: configSourceDisplay,\n },\n logger,\n rum\n )\n } catch (vwrError) {\n // Re-throw InitializationErrors as-is (e.g., MODULE_INVALID)\n if (vwrError instanceof InitializationError) {\n throw vwrError\n }\n\n // Re-throw VWR errors directly - they already have structured info\n if (isVWRInitializationError(vwrError)) {\n throw vwrError\n }\n\n // Wrap other unknown errors as INIT_FAILED\n const errorMessage =\n vwrError instanceof Error ? vwrError.message : String(vwrError)\n\n throw new InitializationError(\n InitializationErrorReason.INIT_FAILED,\n `[Shell] VWR initialization failed: ${errorMessage}`,\n {\n cause: vwrError instanceof Error ? vwrError : undefined,\n }\n )\n }\n}\n","// Load polyfills FIRST before any other code\nimport \"./polyfills\"\n\nimport { initRumGlobal } from \"@volley/vwr/src/datadog\"\n\nimport { InitializationError, isVWRInitializationError } from \"./errors\"\nimport {\n exitIfBackNavigation,\n setupFireTVBackButtonHandler,\n setupLGBackButtonHandler,\n} from \"./exitHandler\"\nimport { loadVwr } from \"./loadVwr\"\nimport { logger } from \"./logger\"\n\nconst PLATFORM = import.meta.env.VITE_PLATFORM\nconst HUB_URL = import.meta.env.VITE_HUB_URL\nconst ENVIRONMENT = import.meta.env.VITE_ENVIRONMENT as string | undefined\nconst SHELL_VERSION = import.meta.env.VITE_SHELL_VERSION as string | undefined\n\n/**\n * Handle initialization errors with structured logging and RUM tracking.\n * Logger automatically sends errors to both Datadog Logs and RUM Error Tracking.\n */\nfunction handleInitializationError(error: unknown) {\n if (\n error instanceof InitializationError ||\n isVWRInitializationError(error)\n ) {\n logger.error(\n {\n context: (error as InitializationError).getContext(),\n error_type: error.name,\n error: error,\n },\n `[Shell] FALLBACK TO HUB - ${error.message}`\n )\n } else {\n // Unknown error - normalize to Error instance\n const normalizedError =\n error instanceof Error ? error : new Error(String(error))\n\n logger.error(\n {\n reason: normalizedError.message,\n error_type: normalizedError.name,\n error: normalizedError,\n },\n \"[Shell] FALLBACK TO HUB - Init failed (unknown error)\"\n )\n }\n}\n\nasync function init() {\n // Exit app if user pressed back - safety net for Samsung/LG TVs\n // when VWR fails to load and user navigates back to loader\n exitIfBackNavigation(PLATFORM)\n\n // Initialize Datadog RUM early (if credentials provided)\n // For mobile webviews with WebViewTracking.enable(), events are\n // automatically forwarded to the mobile app's RUM session\n logger.info(\"VWR loader starting init flow\")\n\n const rum = initRumGlobal({\n env: ENVIRONMENT ?? \"unknown\",\n version: SHELL_VERSION,\n service: \"vwr-loader\",\n })\n\n // Set up platform-specific back button handlers while loader is active.\n // On LG with disableBackHistoryAPI: true, the platform doesn't handle back automatically.\n // On Fire TV, the native shell forwards back button to JS via InputHandler plugin.\n // Once VWR loads, it will take over with PSDK's custom exit modal.\n let cleanupBackHandler: (() => void) | undefined\n if (PLATFORM === \"LG_TV\") {\n cleanupBackHandler = setupLGBackButtonHandler()\n } else if (PLATFORM === \"FIRE_TV\") {\n cleanupBackHandler = setupFireTVBackButtonHandler()\n }\n\n try {\n await loadVwr(rum)\n // VWR loaded successfully - remove our back handler, PSDK takes over\n cleanupBackHandler?.()\n } catch (error) {\n // Keep back handler active during fallback - it will handle exit\n // if user presses back on the Hub page and navigates back here\n try {\n handleInitializationError(error)\n } finally {\n // Fallback to gameControllerUrl if it exists\n // Otherwise fallback to HUB_URL with volley_platform param\n let fallbackUrl: URL\n const gameControllerUrl =\n new URLSearchParams(window.location.search)\n .get(\"gameControllerUrl\")\n ?.trim() || null\n\n if (gameControllerUrl) {\n fallbackUrl = new URL(gameControllerUrl)\n\n logger.info(\n {\n gameControllerUrl,\n },\n \"[Shell] Using gameControllerUrl as fallback\"\n )\n } else {\n fallbackUrl = new URL(HUB_URL)\n fallbackUrl.searchParams.set(\"volley_platform\", PLATFORM)\n fallbackUrl.searchParams.set(\n \"version\",\n SHELL_VERSION ?? \"unknown\"\n )\n\n logger.info(\n {\n PLATFORM,\n },\n \"[Shell] No gameControllerUrl, redirecting to Hub\"\n )\n }\n\n window.location.href = fallbackUrl.toString()\n }\n }\n}\n\ninit()\n"],"file":"main.js"}