Socket
Socket
Sign inDemoInstall

@datadog/browser-logs

Package Overview
Dependencies
Maintainers
1
Versions
256
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@datadog/browser-logs - npm Package Compare versions

Comparing version 4.18.1 to 4.19.0

2

bundle/datadog-logs.js

@@ -1,2 +0,2 @@

!function(){"use strict";var e={log:"log",debug:"debug",info:"info",warn:"warn",error:"error"},t=function(n){for(var r=[],o=1;o<arguments.length;o++)r[o-1]=arguments[o];Object.prototype.hasOwnProperty.call(e,n)||(n=e.log),t[n].apply(t,r)};function n(e,n){return function(){for(var r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];try{return e.apply(void 0,r)}catch(e){t.error(n,e)}}}t.debug=console.debug.bind(console),t.log=console.log.bind(console),t.info=console.info.bind(console),t.warn=console.warn.bind(console),t.error=console.error.bind(console);var r,o=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o<i;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))},i=!1;function s(e){i=e}function a(e,t,n){var o=n.value;n.value=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=r?c(o):o;return n.apply(this,e)}}function c(e){return function(){return u(e,this,arguments)}}function u(t,n,o){try{return t.apply(n,o)}catch(t){if(f(e.error,t),r)try{r(t)}catch(t){f(e.error,t)}}}function f(e){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];i&&t.apply(void 0,o([e,"[MONITOR]"],n,!1))}var l=1e3,d=6e4;function p(e,t,n){var r,o,i=!n||void 0===n.leading||n.leading,s=!n||void 0===n.trailing||n.trailing,a=!1;return{throttled:function(){for(var n=[],c=0;c<arguments.length;c++)n[c]=arguments[c];a?r=n:(i?e.apply(void 0,n):r=n,a=!0,o=setTimeout((function(){s&&r&&e.apply(void 0,r),a=!1,r=void 0}),t))},cancel:function(){clearTimeout(o),a=!1,r=void 0}}}function v(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.forEach((function(t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})),e}function h(e){return e?(parseInt(e,10)^16*Math.random()>>parseInt(e,10)/4).toString(16):"".concat(1e7,"-").concat(1e3,"-").concat(4e3,"-").concat(8e3,"-").concat(1e11).replace(/[018]/g,h)}function g(e){return 0!==e&&100*Math.random()<=e}function m(){}function y(e,t,n){if("object"!=typeof e||null===e)return JSON.stringify(e);var r=b(Object.prototype),o=b(Array.prototype),i=b(Object.getPrototypeOf(e)),s=b(e);try{return JSON.stringify(e,t,n)}catch(e){return"<error: unable to serialize object>"}finally{r(),o(),i(),s()}}function b(e){var t=e,n=t.toJSON;return n?(delete t.toJSON,function(){t.toJSON=n}):m}function w(e,t){return-1!==e.indexOf(t)}function x(e){if(Array.from)return Array.from(e);var t=[];if(e instanceof Set)e.forEach((function(e){return t.push(e)}));else for(var n=0;n<e.length;n++)t.push(e[n]);return t}function k(e){return function(e){return"number"==typeof e}(e)&&e>=0&&e<=100}function C(e){return Object.keys(e).map((function(t){return e[t]}))}function E(){if("object"==typeof globalThis)return globalThis;Object.defineProperty(Object.prototype,"_dd_temp_",{get:function(){return this},configurable:!0});var e=_dd_temp_;return delete Object.prototype._dd_temp_,"object"!=typeof e&&(e="object"==typeof self?self:"object"==typeof window?window:{}),e}function S(e,t,n){void 0===n&&(n="");var r=e.charCodeAt(t-1),o=r>=55296&&r<=56319?t+1:t;return e.length<=o?e:"".concat(e.slice(0,o)).concat(n)}function T(e,t,n,r){return L(e,[t],n,r)}function L(e,t,n,r){var o=void 0===r?{}:r,i=o.once,s=o.capture,a=o.passive,u=c(i?function(e){l(),n(e)}:n),f=a?{capture:s,passive:a}:s;t.forEach((function(t){return e.addEventListener(t,u,f)}));var l=function(){return t.forEach((function(t){return e.removeEventListener(t,u,f)}))};return{stop:l}}function O(e,t,n){if(void 0===n&&(n=function(){if("undefined"!=typeof WeakSet){var e=new WeakSet;return{hasAlreadyBeenSeen:function(t){var n=e.has(t);return n||e.add(t),n}}}var t=[];return{hasAlreadyBeenSeen:function(e){var n=t.indexOf(e)>=0;return n||t.push(e),n}}}()),void 0===t)return e;if("object"!=typeof t||null===t)return t;if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp){var r=t.flags||[t.global?"g":"",t.ignoreCase?"i":"",t.multiline?"m":"",t.sticky?"y":"",t.unicode?"u":""].join("");return new RegExp(t.source,r)}if(!n.hasAlreadyBeenSeen(t)){if(Array.isArray(t)){for(var o=Array.isArray(e)?e:[],i=0;i<t.length;++i)o[i]=O(o[i],t[i],n);return o}var s,a="object"==(null===(s=e)?"null":Array.isArray(s)?"array":typeof s)?e:{};for(var c in t)Object.prototype.hasOwnProperty.call(t,c)&&(a[c]=O(a[c],t[c],n));return a}}function R(e){return O(void 0,e)}function B(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];for(var r=0,o=t;r<o.length;r++){var i=o[r];null!=i&&(e=O(e,i))}return e}function _(){var e={};return{get:function(){return e},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},set:function(t){e=t},getContext:function(){return R(e)},setContext:function(t){e=R(t)},setContextProperty:function(t,n){e[t]=R(n)},removeContextProperty:function(t){delete e[t]},clearContext:function(){e={}}}}var I,A=function(){function e(){this.buffer=[]}return e.prototype.add=function(e){this.buffer.push(e)>500&&this.buffer.splice(0,1)},e.prototype.drain=function(){this.buffer.forEach((function(e){return e()})),this.buffer.length=0},e}();function j(){return(new Date).getTime()}function M(){return j()}function U(){return performance.now()}function D(){return{relative:U(),timeStamp:M()}}function P(e,t){return t-e}function N(){return void 0===I&&(I=performance.timing.navigationStart),I}function q(){var e=E().DatadogEventBridge;if(e)return{getAllowedWebViewHosts:function(){return JSON.parse(e.getAllowedWebViewHosts())},send:function(t,n){e.send(JSON.stringify({eventType:t,event:n}))}}}function F(e){var t;void 0===e&&(e=null===(t=E().location)||void 0===t?void 0:t.hostname);var n=q();return!!n&&n.getAllowedWebViewHosts().some((function(t){return e===t||(n=e,r=".".concat(t),n.slice(-r.length)===r);var n,r}))}var H,G,z;function V(e,t,n,r){var o=new Date;o.setTime(o.getTime()+n);var i="expires=".concat(o.toUTCString()),s=r&&r.crossSite?"none":"strict",a=r&&r.domain?";domain=".concat(r.domain):"",c=r&&r.secure?";secure":"";document.cookie="".concat(e,"=").concat(t,";").concat(i,";path=/;samesite=").concat(s).concat(a).concat(c)}function $(e){return function(e,t){var n=new RegExp("(?:^|;)\\s*".concat(t,"\\s*=\\s*([^;]+)")).exec(e);return n?n[1]:void 0}(document.cookie,e)}function J(e,t){V(e,"",0,t)}function W(){return G||new Set}function X(e){return Y(e,function(e){if(e.origin)return e.origin;var t=e.host.replace(/(:80|:443)$/,"");return"".concat(e.protocol,"//").concat(t)}(window.location)).href}function Y(e,t){if(function(){if(void 0!==z)return z;try{var e=new URL("http://test/path");return z="http://test/path"===e.href}catch(e){z=!1}return z}())return void 0!==t?new URL(e,t):new URL(e);if(void 0===t&&!/:/.test(e))throw new Error("Invalid URL: '".concat(e,"'"));var n=document,r=n.createElement("a");if(void 0!==t){var o=(n=document.implementation.createHTMLDocument("")).createElement("base");o.href=t,n.head.appendChild(o),n.body.appendChild(r)}return r.href=e,r}var K="datadoghq.com",Q={logs:"logs",rum:"rum",sessionReplay:"session-replay"},Z={logs:"logs",rum:"rum",sessionReplay:"replay"};function ee(e,t,n){var r=e.site,o=void 0===r?K:r,i=e.clientToken,s=o.split("."),a=s.pop(),c="".concat(Q[t],".browser-intake-").concat(s.join("-"),".").concat(a),u="https://".concat(c,"/api/v2/").concat(Z[t]),f=e.proxyUrl&&X(e.proxyUrl);return{build:function(){var e="ddsource=browser"+"&ddtags=".concat(encodeURIComponent(["sdk_version:".concat("4.18.1")].concat(n).join(",")))+"&dd-api-key=".concat(i)+"&dd-evp-origin-version=".concat(encodeURIComponent("4.18.1"))+"&dd-evp-origin=browser"+"&dd-request-id=".concat(h());"rum"===t&&(e+="&batch_time=".concat(M()));var r="".concat(u,"?").concat(e);return f?"".concat(f,"?ddforward=").concat(encodeURIComponent(r)):r},buildIntakeUrl:function(){return f?"".concat(f,"?ddforward"):u},endpointType:t}}var te=/[^a-z0-9_:./-]/;function ne(e,n){var r=200-e.length-1;(n.length>r||te.test(n))&&t.warn("".concat(e," value doesn't meet tag requirements and will be sanitized"));var o=n.replace(/,/g,"_");return"".concat(e,":").concat(o)}function re(e){var t=function(e){var t=e.env,n=e.service,r=e.version,o=e.datacenter,i=[];return t&&i.push(ne("env",t)),n&&i.push(ne("service",n)),r&&i.push(ne("version",r)),o&&i.push(ne("datacenter",o)),i}(e),n=function(e,t){return{logsEndpointBuilder:ee(e,"logs",t),rumEndpointBuilder:ee(e,"rum",t),sessionReplayEndpointBuilder:ee(e,"sessionReplay",t)}}(e,t),r=C(n).map((function(e){return e.buildIntakeUrl()})),o=function(e,t,n){if(!e.replica)return;var r=v({},e,{site:K,clientToken:e.replica.clientToken}),o={logsEndpointBuilder:ee(r,"logs",n),rumEndpointBuilder:ee(r,"rum",n)};return t.push.apply(t,C(o).map((function(e){return e.buildIntakeUrl()}))),v({applicationId:e.replica.applicationId},o)}(e,r,t);return v({isIntakeUrl:function(e){return r.some((function(t){return 0===e.indexOf(t)}))},replica:o,site:e.site||K},n)}function oe(e){var r,o;if(e&&e.clientToken)if(void 0===e.sampleRate||k(e.sampleRate)){var i;if(void 0===e.telemetrySampleRate||k(e.telemetrySampleRate))return i=e.enableExperimentalFeatures,Array.isArray(i)&&(G||(G=new Set(i)),i.filter((function(e){return"string"==typeof e})).forEach((function(e){w(e,"-")&&t.warn("please use snake case for '".concat(e,"'")),G.add(e)}))),v({beforeSend:e.beforeSend&&n(e.beforeSend,"beforeSend threw an error:"),cookieOptions:ie(e),sampleRate:null!==(r=e.sampleRate)&&void 0!==r?r:100,telemetrySampleRate:null!==(o=e.telemetrySampleRate)&&void 0!==o?o:20,service:e.service,silentMultipleInit:!!e.silentMultipleInit,batchBytesLimit:16384,eventRateLimiterThreshold:3e3,maxTelemetryEventsPerPage:15,flushTimeout:3e4,batchMessagesLimit:50,messageBytesLimit:262144},re(e));t.error("Telemetry Sample Rate should be a number between 0 and 100")}else t.error("Sample Rate should be a number between 0 and 100");else t.error("Client Token is not configured, we will not send any data.")}function ie(e){var t={};return t.secure=function(e){return!!e.useSecureSessionCookie||!!e.useCrossSiteSessionCookie}(e),t.crossSite=!!e.useCrossSiteSessionCookie,e.trackSessionAcrossSubdomains&&(t.domain=function(){if(void 0===H){for(var e="dd_site_test_".concat(h()),t=window.location.hostname.split("."),n=t.pop();t.length&&!$(e);)n="".concat(t.pop(),".").concat(n),V(e,"test",l,{domain:n});J(e,{domain:n}),H=n}return H}()),t}var se="?";function ae(e){var t=[],n=ge(e,"stack");return n&&n.split("\n").forEach((function(e){var n=function(e){var t=fe.exec(e);if(!t)return;var n=t[2]&&0===t[2].indexOf("native"),r=t[2]&&0===t[2].indexOf("eval"),o=le.exec(t[2]);r&&o&&(t[2]=o[1],t[3]=o[2],t[4]=o[3]);return{args:n?[t[2]]:[],column:t[4]?+t[4]:void 0,func:t[1]||se,line:t[3]?+t[3]:void 0,url:n?void 0:t[2]}}(e)||function(e){var t=de.exec(e);if(!t)return;return{args:[],column:t[3]?+t[3]:void 0,func:se,line:t[2]?+t[2]:void 0,url:t[1]}}(e)||function(e){var t=pe.exec(e);if(!t)return;return{args:[],column:t[4]?+t[4]:void 0,func:t[1]||se,line:+t[3],url:t[2]}}(e)||function(e){var t=ve.exec(e);if(!t)return;var n=t[3]&&t[3].indexOf(" > eval")>-1,r=he.exec(t[3]);n&&r&&(t[3]=r[1],t[4]=r[2],t[5]=void 0);return{args:t[2]?t[2].split(","):[],column:t[5]?+t[5]:void 0,func:t[1]||se,line:t[4]?+t[4]:void 0,url:t[3]}}(e);n&&(!n.func&&n.line&&(n.func=se),t.push(n))})),{message:ge(e,"message"),name:ge(e,"name"),stack:t}}var ce="((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\w+\\.|\\/).*?)",ue="(?::(\\d+))",fe=new RegExp("^\\s*at (.*?) ?\\(".concat(ce).concat(ue,"?").concat(ue,"?\\)?\\s*$"),"i"),le=new RegExp("\\((\\S*)".concat(ue).concat(ue,"\\)"));var de=new RegExp("^\\s*at ?".concat(ce).concat(ue,"?").concat(ue,"??\\s*$"),"i");var pe=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;var ve=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,he=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;function ge(e,t){if("object"==typeof e&&e&&t in e){var n=e[t];return"string"==typeof n?n:void 0}}var me="agent",ye="console",be="logger",we="network",xe="source",ke="report";function Ce(e){var t=Ee(e);return e.stack.forEach((function(e){var n="?"===e.func?"<anonymous>":e.func,r=e.args&&e.args.length>0?"(".concat(e.args.join(", "),")"):"",o=e.line?":".concat(e.line):"",i=e.line&&e.column?":".concat(e.column):"";t+="\n at ".concat(n).concat(r," @ ").concat(e.url).concat(o).concat(i)})),t}function Ee(e){return"".concat(e.name||"Error",": ").concat(e.message)}function Se(){var e,t=new Error;if(!t.stack)try{throw t}catch(e){}return u((function(){var n=ae(t);n.stack=n.stack.slice(2),e=Ce(n)})),e}var Te=function(){function e(e){this.onFirstSubscribe=e,this.observers=[]}return e.prototype.subscribe=function(e){var t=this;return!this.observers.length&&this.onFirstSubscribe&&(this.onLastUnsubscribe=this.onFirstSubscribe()||void 0),this.observers.push(e),{unsubscribe:function(){t.observers=t.observers.filter((function(t){return e!==t})),!t.observers.length&&t.onLastUnsubscribe&&t.onLastUnsubscribe()}}},e.prototype.notify=function(e){this.observers.forEach((function(t){return t(e)}))},e}();function Le(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=new Te((function(){var t=e.map((function(e){return e.subscribe((function(e){return n.notify(e)}))}));return function(){return t.forEach((function(e){return e.unsubscribe()}))}}));return n}var Oe={intervention:"intervention",deprecation:"deprecation",cspViolation:"csp_violation"};function Re(e){var t,n=[];w(e,Oe.cspViolation)&&n.push(t=new Te((function(){var e=c((function(e){t.notify(function(e){var t=Oe.cspViolation,n="'".concat(e.blockedURI,"' blocked by '").concat(e.effectiveDirective,"' directive");return{type:Oe.cspViolation,subtype:e.effectiveDirective,message:"".concat(t,": ").concat(n),stack:Be(e.effectiveDirective,"".concat(n,' of the policy "').concat(S(e.originalPolicy,100,"..."),'"'),e.sourceFile,e.lineNumber,e.columnNumber)}}(e))}));return T(document,"securitypolicyviolation",e).stop})));var r=e.filter((function(e){return e!==Oe.cspViolation}));return r.length&&n.push(function(e){var t=new Te((function(){if(window.ReportingObserver){var n=c((function(e){return e.forEach((function(e){t.notify(function(e){var t=e.type,n=e.body;return{type:t,subtype:n.id,message:"".concat(t,": ").concat(n.message),stack:Be(n.id,n.message,n.sourceFile,n.lineNumber,n.columnNumber)}}(e))}))})),r=new window.ReportingObserver(n,{types:e,buffered:!0});return r.observe(),function(){r.disconnect()}}}));return t}(r)),Le.apply(void 0,n)}function Be(e,t,n,r,o){return n&&Ce({name:e,message:t,stack:[{func:"?",url:n,line:r,column:o}]})}function _e(e,n,r){return void 0===e?[]:"all"===e||Array.isArray(e)&&e.every((function(e){return w(n,e)}))?"all"===e?n:(o=e,i=new Set,o.forEach((function(e){return i.add(e)})),x(i)):void t.error("".concat(r,' should be "all" or an array with allowed values "').concat(n.join('", "'),'"'));var o,i}var Ie=function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Ae={debug:"debug",error:"error",info:"info",warn:"warn"},je="console",Me="http",Ue=Object.keys(Ae),De=function(){function e(e,t,n,r,o){void 0===n&&(n=Me),void 0===r&&(r=Ae.debug),void 0===o&&(o={}),this.handleLogStrategy=e,this.handlerType=n,this.level=r,this.contextManager=_(),this.contextManager.set(v({},o,t?{logger:{name:t}}:void 0))}return e.prototype.log=function(e,t,n){void 0===n&&(n=Ae.info),this.handleLogStrategy({message:e,context:R(t),status:n},this)},e.prototype.debug=function(e,t){this.log(e,t,Ae.debug)},e.prototype.info=function(e,t){this.log(e,t,Ae.info)},e.prototype.warn=function(e,t){this.log(e,t,Ae.warn)},e.prototype.error=function(e,t){var n={error:{origin:be}};this.log(e,B(n,t),Ae.error)},e.prototype.setContext=function(e){this.contextManager.set(e)},e.prototype.getContext=function(){return this.contextManager.get()},e.prototype.addContext=function(e,t){this.contextManager.add(e,t)},e.prototype.removeContext=function(e){this.contextManager.remove(e)},e.prototype.setHandler=function(e){this.handlerType=e},e.prototype.getHandler=function(){return this.handlerType},e.prototype.setLevel=function(e){this.level=e},e.prototype.getLevel=function(){return this.level},Ie([a],e.prototype,"log",null),e}();function Pe(){return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM||$("datadog-synthetics-injects-rum"))}function Ne(){var e=window._DATADOG_SYNTHETICS_RESULT_ID||$("datadog-synthetics-result-id");return"string"==typeof e?e:void 0}var qe,Fe=["https://www.datadoghq-browser-agent.com","https://www.datad0g-browser-agent.com","http://localhost","<anonymous>"],He=["ddog-gov.com"],Ge={maxEventsPerPage:0,sentEventCount:0,telemetryEnabled:!1};function ze(e){var t,n=new Te;return Ge.telemetryEnabled=g(e.telemetrySampleRate),qe=function(r){!w(He,e.site)&&Ge.telemetryEnabled&&n.notify(function(e){return B({type:"telemetry",date:M(),service:"browser-sdk",version:"4.18.1",source:"browser",_dd:{format_version:2},telemetry:e,experimental_features:x(W())},void 0!==t?t():{})}(r))},r=Ve,v(Ge,{maxEventsPerPage:e.maxTelemetryEventsPerPage,sentEventCount:0}),{setContextProvider:function(e){t=e},observable:n}}function Ve(e){$e(v({status:"error"},function(e){if(e instanceof Error){var t=ae(e);return{error:{kind:t.name,stack:Ce(Je(t))},message:t.message}}return{error:{stack:"Not an instance of error"},message:"Uncaught ".concat(y(e))}}(e)))}function $e(e){qe&&Ge.sentEventCount<Ge.maxEventsPerPage&&(Ge.sentEventCount+=1,qe(e))}function Je(e){return e.stack=e.stack.filter((function(e){return!e.url||Fe.some((function(t){return n=e.url,r=t,n.slice(0,r.length)===r;var n,r}))})),e}var We=/[^\u0000-\u007F]/,Xe=function(){function e(e,t,n,r,o,i){void 0===i&&(i=m),this.request=e,this.batchMessagesLimit=t,this.batchBytesLimit=n,this.messageBytesLimit=r,this.flushTimeout=o,this.beforeUnloadCallback=i,this.pushOnlyBuffer=[],this.upsertBuffer={},this.bufferBytesCount=0,this.bufferMessagesCount=0,this.setupFlushOnExit(),this.flushPeriodically()}return e.prototype.add=function(e){this.addOrUpdate(e)},e.prototype.upsert=function(e,t){this.addOrUpdate(e,t)},e.prototype.flush=function(e){if(void 0===e&&(e=this.request.send),0!==this.bufferMessagesCount){var t=this.pushOnlyBuffer.concat(C(this.upsertBuffer)),n=this.bufferBytesCount;this.pushOnlyBuffer=[],this.upsertBuffer={},this.bufferBytesCount=0,this.bufferMessagesCount=0,e(t.join("\n"),n)}},e.prototype.flushOnExit=function(){this.flush(this.request.sendOnExit)},e.prototype.computeBytesCount=function(e){return We.test(e)?void 0!==window.TextEncoder?(new TextEncoder).encode(e).length:new Blob([e]).size:e.length},e.prototype.addOrUpdate=function(e,n){var r=this.process(e),o=r.processedMessage,i=r.messageBytesCount;i>=this.messageBytesLimit?t.warn("Discarded a message whose size was bigger than the maximum allowed size ".concat(this.messageBytesLimit,"KB.")):(this.hasMessageFor(n)&&this.remove(n),this.willReachedBytesLimitWith(i)&&this.flush(),this.push(o,i,n),this.isFull()&&this.flush())},e.prototype.process=function(e){var t=y(e);return{processedMessage:t,messageBytesCount:this.computeBytesCount(t)}},e.prototype.push=function(e,t,n){this.bufferMessagesCount>0&&(this.bufferBytesCount+=1),void 0!==n?this.upsertBuffer[n]=e:this.pushOnlyBuffer.push(e),this.bufferBytesCount+=t,this.bufferMessagesCount+=1},e.prototype.remove=function(e){var t=this.upsertBuffer[e];delete this.upsertBuffer[e];var n=this.computeBytesCount(t);this.bufferBytesCount-=n,this.bufferMessagesCount-=1,this.bufferMessagesCount>0&&(this.bufferBytesCount-=1)},e.prototype.hasMessageFor=function(e){return void 0!==e&&void 0!==this.upsertBuffer[e]},e.prototype.willReachedBytesLimitWith=function(e){return this.bufferBytesCount+e+1>=this.batchBytesLimit},e.prototype.isFull=function(){return this.bufferMessagesCount===this.batchMessagesLimit||this.bufferBytesCount>=this.batchBytesLimit},e.prototype.flushPeriodically=function(){var e=this;setTimeout(c((function(){e.flush(),e.flushPeriodically()})),this.flushTimeout)},e.prototype.setupFlushOnExit=function(){var e=this;navigator.sendBeacon&&(T(window,"beforeunload",this.beforeUnloadCallback),T(document,"visibilitychange",(function(){"hidden"===document.visibilityState&&e.flushOnExit()})),T(window,"beforeunload",(function(){return e.flushOnExit()})))},e}();function Ye(e,t){function n(n,o){var i=e.build();(function(){try{return window.Request&&"keepalive"in new Request("http://a")}catch(e){return!1}})()&&o<t?fetch(i,{method:"POST",body:n,keepalive:!0}).catch(c((function(){r(i,n)}))):r(i,n)}function r(e,t){var n=new XMLHttpRequest;n.open("POST",e,!0),n.send(t)}return{send:function(e,t){n(e,t)},sendOnExit:function(n,o){var i=e.build();if(!!navigator.sendBeacon&&o<t)try{if(navigator.sendBeacon(i,n))return}catch(e){!function(e){Ke||(Ke=!0,Ve(e))}(e)}r(i,n)}}}var Ke=!1;function Qe(e,t,n){var r,o=i(t);function i(t){return new Xe(Ye(t,e.batchBytesLimit),e.batchMessagesLimit,e.batchBytesLimit,e.messageBytesLimit,e.flushTimeout)}return n&&(r=i(n)),{add:function(e,t){void 0===t&&(t=!0),o.add(e),r&&t&&r.add(e)}}}var Ze=1/0,et=function(){function e(e){var t=this;this.expireDelay=e,this.entries=[],this.clearOldContextsInterval=setInterval((function(){return t.clearOldContexts()}),6e4)}return e.prototype.add=function(e,t){var n=this,r={context:e,startTime:t,endTime:Ze,remove:function(){var e=n.entries.indexOf(r);e>=0&&n.entries.splice(e,1)},close:function(e){r.endTime=e}};return this.entries.unshift(r),r},e.prototype.find=function(e){void 0===e&&(e=Ze);for(var t=0,n=this.entries;t<n.length;t++){var r=n[t];if(r.startTime<=e){if(e<=r.endTime)return r.context;break}}},e.prototype.closeActive=function(e){var t=this.entries[0];t&&t.endTime===Ze&&t.close(e)},e.prototype.findAll=function(e){return void 0===e&&(e=Ze),this.entries.filter((function(t){return t.startTime<=e&&e<=t.endTime})).map((function(e){return e.context}))},e.prototype.reset=function(){this.entries=[]},e.prototype.stop=function(){clearInterval(this.clearOldContextsInterval)},e.prototype.clearOldContexts=function(){for(var e=U()-this.expireDelay;this.entries.length>0&&this.entries[this.entries.length-1].endTime<e;)this.entries.pop()},e}();var tt,nt=144e5,rt=9e5,ot=/^([a-z]+)=([a-z0-9-]+)$/,it="&",st="_dd_s",at=[];function ct(e,t){var n;if(void 0===t&&(t=0),tt||(tt=e),e===tt)if(t>=100)lt();else{var r,o=vt();if(ut()){if(o.lock)return void ft(e,t);if(r=h(),o.lock=r,pt(o,e.options),(o=vt()).lock!==r)return void ft(e,t)}var i=e.process(o);if(ut()&&(o=vt()).lock!==r)ft(e,t);else{if(i&&dt(i,e.options),ut()&&(!i||!ht(i))){if((o=vt()).lock!==r)return void ft(e,t);delete o.lock,pt(o,e.options),i=o}null===(n=e.after)||void 0===n||n.call(e,i||o),lt()}}else at.push(e)}function ut(){return!!window.chrome||/HeadlessChrome/.test(window.navigator.userAgent)}function ft(e,t){setTimeout(c((function(){ct(e,t+1)})),10)}function lt(){tt=void 0;var e=at.shift();e&&ct(e)}function dt(e,t){ht(e)?function(e){V(st,"",0,e)}(t):(e.expire=String(j()+rt),pt(e,t))}function pt(e,t){V(st,function(e){return(t=e,Object.keys(t).map((function(e){return[e,t[e]]}))).map((function(e){var t=e[0],n=e[1];return"".concat(t,"=").concat(n)})).join(it);var t}(e),rt,t)}function vt(){var e=$(st),t={};return function(e){return void 0!==e&&(-1!==e.indexOf(it)||ot.test(e))}(e)&&e.split(it).forEach((function(e){var n=ot.exec(e);if(null!==n){var r=n[1],o=n[2];t[r]=o}})),t}function ht(e){return t=e,0===Object.keys(t).length;var t}function gt(e,t,n){var r=new Te,o=new Te,i=setInterval(c((function(){ct({options:e,process:function(e){return f(e)?void 0:{}},after:a})})),1e3),s=function(){var e=vt();if(f(e))return e;return{}}();function a(e){return f(e)||(e={}),u()&&(!function(e){return s.id!==e.id||s[t]!==e[t]}(e)?s=e:(s={},o.notify())),e}function u(){return void 0!==s[t]}function f(e){return(void 0===e.created||j()-Number(e.created)<nt)&&(void 0===e.expire||j()<Number(e.expire))}return{expandOrRenewSession:p(c((function(){var o;ct({options:e,process:function(e){var r=a(e);return o=function(e){var r=n(e[t]),o=r.trackingType,i=r.isTracked;e[t]=o,i&&!e.id&&(e.id=h(),e.created=String(j()));return i}(r),r},after:function(e){o&&!u()&&function(e){s=e,r.notify()}(e),s=e}})})),1e3).throttled,expandSession:function(){ct({options:e,process:function(e){return u()?a(e):void 0}})},getSession:function(){return s},renewObservable:r,expireObservable:o,stop:function(){clearInterval(i)}}}var mt=[];function yt(e,t,n){!function(e){var t=$(st),n=$("_dd"),r=$("_dd_r"),o=$("_dd_l");if(!t){var i={};n&&(i.id=n),o&&/^[01]$/.test(o)&&(i.logs=o),r&&/^[012]$/.test(r)&&(i.rum=r),dt(i,e)}}(e);var r=gt(e,t,n);mt.push((function(){return r.stop()}));var o,i=new et(144e5);function s(){return{id:r.getSession().id,trackingType:r.getSession()[t]}}return mt.push((function(){return i.stop()})),r.renewObservable.subscribe((function(){i.add(s(),U())})),r.expireObservable.subscribe((function(){i.closeActive(U())})),r.expandOrRenewSession(),i.add(s(),[0,N()][0]),o=L(window,["click","touchstart","keydown","scroll"],(function(){return r.expandOrRenewSession()}),{capture:!0,passive:!0}).stop,mt.push(o),function(e){var t=c((function(){"visible"===document.visibilityState&&e()})),n=T(document,"visibilitychange",t).stop;mt.push(n);var r=setInterval(t,6e4);mt.push((function(){clearInterval(r)}))}((function(){return r.expandSession()})),{findActiveSession:function(e){return i.find(e)},renewObservable:r.renewObservable,expireObservable:r.expireObservable}}var bt;function wt(e){var t=yt(e.cookieOptions,"logs",(function(t){return function(e,t){var n=function(e){return"0"===e||"1"===e}(t)?t:xt(e);return{trackingType:n,isTracked:"1"===n}}(e,t)}));return{findTrackedSession:function(e){var n=t.findActiveSession(e);return n&&"1"===n.trackingType?{id:n.id}:void 0}}}function xt(e){return g(e.sampleRate)?"1":"0"}var kt=((bt={})[Ae.debug]=0,bt[Ae.info]=1,bt[Ae.warn]=2,bt[Ae.error]=3,bt);function Ct(e,t,n){var r=n.getHandler(),o=Array.isArray(r)?r:[r];return kt[e]>=kt[n.getLevel()]&&w(o,t)}function Et(e,t,n,r,o){var i=Ue.concat(["custom"]),s={};i.forEach((function(e){var r,o,i,a,c;s[e]=(r=e,o=t.eventRateLimiterThreshold,i=function(e){return function(e,t){t.notify(0,{rawLogsEvent:{message:e.message,date:e.startClocks.timeStamp,error:{origin:me},origin:me,status:Ae.error}})}(e,n)},a=0,c=!1,{isLimitReached:function(){if(0===a&&setTimeout((function(){a=0}),d),(a+=1)<=o||c)return c=!1,!1;if(a===o+1){c=!0;try{i({message:"Reached max number of ".concat(r,"s by minute: ").concat(o),source:me,startClocks:D()})}finally{c=!1}}return!0}})})),n.subscribe(0,(function(i){var a,c,u,f=i.rawLogsEvent,l=i.messageContext,d=void 0===l?void 0:l,p=i.savedCommonContext,v=void 0===p?void 0:p,h=i.logger,g=void 0===h?o:h,m=f.date-N(),y=e.findTrackedSession(m);if(y){var b=v||r(),w=B({service:t.service,session_id:y.id,view:b.view},b.context,Tt(m),f,g.getContext(),d);!Ct(f.status,Me,g)||!1===(null===(a=t.beforeSend)||void 0===a?void 0:a.call(t,w))||(null===(c=w.error)||void 0===c?void 0:c.origin)!==me&&(null!==(u=s[w.status])&&void 0!==u?u:s.custom).isLimitReached()||n.notify(1,w)}}))}var St=!1;function Tt(t){var n,r=window;if(Pe()){var o=i(r.DD_RUM_SYNTHETICS);return o||St||(St=!0,function(t,n){f(e.debug,t,n),$e(v({message:t,status:"debug"},n))}("Logs sent before RUM is injected by the synthetics worker",{testId:(n=window._DATADOG_SYNTHETICS_PUBLIC_ID||$("datadog-synthetics-public-id"),"string"==typeof n?n:void 0),resultId:Ne()})),o}return i(r.DD_RUM);function i(e){if(e&&e.getInternalContext)return e.getInternalContext(t)}}var Lt,Ot={};function Rt(e){var t=e.map((function(e){return Ot[e]||(Ot[e]=function(e){var t=new Te((function(){var n=console[e];return console[e]=function(){for(var r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];n.apply(console,r);var i=Se();u((function(){t.notify(Bt(r,e,i))}))},function(){console[e]=n}}));return t}(e)),Ot[e]}));return Le.apply(void 0,t)}function Bt(t,n,r){var o,i=t.map((function(e){return function(e){if("string"==typeof e)return e;if(e instanceof Error)return Ee(ae(e));return y(e,void 0,2)}(e)})).join(" ");if(n===e.error){var s=function(e,t){for(var n=0;n<e.length;n+=1){var r=e[n];if(t(r,n))return r}}(t,(function(e){return e instanceof Error}));o=s?Ce(ae(s)):void 0,i="console error: ".concat(i)}return{api:n,message:i,stack:o,handlingStack:r}}var _t,It=((Lt={})[e.log]=Ae.info,Lt[e.debug]=Ae.debug,Lt[e.info]=Ae.info,Lt[e.warn]=Ae.warn,Lt[e.error]=Ae.error,Lt);var At,jt=((_t={})[Oe.cspViolation]=Ae.error,_t[Oe.intervention]=Ae.error,_t[Oe.deprecation]=Ae.warn,_t);function Mt(e,t,n){var r=e[t],o=n(r),i=function(){if("function"==typeof o)return o.apply(this,arguments)};return e[t]=i,{stop:function(){e[t]===i?e[t]=r:o=r}}}function Ut(e,t,n){var r=n.before,o=n.after;return Mt(e,t,(function(e){return function(){var t,n=arguments;return r&&u(r,this,n),"function"==typeof e&&(t=e.apply(this,n)),o&&u(o,this,n),t}}))}var Dt,Pt=new WeakMap;function Nt(){var e;return At||(e=new Te((function(){var t=Ut(XMLHttpRequest.prototype,"open",{before:qt}).stop,n=Ut(XMLHttpRequest.prototype,"send",{before:function(){Ft.call(this,e)}}).stop,r=Ut(XMLHttpRequest.prototype,"abort",{before:Ht}).stop;return function(){t(),n(),r()}})),At=e),At}function qt(e,t){Pt.set(this,{state:"open",method:e,url:X(String(t))})}function Ft(e){var t=this,n=Pt.get(this);if(n){var r=n;r.state="start",r.startTime=U(),r.startClocks=D(),r.isAborted=!1,r.xhr=this;var o=!1,i=Ut(this,"onreadystatechange",{before:function(){this.readyState===XMLHttpRequest.DONE&&s()}}).stop,s=c((function(){if(t.removeEventListener("loadend",s),i(),!o){o=!0;var a=n;a.state="complete",a.duration=P(r.startClocks.timeStamp,M()),a.status=t.status,e.notify(v({},a))}}));this.addEventListener("loadend",s),e.notify(r)}}function Ht(){var e=Pt.get(this);e&&(e.isAborted=!0)}function Gt(){var e;return Dt||(e=new Te((function(){if(window.fetch)return Mt(window,"fetch",(function(t){return function(n,r){var o,i=u(zt,null,[e,n,r]);return i?(o=t.call(this,i.input,i.init),u(Vt,null,[e,o,i])):o=t.call(this,n,r),o}})).stop})),Dt=e),Dt}function zt(e,t,n){var r=n&&n.method||"object"==typeof t&&t.method||"GET",o=X("object"==typeof t&&t.url||t),i={state:"start",init:n,input:t,method:r,startClocks:D(),url:o};return e.notify(i),i}function Vt(e,t,n){var r=function(t){var r=n;r.state="complete",r.duration=P(r.startClocks.timeStamp,M()),"stack"in t||t instanceof Error?(r.status=0,r.isAborted=t instanceof DOMException&&t.code===DOMException.ABORT_ERR,r.error=t,e.notify(r)):"status"in t&&(r.response=t,r.responseType=t.type,r.status=t.status,r.isAborted=!1,e.notify(r))};t.then(c(r),c(r))}function $t(e,t){if(!e.forwardErrorsToLogs)return{stop:m};var n=Nt().subscribe((function(e){"complete"===e.state&&o("xhr",e)})),r=Gt().subscribe((function(e){"complete"===e.state&&o("fetch",e)}));function o(n,r){function o(e){t.notify(0,{rawLogsEvent:{message:"".concat(Wt(n)," error ").concat(r.method," ").concat(r.url),date:r.startClocks.timeStamp,error:{origin:we,stack:e||"Failed to load"},http:{method:r.method,status_code:r.status,url:r.url},status:Ae.error,origin:we}})}e.isIntakeUrl(r.url)||!function(e){return 0===e.status&&"opaque"!==e.responseType}(r)&&!function(e){return e.status>=500}(r)||("xhr"in r?function(e,t,n){"string"==typeof e.response?n(Jt(e.response,t)):n(e.response)}(r.xhr,e,o):r.response?function(e,t,n){window.TextDecoder?e.body?function(e,t,n){!function(e,t,n){var r=e.getReader(),o=[],i=0;function s(){r.read().then(c((function(e){e.done?a():(o.push(e.value),(i+=e.value.length)>t?a():s())})),c((function(e){return n(e)})))}function a(){var e;if(r.cancel().catch(m),1===o.length)e=o[0];else{e=new Uint8Array(i);var s=0;o.forEach((function(t){e.set(t,s),s+=t.length}))}n(void 0,e.slice(0,t),e.length>t)}s()}(e,t,(function(e,t,r){if(e)n(e);else{var o=(new TextDecoder).decode(t);r&&(o+="..."),n(void 0,o)}}))}(e.clone().body,t.requestErrorResponseLengthLimit,(function(e,t){n(e?"Unable to retrieve response: ".concat(e):t)})):n():e.clone().text().then(c((function(e){return n(Jt(e,t))})),c((function(e){return n("Unable to retrieve response: ".concat(e))})))}(r.response,e,o):r.error&&function(e,t,n){n(Jt(Ce(ae(e)),t))}(r.error,e,o))}return{stop:function(){n.unsubscribe(),r.unsubscribe()}}}function Jt(e,t){return e.length>t.requestErrorResponseLengthLimit?"".concat(e.substring(0,t.requestErrorResponseLengthLimit),"..."):e}function Wt(e){return"xhr"===e?"XHR":"Fetch"}var Xt=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;function Yt(e){var t=function(e){return Ut(window,"onerror",{before:function(t,n,r,o,i){var s;if(i)s=ae(i),e(s,i);else{var a,c={url:n,column:o,line:r},u=t;if("[object String]"==={}.toString.call(t)){var f=Xt.exec(u);f&&(a=f[1],u=f[2])}e(s={name:a,message:"string"==typeof u?u:void 0,stack:[c]},t)}}})}(e).stop,n=function(e){return Ut(window,"onunhandledrejection",{before:function(t){var n=t.reason||"Empty reason",r=ae(n);e(r,n)}})}(e).stop;return{stop:function(){t(),n()}}}function Kt(e){return Yt((function(t,n){var r=function(e,t,n,r){return e&&(void 0!==e.message||t instanceof Error)?{message:e.message||"Empty message",stack:Ce(e),handlingStack:r,type:e.name}:{message:"".concat(n," ").concat(y(t)),stack:"No stack, consider using an instance of Error",handlingStack:r,type:e&&e.name}}(t,n,"Uncaught"),o=r.stack,i=r.message,s=r.type;e.notify({message:i,stack:o,type:s,source:xe,startClocks:D(),originalError:n,handling:"unhandled"})}))}var Qt=function(){function e(){this.callbacks={}}return e.prototype.notify=function(e,t){var n=this.callbacks[e];n&&n.forEach((function(e){return e(t)}))},e.prototype.subscribe=function(e,t){var n=this;return this.callbacks[e]||(this.callbacks[e]=[]),this.callbacks[e].push(t),{unsubscribe:function(){n.callbacks[e]=n.callbacks[e].filter((function(e){return t!==e}))}}},e}();var Zt,en,tn,nn,rn=function(n){var r,o,i=!1,a=_(),u={},f=function(){},l=new A,d=function(e,t,n,r){void 0===n&&(n=R(g())),void 0===r&&(r=M()),l.add((function(){return d(e,t,n,r)}))},p=function(){},h=new De((function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return d.apply(void 0,e)}));function g(){return{view:{referrer:document.referrer,url:window.location.href},context:a.get()}}return r={logger:h,init:c((function(r){var o;if(F()&&(r=function(e){return v({},e,{clientToken:"empty"})}(r)),function(e){return!i||(e.silentMultipleInit||t.error("DD_LOGS is already initialized."),!1)}(r)){var s=function(t){var n=oe(t),r=_e(t.forwardConsoleLogs,C(e),"Forward Console Logs"),o=_e(t.forwardReports,C(Oe),"Forward Reports");if(n&&r&&o)return t.forwardErrorsToLogs&&!w(r,e.error)&&r.push(e.error),v({forwardErrorsToLogs:!1!==t.forwardErrorsToLogs,forwardConsoleLogs:r,forwardReports:o,requestErrorResponseLengthLimit:32768},n)}(r);s&&(o=n(s,g,h),d=o.handleLog,f=o.getInternalContext,p=function(){return R(r)},l.drain(),i=!0)}})),getLoggerGlobalContext:c(a.get),getGlobalContext:c(a.getContext),setLoggerGlobalContext:c(a.set),setGlobalContext:c(a.setContext),addLoggerGlobalContext:c(a.add),setGlobalContextProperty:c(a.setContextProperty),removeLoggerGlobalContext:c(a.remove),removeGlobalContextProperty:c(a.removeContextProperty),clearGlobalContext:c(a.clearContext),createLogger:c((function(e,t){return void 0===t&&(t={}),u[e]=new De((function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return d.apply(void 0,e)}),e,t.handler,t.level,t.context),u[e]})),getLogger:c((function(e){return u[e]})),getInitConfiguration:c((function(){return p()})),getInternalContext:c((function(e){return f(e)}))},o=v({version:"4.18.1",onReady:function(e){e()}},r),Object.defineProperty(o,"_setDebug",{get:function(){return s},enumerable:!1}),o}((function(n,r,o){var i=new Qt,s=function(e){var t,n=ze(e);if(F()){var r=q();n.observable.subscribe((function(e){return r.send("internal_telemetry",e)}))}else{var o=Qe(e,e.rumEndpointBuilder,null===(t=e.replica)||void 0===t?void 0:t.rumEndpointBuilder);n.observable.subscribe((function(t){return o.add(t,function(e){return"datad0g.com"===e.site}(e))}))}return n}(n);s.setContextProvider((function(){var e,t,n,r,o,i;return{application:{id:null===(e=Tt())||void 0===e?void 0:e.application_id},session:{id:null===(t=u.findTrackedSession())||void 0===t?void 0:t.id},view:{id:null===(r=null===(n=Tt())||void 0===n?void 0:n.view)||void 0===r?void 0:r.id},action:{id:null===(i=null===(o=Tt())||void 0===o?void 0:o.user_action)||void 0===i?void 0:i.id}}})),$t(n,i),function(e,t){if(!e.forwardErrorsToLogs)return{stop:m};var n=new Te,r=Kt(n).stop,o=n.subscribe((function(e){t.notify(0,{rawLogsEvent:{message:e.message,date:e.startClocks.timeStamp,error:{kind:e.type,origin:xe,stack:e.stack},origin:xe,status:Ae.error}})}))}(n,i),function(t,n){var r=Rt(t.forwardConsoleLogs).subscribe((function(t){n.notify(0,{rawLogsEvent:{date:M(),message:t.message,origin:ye,error:t.api===e.error?{origin:ye,stack:t.stack}:void 0,status:It[t.api]}})}))}(n,i),function(e,t){var n=Re(e.forwardReports).subscribe((function(e){var n,r=e.message,o=jt[e.type];o===Ae.error?n={kind:e.subtype,origin:ke,stack:e.stack}:e.stack&&(r+=" Found in ".concat(function(e){var t;return null===(t=/@ (.+)/.exec(e))||void 0===t?void 0:t[1]}(e.stack))),t.notify(0,{rawLogsEvent:{date:M(),message:r,origin:ke,error:n,status:o}})}))}(n,i);var a,c=function(e){return{handleLog:function(n,r,o,i){var s=n.context;Ct(n.status,je,r)&&t(n.status,n.message,B(r.getContext(),s)),e.notify(0,{rawLogsEvent:{date:i||M(),message:n.message,status:n.status,origin:be},messageContext:s,savedCommonContext:o,logger:r})}}}(i).handleLog,u=!function(e){if(void 0===document.cookie||null===document.cookie)return!1;try{var n="dd_cookie_test_".concat(h()),r="test";V(n,r,l,e);var o=$(n)===r;return J(n,e),o}catch(e){return t.error(e),!1}}(n.cookieOptions)||F()||Pe()?function(e){var t="1"===xt(e)?{}:void 0;return{findTrackedSession:function(){return t}}}(n):wt(n);return Et(u,n,i,r,o),F()?function(e){var t=q();e.subscribe(1,(function(e){t.send("log",e)}))}(i):function(e,t){var n,r=Qe(e,e.logsEndpointBuilder,null===(n=e.replica)||void 0===n?void 0:n.logsEndpointBuilder);t.subscribe(1,(function(e){r.add(e)}))}(n,i),{handleLog:c,getInternalContext:(a=u,{get:function(e){var t=a.findTrackedSession(e);if(t)return{session_id:t.id}}}).get}}));Zt=E(),tn=rn,nn=Zt[en="DD_LOGS"],Zt[en]=tn,nn&&nn.q&&nn.q.forEach((function(e){return n(e,"onReady callback threw an error:")()}))}();
!function(){"use strict";var t={log:"log",debug:"debug",info:"info",warn:"warn",error:"error"},e=function(n){for(var r=[],o=1;o<arguments.length;o++)r[o-1]=arguments[o];Object.prototype.hasOwnProperty.call(t,n)||(n=t.log),e[n].apply(e,r)};function n(t,n){return function(){for(var r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];try{return t.apply(void 0,r)}catch(t){e.error(n,t)}}}e.debug=console.debug.bind(console),e.log=console.log.bind(console),e.info=console.info.bind(console),e.warn=console.warn.bind(console),e.error=console.error.bind(console);var r,o=function(t,e,n){if(n||2===arguments.length)for(var r,o=0,i=e.length;o<i;o++)!r&&o in e||(r||(r=Array.prototype.slice.call(e,0,o)),r[o]=e[o]);return t.concat(r||Array.prototype.slice.call(e))},i=!1;function s(t){i=t}function u(t,e,n){var o=n.value;n.value=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=r?a(o):o;return n.apply(this,t)}}function a(t){return function(){return c(t,this,arguments)}}function c(e,n,o){try{return e.apply(n,o)}catch(e){if(f(t.error,e),r)try{r(e)}catch(e){f(t.error,e)}}}function f(t){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];i&&e.apply(void 0,o([t,"[MONITOR]"],n,!1))}var l=1e3,d=6e4;function p(t,e,n){var r,o,i=!n||void 0===n.leading||n.leading,s=!n||void 0===n.trailing||n.trailing,u=!1;return{throttled:function(){for(var n=[],a=0;a<arguments.length;a++)n[a]=arguments[a];u?r=n:(i?t.apply(void 0,n):r=n,u=!0,o=setTimeout((function(){s&&r&&t.apply(void 0,r),u=!1,r=void 0}),e))},cancel:function(){clearTimeout(o),u=!1,r=void 0}}}function v(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return e.forEach((function(e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})),t}function h(t){return t?(parseInt(t,10)^16*Math.random()>>parseInt(t,10)/4).toString(16):"".concat(1e7,"-").concat(1e3,"-").concat(4e3,"-").concat(8e3,"-").concat(1e11).replace(/[018]/g,h)}function g(t){return 0!==t&&100*Math.random()<=t}function y(){}function m(t,e,n){if("object"!=typeof t||null===t)return JSON.stringify(t);var r=b(Object.prototype),o=b(Array.prototype),i=b(Object.getPrototypeOf(t)),s=b(t);try{return JSON.stringify(t,e,n)}catch(t){return"<error: unable to serialize object>"}finally{r(),o(),i(),s()}}function b(t){var e=t,n=e.toJSON;return n?(delete e.toJSON,function(){e.toJSON=n}):y}function w(t,e){return-1!==t.indexOf(e)}function x(t){if(Array.from)return Array.from(t);var e=[];if(t instanceof Set)t.forEach((function(t){return e.push(t)}));else for(var n=0;n<t.length;n++)e.push(t[n]);return e}function C(t){return function(t){return"number"==typeof t}(t)&&t>=0&&t<=100}function k(t){return Object.keys(t).map((function(e){return t[e]}))}function S(){if("object"==typeof globalThis)return globalThis;Object.defineProperty(Object.prototype,"_dd_temp_",{get:function(){return this},configurable:!0});var t=_dd_temp_;return delete Object.prototype._dd_temp_,"object"!=typeof t&&(t="object"==typeof self?self:"object"==typeof window?window:{}),t}function E(t,e,n){void 0===n&&(n="");var r=t.charCodeAt(e-1),o=r>=55296&&r<=56319?e+1:e;return t.length<=o?t:"".concat(t.slice(0,o)).concat(n)}function T(t,e,n,r){return R(t,[e],n,r)}function R(t,e,n,r){var o=void 0===r?{}:r,i=o.once,s=o.capture,u=o.passive,c=a(i?function(t){l(),n(t)}:n),f=u?{capture:s,passive:u}:s;e.forEach((function(e){return t.addEventListener(e,c,f)}));var l=function(){return e.forEach((function(e){return t.removeEventListener(e,c,f)}))};return{stop:l}}function L(t,e,n){if(void 0===n&&(n=function(){if("undefined"!=typeof WeakSet){var t=new WeakSet;return{hasAlreadyBeenSeen:function(e){var n=t.has(e);return n||t.add(e),n}}}var e=[];return{hasAlreadyBeenSeen:function(t){var n=e.indexOf(t)>=0;return n||e.push(t),n}}}()),void 0===e)return t;if("object"!=typeof e||null===e)return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp){var r=e.flags||[e.global?"g":"",e.ignoreCase?"i":"",e.multiline?"m":"",e.sticky?"y":"",e.unicode?"u":""].join("");return new RegExp(e.source,r)}if(!n.hasAlreadyBeenSeen(e)){if(Array.isArray(e)){for(var o=Array.isArray(t)?t:[],i=0;i<e.length;++i)o[i]=L(o[i],e[i],n);return o}var s,u="object"==(null===(s=t)?"null":Array.isArray(s)?"array":typeof s)?t:{};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(u[a]=L(u[a],e[a],n));return u}}function O(t){return L(void 0,t)}function B(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];for(var r=0,o=e;r<o.length;r++){var i=o[r];null!=i&&(t=L(t,i))}return t}function _(){var t={};return{get:function(){return t},add:function(e,n){t[e]=n},remove:function(e){delete t[e]},set:function(e){t=e},getContext:function(){return O(t)},setContext:function(e){t=O(e)},setContextProperty:function(e,n){t[e]=O(n)},removeContextProperty:function(e){delete t[e]},clearContext:function(){t={}}}}var M,q=function(){function t(){this.buffer=[]}return t.prototype.add=function(t){this.buffer.push(t)>500&&this.buffer.splice(0,1)},t.prototype.drain=function(){this.buffer.forEach((function(t){return t()})),this.buffer.length=0},t}();function I(){return(new Date).getTime()}function A(){return I()}function P(){return performance.now()}function j(){return{relative:P(),timeStamp:A()}}function U(t,e){return e-t}function D(){return void 0===M&&(M=performance.timing.navigationStart),M}function F(){var t=S().DatadogEventBridge;if(t)return{getAllowedWebViewHosts:function(){return JSON.parse(t.getAllowedWebViewHosts())},send:function(e,n){t.send(JSON.stringify({eventType:e,event:n}))}}}function N(t){var e;void 0===t&&(t=null===(e=S().location)||void 0===e?void 0:e.hostname);var n=F();return!!n&&n.getAllowedWebViewHosts().some((function(e){return t===e||(n=t,r=".".concat(e),n.slice(-r.length)===r);var n,r}))}var H,G,z;function V(t,e,n,r){var o=new Date;o.setTime(o.getTime()+n);var i="expires=".concat(o.toUTCString()),s=r&&r.crossSite?"none":"strict",u=r&&r.domain?";domain=".concat(r.domain):"",a=r&&r.secure?";secure":"";document.cookie="".concat(t,"=").concat(e,";").concat(i,";path=/;samesite=").concat(s).concat(u).concat(a)}function $(t){return function(t,e){var n=new RegExp("(?:^|;)\\s*".concat(e,"\\s*=\\s*([^;]+)")).exec(t);return n?n[1]:void 0}(document.cookie,t)}function J(t,e){V(t,"",0,e)}function W(){return G||new Set}function X(t){return Y(t,function(t){if(t.origin)return t.origin;var e=t.host.replace(/(:80|:443)$/,"");return"".concat(t.protocol,"//").concat(e)}(window.location)).href}function Y(t,e){if(function(){if(void 0!==z)return z;try{var t=new URL("http://test/path");return z="http://test/path"===t.href}catch(t){z=!1}return z}())return void 0!==e?new URL(t,e):new URL(t);if(void 0===e&&!/:/.test(t))throw new Error("Invalid URL: '".concat(t,"'"));var n=document,r=n.createElement("a");if(void 0!==e){var o=(n=document.implementation.createHTMLDocument("")).createElement("base");o.href=e,n.head.appendChild(o),n.body.appendChild(r)}return r.href=t,r}var K="datadoghq.com",Q={logs:"logs",rum:"rum",sessionReplay:"session-replay"},Z={logs:"logs",rum:"rum",sessionReplay:"replay"};function tt(t,e,n){var r=t.site,o=void 0===r?K:r,i=t.clientToken,s=o.split("."),u=s.pop(),a="".concat(Q[e],".browser-intake-").concat(s.join("-"),".").concat(u),c="https://".concat(a,"/api/v2/").concat(Z[e]),f=t.proxyUrl&&X(t.proxyUrl);return{build:function(){var t="ddsource=browser"+"&ddtags=".concat(encodeURIComponent(["sdk_version:".concat("4.19.0")].concat(n).join(",")))+"&dd-api-key=".concat(i)+"&dd-evp-origin-version=".concat(encodeURIComponent("4.19.0"))+"&dd-evp-origin=browser"+"&dd-request-id=".concat(h());"rum"===e&&(t+="&batch_time=".concat(A()));var r="".concat(c,"?").concat(t);return f?"".concat(f,"?ddforward=").concat(encodeURIComponent(r)):r},buildIntakeUrl:function(){return f?"".concat(f,"?ddforward"):c},endpointType:e}}var et=/[^a-z0-9_:./-]/;function nt(t,n){var r=200-t.length-1;(n.length>r||et.test(n))&&e.warn("".concat(t," value doesn't meet tag requirements and will be sanitized"));var o=n.replace(/,/g,"_");return"".concat(t,":").concat(o)}function rt(t){var e=function(t){var e=t.env,n=t.service,r=t.version,o=t.datacenter,i=[];return e&&i.push(nt("env",e)),n&&i.push(nt("service",n)),r&&i.push(nt("version",r)),o&&i.push(nt("datacenter",o)),i}(t),n=function(t,e){return{logsEndpointBuilder:tt(t,"logs",e),rumEndpointBuilder:tt(t,"rum",e),sessionReplayEndpointBuilder:tt(t,"sessionReplay",e)}}(t,e),r=k(n).map((function(t){return t.buildIntakeUrl()})),o=function(t,e,n){if(!t.replica)return;var r=v({},t,{site:K,clientToken:t.replica.clientToken}),o={logsEndpointBuilder:tt(r,"logs",n),rumEndpointBuilder:tt(r,"rum",n)};return e.push.apply(e,k(o).map((function(t){return t.buildIntakeUrl()}))),v({applicationId:t.replica.applicationId},o)}(t,r,e);return v({isIntakeUrl:function(t){return r.some((function(e){return 0===t.indexOf(e)}))},replica:o,site:t.site||K},n)}function ot(t){var r,o;if(t&&t.clientToken)if(void 0===t.sampleRate||C(t.sampleRate)){var i;if(void 0===t.telemetrySampleRate||C(t.telemetrySampleRate))return i=t.enableExperimentalFeatures,Array.isArray(i)&&(G||(G=new Set(i)),i.filter((function(t){return"string"==typeof t})).forEach((function(t){w(t,"-")&&e.warn("please use snake case for '".concat(t,"'")),G.add(t)}))),v({beforeSend:t.beforeSend&&n(t.beforeSend,"beforeSend threw an error:"),cookieOptions:it(t),sampleRate:null!==(r=t.sampleRate)&&void 0!==r?r:100,telemetrySampleRate:null!==(o=t.telemetrySampleRate)&&void 0!==o?o:20,service:t.service,silentMultipleInit:!!t.silentMultipleInit,batchBytesLimit:16384,eventRateLimiterThreshold:3e3,maxTelemetryEventsPerPage:15,flushTimeout:3e4,batchMessagesLimit:50,messageBytesLimit:262144},rt(t));e.error("Telemetry Sample Rate should be a number between 0 and 100")}else e.error("Sample Rate should be a number between 0 and 100");else e.error("Client Token is not configured, we will not send any data.")}function it(t){var e={};return e.secure=function(t){return!!t.useSecureSessionCookie||!!t.useCrossSiteSessionCookie}(t),e.crossSite=!!t.useCrossSiteSessionCookie,t.trackSessionAcrossSubdomains&&(e.domain=function(){if(void 0===H){for(var t="dd_site_test_".concat(h()),e=window.location.hostname.split("."),n=e.pop();e.length&&!$(t);)n="".concat(e.pop(),".").concat(n),V(t,"test",l,{domain:n});J(t,{domain:n}),H=n}return H}()),e}var st="?";function ut(t){var e=[],n=gt(t,"stack");return n&&n.split("\n").forEach((function(t){var n=function(t){var e=ft.exec(t);if(!e)return;var n=e[2]&&0===e[2].indexOf("native"),r=e[2]&&0===e[2].indexOf("eval"),o=lt.exec(e[2]);r&&o&&(e[2]=o[1],e[3]=o[2],e[4]=o[3]);return{args:n?[e[2]]:[],column:e[4]?+e[4]:void 0,func:e[1]||st,line:e[3]?+e[3]:void 0,url:n?void 0:e[2]}}(t)||function(t){var e=dt.exec(t);if(!e)return;return{args:[],column:e[3]?+e[3]:void 0,func:st,line:e[2]?+e[2]:void 0,url:e[1]}}(t)||function(t){var e=pt.exec(t);if(!e)return;return{args:[],column:e[4]?+e[4]:void 0,func:e[1]||st,line:+e[3],url:e[2]}}(t)||function(t){var e=vt.exec(t);if(!e)return;var n=e[3]&&e[3].indexOf(" > eval")>-1,r=ht.exec(e[3]);n&&r&&(e[3]=r[1],e[4]=r[2],e[5]=void 0);return{args:e[2]?e[2].split(","):[],column:e[5]?+e[5]:void 0,func:e[1]||st,line:e[4]?+e[4]:void 0,url:e[3]}}(t);n&&(!n.func&&n.line&&(n.func=st),e.push(n))})),{message:gt(t,"message"),name:gt(t,"name"),stack:e}}var at="((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\w+\\.|\\/).*?)",ct="(?::(\\d+))",ft=new RegExp("^\\s*at (.*?) ?\\(".concat(at).concat(ct,"?").concat(ct,"?\\)?\\s*$"),"i"),lt=new RegExp("\\((\\S*)".concat(ct).concat(ct,"\\)"));var dt=new RegExp("^\\s*at ?".concat(at).concat(ct,"?").concat(ct,"??\\s*$"),"i");var pt=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;var vt=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,ht=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;function gt(t,e){if("object"==typeof t&&t&&e in t){var n=t[e];return"string"==typeof n?n:void 0}}var yt="agent",mt="console",bt="logger",wt="network",xt="source",Ct="report";function kt(t){var e=St(t);return t.stack.forEach((function(t){var n="?"===t.func?"<anonymous>":t.func,r=t.args&&t.args.length>0?"(".concat(t.args.join(", "),")"):"",o=t.line?":".concat(t.line):"",i=t.line&&t.column?":".concat(t.column):"";e+="\n at ".concat(n).concat(r," @ ").concat(t.url).concat(o).concat(i)})),e}function St(t){return"".concat(t.name||"Error",": ").concat(t.message)}function Et(){var t,e=new Error;if(!e.stack)try{throw e}catch(t){}return c((function(){var n=ut(e);n.stack=n.stack.slice(2),t=kt(n)})),t}var Tt=function(){function t(t){this.onFirstSubscribe=t,this.observers=[]}return t.prototype.subscribe=function(t){var e=this;return!this.observers.length&&this.onFirstSubscribe&&(this.onLastUnsubscribe=this.onFirstSubscribe()||void 0),this.observers.push(t),{unsubscribe:function(){e.observers=e.observers.filter((function(e){return t!==e})),!e.observers.length&&e.onLastUnsubscribe&&e.onLastUnsubscribe()}}},t.prototype.notify=function(t){this.observers.forEach((function(e){return e(t)}))},t}();function Rt(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=new Tt((function(){var e=t.map((function(t){return t.subscribe((function(t){return n.notify(t)}))}));return function(){return e.forEach((function(t){return t.unsubscribe()}))}}));return n}var Lt={intervention:"intervention",deprecation:"deprecation",cspViolation:"csp_violation"};function Ot(t){var e,n=[];w(t,Lt.cspViolation)&&n.push(e=new Tt((function(){var t=a((function(t){e.notify(function(t){var e=Lt.cspViolation,n="'".concat(t.blockedURI,"' blocked by '").concat(t.effectiveDirective,"' directive");return{type:Lt.cspViolation,subtype:t.effectiveDirective,message:"".concat(e,": ").concat(n),stack:Bt(t.effectiveDirective,"".concat(n,' of the policy "').concat(E(t.originalPolicy,100,"..."),'"'),t.sourceFile,t.lineNumber,t.columnNumber)}}(t))}));return T(document,"securitypolicyviolation",t).stop})));var r=t.filter((function(t){return t!==Lt.cspViolation}));return r.length&&n.push(function(t){var e=new Tt((function(){if(window.ReportingObserver){var n=a((function(t){return t.forEach((function(t){e.notify(function(t){var e=t.type,n=t.body;return{type:e,subtype:n.id,message:"".concat(e,": ").concat(n.message),stack:Bt(n.id,n.message,n.sourceFile,n.lineNumber,n.columnNumber)}}(t))}))})),r=new window.ReportingObserver(n,{types:t,buffered:!0});return r.observe(),function(){r.disconnect()}}}));return e}(r)),Rt.apply(void 0,n)}function Bt(t,e,n,r,o){return n&&kt({name:t,message:e,stack:[{func:"?",url:n,line:r,column:o}]})}function _t(t,n,r){return void 0===t?[]:"all"===t||Array.isArray(t)&&t.every((function(t){return w(n,t)}))?"all"===t?n:(o=t,i=new Set,o.forEach((function(t){return i.add(t)})),x(i)):void e.error("".concat(r,' should be "all" or an array with allowed values "').concat(n.join('", "'),'"'));var o,i}var Mt=function(t,e,n,r){var o,i=arguments.length,s=i<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,n,r);else for(var u=t.length-1;u>=0;u--)(o=t[u])&&(s=(i<3?o(s):i>3?o(e,n,s):o(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s},qt={debug:"debug",error:"error",info:"info",warn:"warn"},It="console",At="http",Pt=Object.keys(qt),jt=function(){function t(t,e,n,r,o){void 0===n&&(n=At),void 0===r&&(r=qt.debug),void 0===o&&(o={}),this.handleLogStrategy=t,this.handlerType=n,this.level=r,this.contextManager=_(),this.contextManager.set(v({},o,e?{logger:{name:e}}:void 0))}return t.prototype.log=function(t,e,n){void 0===n&&(n=qt.info),this.handleLogStrategy({message:t,context:O(e),status:n},this)},t.prototype.debug=function(t,e){this.log(t,e,qt.debug)},t.prototype.info=function(t,e){this.log(t,e,qt.info)},t.prototype.warn=function(t,e){this.log(t,e,qt.warn)},t.prototype.error=function(t,e){var n={error:{origin:bt}};this.log(t,B(n,e),qt.error)},t.prototype.setContext=function(t){this.contextManager.set(t)},t.prototype.getContext=function(){return this.contextManager.get()},t.prototype.addContext=function(t,e){this.contextManager.add(t,e)},t.prototype.removeContext=function(t){this.contextManager.remove(t)},t.prototype.setHandler=function(t){this.handlerType=t},t.prototype.getHandler=function(){return this.handlerType},t.prototype.setLevel=function(t){this.level=t},t.prototype.getLevel=function(){return this.level},Mt([u],t.prototype,"log",null),t}();function Ut(){return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM||$("datadog-synthetics-injects-rum"))}function Dt(){var t=window._DATADOG_SYNTHETICS_RESULT_ID||$("datadog-synthetics-result-id");return"string"==typeof t?t:void 0}var Ft,Nt=["https://www.datadoghq-browser-agent.com","https://www.datad0g-browser-agent.com","http://localhost","<anonymous>"],Ht=["ddog-gov.com"],Gt={maxEventsPerPage:0,sentEventCount:0,telemetryEnabled:!1};function zt(t){var e,n=new Tt;return Gt.telemetryEnabled=g(t.telemetrySampleRate),Ft=function(r){!w(Ht,t.site)&&Gt.telemetryEnabled&&n.notify(function(t){return B({type:"telemetry",date:A(),service:"browser-sdk",version:"4.19.0",source:"browser",_dd:{format_version:2},telemetry:t,experimental_features:x(W())},void 0!==e?e():{})}(r))},r=$t,v(Gt,{maxEventsPerPage:t.maxTelemetryEventsPerPage,sentEventCount:0}),{setContextProvider:function(t){e=t},observable:n}}function Vt(e,n){f(t.debug,e,n),Jt(v({message:e,status:"debug"},n))}function $t(t){Jt(v({status:"error"},function(t){if(t instanceof Error){var e=ut(t);return{error:{kind:e.name,stack:kt(Wt(e))},message:e.message}}return{error:{stack:"Not an instance of error"},message:"Uncaught ".concat(m(t))}}(t)))}function Jt(t){Ft&&Gt.sentEventCount<Gt.maxEventsPerPage&&(Gt.sentEventCount+=1,Ft(t))}function Wt(t){return t.stack=t.stack.filter((function(t){return!t.url||Nt.some((function(e){return n=t.url,r=e,n.slice(0,r.length)===r;var n,r}))})),t}var Xt=/[^\u0000-\u007F]/,Yt=function(){function t(t,e,n,r,o,i){void 0===i&&(i=y),this.request=t,this.batchMessagesLimit=e,this.batchBytesLimit=n,this.messageBytesLimit=r,this.flushTimeout=o,this.beforeUnloadCallback=i,this.pushOnlyBuffer=[],this.upsertBuffer={},this.bufferBytesCount=0,this.bufferMessagesCount=0,this.setupFlushOnExit(),this.flushPeriodically()}return t.prototype.add=function(t){this.addOrUpdate(t)},t.prototype.upsert=function(t,e){this.addOrUpdate(t,e)},t.prototype.flush=function(t){if(void 0===t&&(t=this.request.send),0!==this.bufferMessagesCount){var e=this.pushOnlyBuffer.concat(k(this.upsertBuffer)),n=this.bufferBytesCount;this.pushOnlyBuffer=[],this.upsertBuffer={},this.bufferBytesCount=0,this.bufferMessagesCount=0,t({data:e.join("\n"),bytesCount:n})}},t.prototype.flushOnExit=function(){this.flush(this.request.sendOnExit)},t.prototype.computeBytesCount=function(t){return Xt.test(t)?void 0!==window.TextEncoder?(new TextEncoder).encode(t).length:new Blob([t]).size:t.length},t.prototype.addOrUpdate=function(t,n){var r=this.process(t),o=r.processedMessage,i=r.messageBytesCount;i>=this.messageBytesLimit?e.warn("Discarded a message whose size was bigger than the maximum allowed size ".concat(this.messageBytesLimit,"KB.")):(this.hasMessageFor(n)&&this.remove(n),this.willReachedBytesLimitWith(i)&&this.flush(),this.push(o,i,n),this.isFull()&&this.flush())},t.prototype.process=function(t){var e=m(t);return{processedMessage:e,messageBytesCount:this.computeBytesCount(e)}},t.prototype.push=function(t,e,n){this.bufferMessagesCount>0&&(this.bufferBytesCount+=1),void 0!==n?this.upsertBuffer[n]=t:this.pushOnlyBuffer.push(t),this.bufferBytesCount+=e,this.bufferMessagesCount+=1},t.prototype.remove=function(t){var e=this.upsertBuffer[t];delete this.upsertBuffer[t];var n=this.computeBytesCount(e);this.bufferBytesCount-=n,this.bufferMessagesCount-=1,this.bufferMessagesCount>0&&(this.bufferBytesCount-=1)},t.prototype.hasMessageFor=function(t){return void 0!==t&&void 0!==this.upsertBuffer[t]},t.prototype.willReachedBytesLimitWith=function(t){return this.bufferBytesCount+t+1>=this.batchBytesLimit},t.prototype.isFull=function(){return this.bufferMessagesCount===this.batchMessagesLimit||this.bufferBytesCount>=this.batchBytesLimit},t.prototype.flushPeriodically=function(){var t=this;setTimeout(a((function(){t.flush(),t.flushPeriodically()})),this.flushTimeout)},t.prototype.setupFlushOnExit=function(){var t=this;navigator.sendBeacon&&(T(window,"beforeunload",this.beforeUnloadCallback),T(document,"visibilitychange",(function(){"hidden"===document.visibilityState&&t.flushOnExit()})),T(window,"beforeunload",(function(){return t.flushOnExit()})))},t}(),Kt=3145728;function Qt(t,e,n,r,o){0===e.transportStatus&&0===e.queuedPayloads.size()&&e.bandwidthMonitor.canHandle(t)?te(t,e,n,{onSuccess:function(){return ee(0,e,n,r,o)},onFailure:function(){e.queuedPayloads.enqueue(t),Zt(e,n,r,o)}}):e.queuedPayloads.enqueue(t)}function Zt(t,e,n,r){2===t.transportStatus&&setTimeout(a((function(){te(t.queuedPayloads.first(),t,e,{onSuccess:function(){t.queuedPayloads.dequeue(),0!==t.lastFailureStatus&&Vt("resuming after transport down",{failureStatus:t.lastFailureStatus}),t.currentBackoffTime=1e3,ee(1,t,e,n,r)},onFailure:function(){t.currentBackoffTime=Math.min(256e3,2*t.currentBackoffTime),Zt(t,e,n,r)}})})),t.currentBackoffTime)}function te(t,e,n,r){var o=r.onSuccess,i=r.onFailure;e.bandwidthMonitor.add(t),n(t,(function(n){e.bandwidthMonitor.remove(t),!function(t){return 0!==t.status&&t.status<500}(n)?(e.transportStatus=e.bandwidthMonitor.ongoingRequestCount>0?1:2,e.lastFailureStatus=n.status,i()):(e.transportStatus=0,o())}))}function ee(t,e,n,r,o){0===t&&e.queuedPayloads.isFull()&&!e.queueFullReported&&(o({message:"Reached max ".concat(r," events size queued for upload: ").concat(3,"MiB"),source:yt,startClocks:j()}),e.queueFullReported=!0);var i=e.queuedPayloads;for(e.queuedPayloads=ne();i.size()>0;)Qt(i.dequeue(),e,n,r,o)}function ne(){var t=[];return{bytesCount:0,enqueue:function(e){this.isFull()||(t.push(e),this.bytesCount+=e.bytesCount)},first:function(){return t[0]},dequeue:function(){var e=t.shift();return e&&(this.bytesCount-=e.bytesCount),e},size:function(){return t.length},isFull:function(){return this.bytesCount>=Kt}}}function re(t,e,n){var r={transportStatus:0,lastFailureStatus:0,currentBackoffTime:1e3,bandwidthMonitor:{ongoingRequestCount:0,ongoingByteCount:0,canHandle:function(t){return 0===this.ongoingRequestCount||this.ongoingByteCount+t.bytesCount<=81920&&this.ongoingRequestCount<32},add:function(t){this.ongoingRequestCount+=1,this.ongoingByteCount+=t.bytesCount},remove:function(t){this.ongoingRequestCount-=1,this.ongoingByteCount-=t.bytesCount}},queuedPayloads:ne(),queueFullReported:!1},o=function(n,r){return ie(t,e,n,r)};return{send:function(i){var s;s="retry",G&&G.has(s)?Qt(i,r,o,t.endpointType,n):ie(t,e,i)},sendOnExit:function(n){!function(t,e,n){var r=n.data,o=n.bytesCount,i=t.build();if(navigator.sendBeacon&&o<e)try{if(navigator.sendBeacon(i,r))return}catch(t){!function(t){oe||(oe=!0,$t(t))}(t)}se(i,r)}(t,e,n)}}}var oe=!1;function ie(t,e,n,r){var o=n.data,i=n.bytesCount,s=t.build();(function(){try{return window.Request&&"keepalive"in new Request("http://a")}catch(t){return!1}})()&&i<e?fetch(s,{method:"POST",body:o,keepalive:!0}).then(a((function(t){return null==r?void 0:r({status:t.status})})),a((function(){se(s,o,r)}))):se(s,o,r)}function se(t,e,n){var r=new XMLHttpRequest;r.open("POST",t,!0),r.send(e),r.addEventListener("loadend",a((function(){null==n||n({status:r.status})})))}function ue(t,e,n,r){var o,i=s(e);function s(e){return new Yt(re(e,t.batchBytesLimit,n),t.batchMessagesLimit,t.batchBytesLimit,t.messageBytesLimit,t.flushTimeout)}return r&&(o=s(r)),{add:function(t,e){void 0===e&&(e=!0),i.add(t),o&&e&&o.add(t)}}}var ae=1/0,ce=function(){function t(t){var e=this;this.expireDelay=t,this.entries=[],this.clearOldContextsInterval=setInterval((function(){return e.clearOldContexts()}),6e4)}return t.prototype.add=function(t,e){var n=this,r={context:t,startTime:e,endTime:ae,remove:function(){var t=n.entries.indexOf(r);t>=0&&n.entries.splice(t,1)},close:function(t){r.endTime=t}};return this.entries.unshift(r),r},t.prototype.find=function(t){void 0===t&&(t=ae);for(var e=0,n=this.entries;e<n.length;e++){var r=n[e];if(r.startTime<=t){if(t<=r.endTime)return r.context;break}}},t.prototype.closeActive=function(t){var e=this.entries[0];e&&e.endTime===ae&&e.close(t)},t.prototype.findAll=function(t){return void 0===t&&(t=ae),this.entries.filter((function(e){return e.startTime<=t&&t<=e.endTime})).map((function(t){return t.context}))},t.prototype.reset=function(){this.entries=[]},t.prototype.stop=function(){clearInterval(this.clearOldContextsInterval)},t.prototype.clearOldContexts=function(){for(var t=P()-this.expireDelay;this.entries.length>0&&this.entries[this.entries.length-1].endTime<t;)this.entries.pop()},t}();var fe,le=144e5,de=9e5,pe=/^([a-z]+)=([a-z0-9-]+)$/,ve="&",he="_dd_s",ge=[];function ye(t,e){var n;if(void 0===e&&(e=0),fe||(fe=t),t===fe)if(e>=100)we();else{var r,o=ke();if(me()){if(o.lock)return void be(t,e);if(r=h(),o.lock=r,Ce(o,t.options),(o=ke()).lock!==r)return void be(t,e)}var i=t.process(o);if(me()&&(o=ke()).lock!==r)be(t,e);else{if(i&&xe(i,t.options),me()&&(!i||!Se(i))){if((o=ke()).lock!==r)return void be(t,e);delete o.lock,Ce(o,t.options),i=o}null===(n=t.after)||void 0===n||n.call(t,i||o),we()}}else ge.push(t)}function me(){return!!window.chrome||/HeadlessChrome/.test(window.navigator.userAgent)}function be(t,e){setTimeout(a((function(){ye(t,e+1)})),10)}function we(){fe=void 0;var t=ge.shift();t&&ye(t)}function xe(t,e){Se(t)?function(t){V(he,"",0,t)}(e):(t.expire=String(I()+de),Ce(t,e))}function Ce(t,e){V(he,function(t){return(e=t,Object.keys(e).map((function(t){return[t,e[t]]}))).map((function(t){var e=t[0],n=t[1];return"".concat(e,"=").concat(n)})).join(ve);var e}(t),de,e)}function ke(){var t=$(he),e={};return function(t){return void 0!==t&&(-1!==t.indexOf(ve)||pe.test(t))}(t)&&t.split(ve).forEach((function(t){var n=pe.exec(t);if(null!==n){var r=n[1],o=n[2];e[r]=o}})),e}function Se(t){return e=t,0===Object.keys(e).length;var e}function Ee(t,e,n){var r=new Tt,o=new Tt,i=setInterval(a((function(){ye({options:t,process:function(t){return f(t)?void 0:{}},after:u})})),1e3),s=function(){var t=ke();if(f(t))return t;return{}}();function u(t){return f(t)||(t={}),c()&&(!function(t){return s.id!==t.id||s[e]!==t[e]}(t)?s=t:(s={},o.notify())),t}function c(){return void 0!==s[e]}function f(t){return(void 0===t.created||I()-Number(t.created)<le)&&(void 0===t.expire||I()<Number(t.expire))}return{expandOrRenewSession:p(a((function(){var o;ye({options:t,process:function(t){var r=u(t);return o=function(t){var r=n(t[e]),o=r.trackingType,i=r.isTracked;t[e]=o,i&&!t.id&&(t.id=h(),t.created=String(I()));return i}(r),r},after:function(t){o&&!c()&&function(t){s=t,r.notify()}(t),s=t}})})),1e3).throttled,expandSession:function(){ye({options:t,process:function(t){return c()?u(t):void 0}})},getSession:function(){return s},renewObservable:r,expireObservable:o,stop:function(){clearInterval(i)}}}var Te=[];function Re(t,e,n){!function(t){var e=$(he),n=$("_dd"),r=$("_dd_r"),o=$("_dd_l");if(!e){var i={};n&&(i.id=n),o&&/^[01]$/.test(o)&&(i.logs=o),r&&/^[012]$/.test(r)&&(i.rum=r),xe(i,t)}}(t);var r=Ee(t,e,n);Te.push((function(){return r.stop()}));var o,i=new ce(144e5);function s(){return{id:r.getSession().id,trackingType:r.getSession()[e]}}return Te.push((function(){return i.stop()})),r.renewObservable.subscribe((function(){i.add(s(),P())})),r.expireObservable.subscribe((function(){i.closeActive(P())})),r.expandOrRenewSession(),i.add(s(),[0,D()][0]),o=R(window,["click","touchstart","keydown","scroll"],(function(){return r.expandOrRenewSession()}),{capture:!0,passive:!0}).stop,Te.push(o),function(t){var e=a((function(){"visible"===document.visibilityState&&t()})),n=T(document,"visibilitychange",e).stop;Te.push(n);var r=setInterval(e,6e4);Te.push((function(){clearInterval(r)}))}((function(){return r.expandSession()})),{findActiveSession:function(t){return i.find(t)},renewObservable:r.renewObservable,expireObservable:r.expireObservable}}var Le;function Oe(t){var e=Re(t.cookieOptions,"logs",(function(e){return function(t,e){var n=function(t){return"0"===t||"1"===t}(e)?e:Be(t);return{trackingType:n,isTracked:"1"===n}}(t,e)}));return{findTrackedSession:function(t){var n=e.findActiveSession(t);return n&&"1"===n.trackingType?{id:n.id}:void 0}}}function Be(t){return g(t.sampleRate)?"1":"0"}var _e=((Le={})[qt.debug]=0,Le[qt.info]=1,Le[qt.warn]=2,Le[qt.error]=3,Le);function Me(t,e,n){var r=n.getHandler(),o=Array.isArray(r)?r:[r];return _e[t]>=_e[n.getLevel()]&&w(o,e)}function qe(t,e,n,r,o,i){var s=Pt.concat(["custom"]),u={};s.forEach((function(t){var n,r,o,s,a;u[t]=(n=t,r=e.eventRateLimiterThreshold,o=i,s=0,a=!1,{isLimitReached:function(){if(0===s&&setTimeout((function(){s=0}),d),(s+=1)<=r||a)return a=!1,!1;if(s===r+1){a=!0;try{o({message:"Reached max number of ".concat(n,"s by minute: ").concat(r),source:yt,startClocks:j()})}finally{a=!1}}return!0}})})),n.subscribe(0,(function(i){var s,a,c,f=i.rawLogsEvent,l=i.messageContext,d=void 0===l?void 0:l,p=i.savedCommonContext,v=void 0===p?void 0:p,h=i.logger,g=void 0===h?o:h,y=f.date-D(),m=t.findTrackedSession(y);if(m){var b=v||r(),w=B({service:e.service,session_id:m.id,view:b.view},b.context,Ae(y),f,g.getContext(),d);!Me(f.status,At,g)||!1===(null===(s=e.beforeSend)||void 0===s?void 0:s.call(e,w))||(null===(a=w.error)||void 0===a?void 0:a.origin)!==yt&&(null!==(c=u[w.status])&&void 0!==c?c:u.custom).isLimitReached()||n.notify(1,w)}}))}var Ie=!1;function Ae(t){var e,n=window;if(Ut()){var r=o(n.DD_RUM_SYNTHETICS);return r||Ie||(Ie=!0,Vt("Logs sent before RUM is injected by the synthetics worker",{testId:(e=window._DATADOG_SYNTHETICS_PUBLIC_ID||$("datadog-synthetics-public-id"),"string"==typeof e?e:void 0),resultId:Dt()})),r}return o(n.DD_RUM);function o(e){if(e&&e.getInternalContext)return e.getInternalContext(t)}}var Pe,je={};function Ue(t){var e=t.map((function(t){return je[t]||(je[t]=function(t){var e=new Tt((function(){var n=console[t];return console[t]=function(){for(var r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];n.apply(console,r);var i=Et();c((function(){e.notify(De(r,t,i))}))},function(){console[t]=n}}));return e}(t)),je[t]}));return Rt.apply(void 0,e)}function De(e,n,r){var o,i=e.map((function(t){return function(t){if("string"==typeof t)return t;if(t instanceof Error)return St(ut(t));return m(t,void 0,2)}(t)})).join(" ");if(n===t.error){var s=function(t,e){for(var n=0;n<t.length;n+=1){var r=t[n];if(e(r,n))return r}}(e,(function(t){return t instanceof Error}));o=s?kt(ut(s)):void 0,i="console error: ".concat(i)}return{api:n,message:i,stack:o,handlingStack:r}}var Fe,Ne=((Pe={})[t.log]=qt.info,Pe[t.debug]=qt.debug,Pe[t.info]=qt.info,Pe[t.warn]=qt.warn,Pe[t.error]=qt.error,Pe);var He,Ge=((Fe={})[Lt.cspViolation]=qt.error,Fe[Lt.intervention]=qt.error,Fe[Lt.deprecation]=qt.warn,Fe);function ze(t,e,n){var r=t[e],o=n(r),i=function(){if("function"==typeof o)return o.apply(this,arguments)};return t[e]=i,{stop:function(){t[e]===i?t[e]=r:o=r}}}function Ve(t,e,n){var r=n.before,o=n.after;return ze(t,e,(function(t){return function(){var e,n=arguments;return r&&c(r,this,n),"function"==typeof t&&(e=t.apply(this,n)),o&&c(o,this,n),e}}))}var $e,Je=new WeakMap;function We(){var t;return He||(t=new Tt((function(){var e=Ve(XMLHttpRequest.prototype,"open",{before:Xe}).stop,n=Ve(XMLHttpRequest.prototype,"send",{before:function(){Ye.call(this,t)}}).stop,r=Ve(XMLHttpRequest.prototype,"abort",{before:Ke}).stop;return function(){e(),n(),r()}})),He=t),He}function Xe(t,e){Je.set(this,{state:"open",method:t,url:X(String(e))})}function Ye(t){var e=this,n=Je.get(this);if(n){var r=n;r.state="start",r.startTime=P(),r.startClocks=j(),r.isAborted=!1,r.xhr=this;var o=!1,i=Ve(this,"onreadystatechange",{before:function(){this.readyState===XMLHttpRequest.DONE&&s()}}).stop,s=a((function(){if(e.removeEventListener("loadend",s),i(),!o){o=!0;var u=n;u.state="complete",u.duration=U(r.startClocks.timeStamp,A()),u.status=e.status,t.notify(v({},u))}}));this.addEventListener("loadend",s),t.notify(r)}}function Ke(){var t=Je.get(this);t&&(t.isAborted=!0)}function Qe(){var t;return $e||(t=new Tt((function(){if(window.fetch)return ze(window,"fetch",(function(e){return function(n,r){var o,i=c(Ze,null,[t,n,r]);return i?(o=e.call(this,i.input,i.init),c(tn,null,[t,o,i])):o=e.call(this,n,r),o}})).stop})),$e=t),$e}function Ze(t,e,n){var r=n&&n.method||"object"==typeof e&&e.method||"GET",o=X("object"==typeof e&&e.url||e),i={state:"start",init:n,input:e,method:r,startClocks:j(),url:o};return t.notify(i),i}function tn(t,e,n){var r=function(e){var r=n;r.state="complete",r.duration=U(r.startClocks.timeStamp,A()),"stack"in e||e instanceof Error?(r.status=0,r.isAborted=e instanceof DOMException&&e.code===DOMException.ABORT_ERR,r.error=e,t.notify(r)):"status"in e&&(r.response=e,r.responseType=e.type,r.status=e.status,r.isAborted=!1,t.notify(r))};e.then(a(r),a(r))}function en(t,e){if(!t.forwardErrorsToLogs)return{stop:y};var n=We().subscribe((function(t){"complete"===t.state&&o("xhr",t)})),r=Qe().subscribe((function(t){"complete"===t.state&&o("fetch",t)}));function o(n,r){function o(t){e.notify(0,{rawLogsEvent:{message:"".concat(rn(n)," error ").concat(r.method," ").concat(r.url),date:r.startClocks.timeStamp,error:{origin:wt,stack:t||"Failed to load"},http:{method:r.method,status_code:r.status,url:r.url},status:qt.error,origin:wt}})}t.isIntakeUrl(r.url)||!function(t){return 0===t.status&&"opaque"!==t.responseType}(r)&&!function(t){return t.status>=500}(r)||("xhr"in r?function(t,e,n){"string"==typeof t.response?n(nn(t.response,e)):n(t.response)}(r.xhr,t,o):r.response?function(t,e,n){window.TextDecoder?t.body?function(t,e,n){!function(t,e,n){var r=t.getReader(),o=[],i=0;function s(){r.read().then(a((function(t){t.done?u():(o.push(t.value),(i+=t.value.length)>e?u():s())})),a((function(t){return n(t)})))}function u(){var t;if(r.cancel().catch(y),1===o.length)t=o[0];else{t=new Uint8Array(i);var s=0;o.forEach((function(e){t.set(e,s),s+=e.length}))}n(void 0,t.slice(0,e),t.length>e)}s()}(t,e,(function(t,e,r){if(t)n(t);else{var o=(new TextDecoder).decode(e);r&&(o+="..."),n(void 0,o)}}))}(t.clone().body,e.requestErrorResponseLengthLimit,(function(t,e){n(t?"Unable to retrieve response: ".concat(t):e)})):n():t.clone().text().then(a((function(t){return n(nn(t,e))})),a((function(t){return n("Unable to retrieve response: ".concat(t))})))}(r.response,t,o):r.error&&function(t,e,n){n(nn(kt(ut(t)),e))}(r.error,t,o))}return{stop:function(){n.unsubscribe(),r.unsubscribe()}}}function nn(t,e){return t.length>e.requestErrorResponseLengthLimit?"".concat(t.substring(0,e.requestErrorResponseLengthLimit),"..."):t}function rn(t){return"xhr"===t?"XHR":"Fetch"}var on=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;function sn(t){var e=function(t){return Ve(window,"onerror",{before:function(e,n,r,o,i){var s;if(i)s=ut(i),t(s,i);else{var u,a={url:n,column:o,line:r},c=e;if("[object String]"==={}.toString.call(e)){var f=on.exec(c);f&&(u=f[1],c=f[2])}t(s={name:u,message:"string"==typeof c?c:void 0,stack:[a]},e)}}})}(t).stop,n=function(t){return Ve(window,"onunhandledrejection",{before:function(e){var n=e.reason||"Empty reason",r=ut(n);t(r,n)}})}(t).stop;return{stop:function(){e(),n()}}}function un(t){return sn((function(e,n){var r=function(t,e,n,r){return t&&(void 0!==t.message||e instanceof Error)?{message:t.message||"Empty message",stack:kt(t),handlingStack:r,type:t.name}:{message:"".concat(n," ").concat(m(e)),stack:"No stack, consider using an instance of Error",handlingStack:r,type:t&&t.name}}(e,n,"Uncaught"),o=r.stack,i=r.message,s=r.type;t.notify({message:i,stack:o,type:s,source:xt,startClocks:j(),originalError:n,handling:"unhandled"})}))}var an=function(){function t(){this.callbacks={}}return t.prototype.notify=function(t,e){var n=this.callbacks[t];n&&n.forEach((function(t){return t(e)}))},t.prototype.subscribe=function(t,e){var n=this;return this.callbacks[t]||(this.callbacks[t]=[]),this.callbacks[t].push(e),{unsubscribe:function(){n.callbacks[t]=n.callbacks[t].filter((function(t){return e!==t}))}}},t}();var cn,fn,ln,dn,pn=function(n){var r,o,i=!1,u=_(),c={},f=function(){},l=new q,d=function(t,e,n,r){void 0===n&&(n=O(g())),void 0===r&&(r=A()),l.add((function(){return d(t,e,n,r)}))},p=function(){},h=new jt((function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return d.apply(void 0,t)}));function g(){return{view:{referrer:document.referrer,url:window.location.href},context:u.get()}}return r={logger:h,init:a((function(r){var o;if(N()&&(r=function(t){return v({},t,{clientToken:"empty"})}(r)),function(t){return!i||(t.silentMultipleInit||e.error("DD_LOGS is already initialized."),!1)}(r)){var s=function(e){var n=ot(e),r=_t(e.forwardConsoleLogs,k(t),"Forward Console Logs"),o=_t(e.forwardReports,k(Lt),"Forward Reports");if(n&&r&&o)return e.forwardErrorsToLogs&&!w(r,t.error)&&r.push(t.error),v({forwardErrorsToLogs:!1!==e.forwardErrorsToLogs,forwardConsoleLogs:r,forwardReports:o,requestErrorResponseLengthLimit:32768},n)}(r);s&&(o=n(s,g,h),d=o.handleLog,f=o.getInternalContext,p=function(){return O(r)},l.drain(),i=!0)}})),getLoggerGlobalContext:a(u.get),getGlobalContext:a(u.getContext),setLoggerGlobalContext:a(u.set),setGlobalContext:a(u.setContext),addLoggerGlobalContext:a(u.add),setGlobalContextProperty:a(u.setContextProperty),removeLoggerGlobalContext:a(u.remove),removeGlobalContextProperty:a(u.removeContextProperty),clearGlobalContext:a(u.clearContext),createLogger:a((function(t,e){return void 0===e&&(e={}),c[t]=new jt((function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return d.apply(void 0,t)}),t,e.handler,e.level,e.context),c[t]})),getLogger:a((function(t){return c[t]})),getInitConfiguration:a((function(){return p()})),getInternalContext:a((function(t){return f(t)}))},o=v({version:"4.19.0",onReady:function(t){t()}},r),Object.defineProperty(o,"_setDebug",{get:function(){return s},enumerable:!1}),o}((function(n,r,o){var i=new an,s=function(t){return i.notify(0,{rawLogsEvent:{message:t.message,date:t.startClocks.timeStamp,error:{origin:yt},origin:yt,status:qt.error}})},u=function(t,e){var n,r=zt(t);if(N()){var o=F();r.observable.subscribe((function(t){return o.send("internal_telemetry",t)}))}else{var i=ue(t,t.rumEndpointBuilder,e,null===(n=t.replica)||void 0===n?void 0:n.rumEndpointBuilder);r.observable.subscribe((function(e){return i.add(e,function(t){return"datad0g.com"===t.site}(t))}))}return r}(n,s);u.setContextProvider((function(){var t,e,n,r,o,i;return{application:{id:null===(t=Ae())||void 0===t?void 0:t.application_id},session:{id:null===(e=f.findTrackedSession())||void 0===e?void 0:e.id},view:{id:null===(r=null===(n=Ae())||void 0===n?void 0:n.view)||void 0===r?void 0:r.id},action:{id:null===(i=null===(o=Ae())||void 0===o?void 0:o.user_action)||void 0===i?void 0:i.id}}})),en(n,i),function(t,e){if(!t.forwardErrorsToLogs)return{stop:y};var n=new Tt,r=un(n).stop,o=n.subscribe((function(t){e.notify(0,{rawLogsEvent:{message:t.message,date:t.startClocks.timeStamp,error:{kind:t.type,origin:xt,stack:t.stack},origin:xt,status:qt.error}})}))}(n,i),function(e,n){var r=Ue(e.forwardConsoleLogs).subscribe((function(e){n.notify(0,{rawLogsEvent:{date:A(),message:e.message,origin:mt,error:e.api===t.error?{origin:mt,stack:e.stack}:void 0,status:Ne[e.api]}})}))}(n,i),function(t,e){var n=Ot(t.forwardReports).subscribe((function(t){var n,r=t.message,o=Ge[t.type];o===qt.error?n={kind:t.subtype,origin:Ct,stack:t.stack}:t.stack&&(r+=" Found in ".concat(function(t){var e;return null===(e=/@ (.+)/.exec(t))||void 0===e?void 0:e[1]}(t.stack))),e.notify(0,{rawLogsEvent:{date:A(),message:r,origin:Ct,error:n,status:o}})}))}(n,i);var a,c=function(t){return{handleLog:function(n,r,o,i){var s=n.context;Me(n.status,It,r)&&e(n.status,n.message,B(r.getContext(),s)),t.notify(0,{rawLogsEvent:{date:i||A(),message:n.message,status:n.status,origin:bt},messageContext:s,savedCommonContext:o,logger:r})}}}(i).handleLog,f=!function(t){if(void 0===document.cookie||null===document.cookie)return!1;try{var n="dd_cookie_test_".concat(h()),r="test";V(n,r,l,t);var o=$(n)===r;return J(n,t),o}catch(t){return e.error(t),!1}}(n.cookieOptions)||N()||Ut()?function(t){var e="1"===Be(t)?{}:void 0;return{findTrackedSession:function(){return e}}}(n):Oe(n);return qe(f,n,i,r,o,s),N()?function(t){var e=F();t.subscribe(1,(function(t){e.send("log",t)}))}(i):function(t,e,n){var r,o=ue(t,t.logsEndpointBuilder,n,null===(r=t.replica)||void 0===r?void 0:r.logsEndpointBuilder);e.subscribe(1,(function(t){o.add(t)}))}(n,i,s),{handleLog:c,getInternalContext:(a=f,{get:function(t){var e=a.findTrackedSession(t);if(e)return{session_id:e.id}}}).get}}));cn=S(),ln=pn,dn=cn[fn="DD_LOGS"],cn[fn]=ln,dn&&dn.q&&dn.q.forEach((function(t){return n(t,"onReady callback threw an error:")()}))}();
//# sourceMappingURL=datadog-logs.js.map

@@ -15,6 +15,20 @@ "use strict";

var startLogsBridge_1 = require("../transport/startLogsBridge");
var logger_1 = require("../domain/logger");
var internalContext_1 = require("../domain/internalContext");
function startLogs(configuration, getCommonContext, mainLogger) {
var lifeCycle = new lifeCycle_1.LifeCycle();
var telemetry = startLogsTelemetry(configuration);
var reportError = function (error) {
return lifeCycle.notify(0 /* RAW_LOG_COLLECTED */, {
rawLogsEvent: {
message: error.message,
date: error.startClocks.timeStamp,
error: {
origin: browser_core_1.ErrorSource.AGENT, // Todo: Remove in the next major release
},
origin: browser_core_1.ErrorSource.AGENT,
status: logger_1.StatusType.error,
},
});
};
var telemetry = startLogsTelemetry(configuration, reportError);
telemetry.setContextProvider(function () {

@@ -45,5 +59,5 @@ var _a, _b, _c, _d, _e, _f;

: (0, logsSessionManager_1.startLogsSessionManagerStub)(configuration);
(0, assembly_1.startLogsAssembly)(session, configuration, lifeCycle, getCommonContext, mainLogger);
(0, assembly_1.startLogsAssembly)(session, configuration, lifeCycle, getCommonContext, mainLogger, reportError);
if (!(0, browser_core_1.canUseEventBridge)()) {
(0, startLogsBatch_1.startLogsBatch)(configuration, lifeCycle);
(0, startLogsBatch_1.startLogsBatch)(configuration, lifeCycle, reportError);
}

@@ -60,3 +74,3 @@ else {

exports.startLogs = startLogs;
function startLogsTelemetry(configuration) {
function startLogsTelemetry(configuration, reportError) {
var _a;

@@ -69,3 +83,3 @@ var telemetry = (0, browser_core_1.startTelemetry)(configuration);

else {
var telemetryBatch_1 = (0, browser_core_1.startBatchWithReplica)(configuration, configuration.rumEndpointBuilder, (_a = configuration.replica) === null || _a === void 0 ? void 0 : _a.rumEndpointBuilder);
var telemetryBatch_1 = (0, browser_core_1.startBatchWithReplica)(configuration, configuration.rumEndpointBuilder, reportError, (_a = configuration.replica) === null || _a === void 0 ? void 0 : _a.rumEndpointBuilder);
telemetry.observable.subscribe(function (event) { return telemetryBatch_1.add(event, (0, browser_core_1.isTelemetryReplicationAllowed)(configuration)); });

@@ -72,0 +86,0 @@ }

@@ -1,2 +0,2 @@

import type { Context, RelativeTime } from '@datadog/browser-core';
import type { Context, RawError, RelativeTime } from '@datadog/browser-core';
import type { CommonContext } from '../rawLogsEvent.types';

@@ -7,4 +7,5 @@ import type { LogsConfiguration } from './configuration';

import type { LogsSessionManager } from './logsSessionManager';
export declare function startLogsAssembly(sessionManager: LogsSessionManager, configuration: LogsConfiguration, lifeCycle: LifeCycle, getCommonContext: () => CommonContext, mainLogger: Logger): void;
export declare function startLogsAssembly(sessionManager: LogsSessionManager, configuration: LogsConfiguration, lifeCycle: LifeCycle, getCommonContext: () => CommonContext, mainLogger: Logger, // Todo: [RUMF-1230] Remove this parameter in the next major release
reportError: (error: RawError) => void): void;
export declare function getRUMInternalContext(startTime?: RelativeTime): Context | undefined;
export declare function resetRUMInternalContext(): void;

@@ -7,9 +7,8 @@ "use strict";

var loggerCollection_1 = require("./logsCollection/logger/loggerCollection");
var reportAgentError_1 = require("./reportAgentError");
function startLogsAssembly(sessionManager, configuration, lifeCycle, getCommonContext, mainLogger // Todo: [RUMF-1230] Remove this parameter in the next major release
) {
function startLogsAssembly(sessionManager, configuration, lifeCycle, getCommonContext, mainLogger, // Todo: [RUMF-1230] Remove this parameter in the next major release
reportError) {
var statusWithCustom = logger_1.STATUSES.concat(['custom']);
var logRateLimiters = {};
statusWithCustom.forEach(function (status) {
logRateLimiters[status] = (0, browser_core_1.createEventRateLimiter)(status, configuration.eventRateLimiterThreshold, function (error) { return (0, reportAgentError_1.reportAgentError)(error, lifeCycle); });
logRateLimiters[status] = (0, browser_core_1.createEventRateLimiter)(status, configuration.eventRateLimiterThreshold, reportError);
});

@@ -16,0 +15,0 @@ lifeCycle.subscribe(0 /* RAW_LOG_COLLECTED */, function (_a) {

@@ -8,3 +8,3 @@ "use strict";

*/
exports.DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT = 32 * browser_core_1.ONE_KILO_BYTE;
exports.DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT = 32 * browser_core_1.ONE_KIBI_BYTE;
function validateAndBuildLogsConfiguration(initConfiguration) {

@@ -11,0 +11,0 @@ var baseConfiguration = (0, browser_core_1.validateAndBuildConfiguration)(initConfiguration);

@@ -0,3 +1,4 @@

import type { RawError } from '@datadog/browser-core';
import type { LogsConfiguration } from '../domain/configuration';
import type { LifeCycle } from '../domain/lifeCycle';
export declare function startLogsBatch(configuration: LogsConfiguration, lifeCycle: LifeCycle): void;
export declare function startLogsBatch(configuration: LogsConfiguration, lifeCycle: LifeCycle, reportError: (error: RawError) => void): void;

@@ -5,5 +5,5 @@ "use strict";

var browser_core_1 = require("@datadog/browser-core");
function startLogsBatch(configuration, lifeCycle) {
function startLogsBatch(configuration, lifeCycle, reportError) {
var _a;
var batch = (0, browser_core_1.startBatchWithReplica)(configuration, configuration.logsEndpointBuilder, (_a = configuration.replica) === null || _a === void 0 ? void 0 : _a.logsEndpointBuilder);
var batch = (0, browser_core_1.startBatchWithReplica)(configuration, configuration.logsEndpointBuilder, reportError, (_a = configuration.replica) === null || _a === void 0 ? void 0 : _a.logsEndpointBuilder);
lifeCycle.subscribe(1 /* LOG_COLLECTED */, function (serverLogsEvent) {

@@ -10,0 +10,0 @@ batch.add(serverLogsEvent);

@@ -1,2 +0,2 @@

import { willSyntheticsInjectRum, areCookiesAuthorized, canUseEventBridge, getEventBridge, startTelemetry, startBatchWithReplica, isTelemetryReplicationAllowed, } from '@datadog/browser-core';
import { willSyntheticsInjectRum, areCookiesAuthorized, canUseEventBridge, getEventBridge, startTelemetry, startBatchWithReplica, isTelemetryReplicationAllowed, ErrorSource, } from '@datadog/browser-core';
import { startLogsSessionManager, startLogsSessionManagerStub } from '../domain/logsSessionManager';

@@ -12,6 +12,20 @@ import { startLogsAssembly, getRUMInternalContext } from '../domain/assembly';

import { startLogsBridge } from '../transport/startLogsBridge';
import { StatusType } from '../domain/logger';
import { startInternalContext } from '../domain/internalContext';
export function startLogs(configuration, getCommonContext, mainLogger) {
var lifeCycle = new LifeCycle();
var telemetry = startLogsTelemetry(configuration);
var reportError = function (error) {
return lifeCycle.notify(0 /* RAW_LOG_COLLECTED */, {
rawLogsEvent: {
message: error.message,
date: error.startClocks.timeStamp,
error: {
origin: ErrorSource.AGENT, // Todo: Remove in the next major release
},
origin: ErrorSource.AGENT,
status: StatusType.error,
},
});
};
var telemetry = startLogsTelemetry(configuration, reportError);
telemetry.setContextProvider(function () {

@@ -42,5 +56,5 @@ var _a, _b, _c, _d, _e, _f;

: startLogsSessionManagerStub(configuration);
startLogsAssembly(session, configuration, lifeCycle, getCommonContext, mainLogger);
startLogsAssembly(session, configuration, lifeCycle, getCommonContext, mainLogger, reportError);
if (!canUseEventBridge()) {
startLogsBatch(configuration, lifeCycle);
startLogsBatch(configuration, lifeCycle, reportError);
}

@@ -56,3 +70,3 @@ else {

}
function startLogsTelemetry(configuration) {
function startLogsTelemetry(configuration, reportError) {
var _a;

@@ -65,3 +79,3 @@ var telemetry = startTelemetry(configuration);

else {
var telemetryBatch_1 = startBatchWithReplica(configuration, configuration.rumEndpointBuilder, (_a = configuration.replica) === null || _a === void 0 ? void 0 : _a.rumEndpointBuilder);
var telemetryBatch_1 = startBatchWithReplica(configuration, configuration.rumEndpointBuilder, reportError, (_a = configuration.replica) === null || _a === void 0 ? void 0 : _a.rumEndpointBuilder);
telemetry.observable.subscribe(function (event) { return telemetryBatch_1.add(event, isTelemetryReplicationAllowed(configuration)); });

@@ -68,0 +82,0 @@ }

@@ -1,2 +0,2 @@

import type { Context, RelativeTime } from '@datadog/browser-core';
import type { Context, RawError, RelativeTime } from '@datadog/browser-core';
import type { CommonContext } from '../rawLogsEvent.types';

@@ -7,4 +7,5 @@ import type { LogsConfiguration } from './configuration';

import type { LogsSessionManager } from './logsSessionManager';
export declare function startLogsAssembly(sessionManager: LogsSessionManager, configuration: LogsConfiguration, lifeCycle: LifeCycle, getCommonContext: () => CommonContext, mainLogger: Logger): void;
export declare function startLogsAssembly(sessionManager: LogsSessionManager, configuration: LogsConfiguration, lifeCycle: LifeCycle, getCommonContext: () => CommonContext, mainLogger: Logger, // Todo: [RUMF-1230] Remove this parameter in the next major release
reportError: (error: RawError) => void): void;
export declare function getRUMInternalContext(startTime?: RelativeTime): Context | undefined;
export declare function resetRUMInternalContext(): void;
import { getSyntheticsResultId, getSyntheticsTestId, addTelemetryDebug, willSyntheticsInjectRum, ErrorSource, combine, createEventRateLimiter, getRelativeTime, } from '@datadog/browser-core';
import { STATUSES, HandlerType } from './logger';
import { isAuthorized } from './logsCollection/logger/loggerCollection';
import { reportAgentError } from './reportAgentError';
export function startLogsAssembly(sessionManager, configuration, lifeCycle, getCommonContext, mainLogger // Todo: [RUMF-1230] Remove this parameter in the next major release
) {
export function startLogsAssembly(sessionManager, configuration, lifeCycle, getCommonContext, mainLogger, // Todo: [RUMF-1230] Remove this parameter in the next major release
reportError) {
var statusWithCustom = STATUSES.concat(['custom']);
var logRateLimiters = {};
statusWithCustom.forEach(function (status) {
logRateLimiters[status] = createEventRateLimiter(status, configuration.eventRateLimiterThreshold, function (error) { return reportAgentError(error, lifeCycle); });
logRateLimiters[status] = createEventRateLimiter(status, configuration.eventRateLimiterThreshold, reportError);
});

@@ -12,0 +11,0 @@ lifeCycle.subscribe(0 /* RAW_LOG_COLLECTED */, function (_a) {

@@ -1,6 +0,6 @@

import { assign, ONE_KILO_BYTE, validateAndBuildConfiguration, display, removeDuplicates, ConsoleApiName, RawReportType, includes, objectValues, } from '@datadog/browser-core';
import { assign, ONE_KIBI_BYTE, validateAndBuildConfiguration, display, removeDuplicates, ConsoleApiName, RawReportType, includes, objectValues, } from '@datadog/browser-core';
/**
* arbitrary value, byte precision not needed
*/
export var DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT = 32 * ONE_KILO_BYTE;
export var DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT = 32 * ONE_KIBI_BYTE;
export function validateAndBuildLogsConfiguration(initConfiguration) {

@@ -7,0 +7,0 @@ var baseConfiguration = validateAndBuildConfiguration(initConfiguration);

@@ -0,3 +1,4 @@

import type { RawError } from '@datadog/browser-core';
import type { LogsConfiguration } from '../domain/configuration';
import type { LifeCycle } from '../domain/lifeCycle';
export declare function startLogsBatch(configuration: LogsConfiguration, lifeCycle: LifeCycle): void;
export declare function startLogsBatch(configuration: LogsConfiguration, lifeCycle: LifeCycle, reportError: (error: RawError) => void): void;
import { startBatchWithReplica } from '@datadog/browser-core';
export function startLogsBatch(configuration, lifeCycle) {
export function startLogsBatch(configuration, lifeCycle, reportError) {
var _a;
var batch = startBatchWithReplica(configuration, configuration.logsEndpointBuilder, (_a = configuration.replica) === null || _a === void 0 ? void 0 : _a.logsEndpointBuilder);
var batch = startBatchWithReplica(configuration, configuration.logsEndpointBuilder, reportError, (_a = configuration.replica) === null || _a === void 0 ? void 0 : _a.logsEndpointBuilder);
lifeCycle.subscribe(1 /* LOG_COLLECTED */, function (serverLogsEvent) {

@@ -6,0 +6,0 @@ batch.add(serverLogsEvent);

{
"name": "@datadog/browser-logs",
"version": "4.18.1",
"version": "4.19.0",
"license": "Apache-2.0",

@@ -16,6 +16,6 @@ "main": "cjs/entries/main.js",

"dependencies": {
"@datadog/browser-core": "4.18.1"
"@datadog/browser-core": "4.19.0"
},
"peerDependencies": {
"@datadog/browser-rum": "4.18.1"
"@datadog/browser-rum": "4.19.0"
},

@@ -36,3 +36,3 @@ "peerDependenciesMeta": {

},
"gitHead": "bd833602495172229db1e133b89a9f2b0b8eea9e"
"gitHead": "ca69e8adb69cc9fb3913ff1c32518ee1e5a5ffa7"
}

@@ -1,2 +0,2 @@

import type { Context, TelemetryEvent } from '@datadog/browser-core'
import type { Context, TelemetryEvent, RawError } from '@datadog/browser-core'
import {

@@ -10,2 +10,3 @@ willSyntheticsInjectRum,

isTelemetryReplicationAllowed,
ErrorSource,
} from '@datadog/browser-core'

@@ -19,8 +20,9 @@ import { startLogsSessionManager, startLogsSessionManagerStub } from '../domain/logsSessionManager'

import { startRuntimeErrorCollection } from '../domain/logsCollection/runtimeError/runtimeErrorCollection'
import { LifeCycle } from '../domain/lifeCycle'
import { LifeCycle, LifeCycleEventType } from '../domain/lifeCycle'
import { startLoggerCollection } from '../domain/logsCollection/logger/loggerCollection'
import type { CommonContext } from '../rawLogsEvent.types'
import type { CommonContext, RawAgentLogsEvent } from '../rawLogsEvent.types'
import { startLogsBatch } from '../transport/startLogsBatch'
import { startLogsBridge } from '../transport/startLogsBridge'
import type { Logger } from '../domain/logger'
import { StatusType } from '../domain/logger'
import { startInternalContext } from '../domain/internalContext'

@@ -31,3 +33,15 @@

const telemetry = startLogsTelemetry(configuration)
const reportError = (error: RawError) =>
lifeCycle.notify<RawAgentLogsEvent>(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: {
message: error.message,
date: error.startClocks.timeStamp,
error: {
origin: ErrorSource.AGENT, // Todo: Remove in the next major release
},
origin: ErrorSource.AGENT,
status: StatusType.error,
},
})
const telemetry = startLogsTelemetry(configuration, reportError)
telemetry.setContextProvider(() => ({

@@ -59,6 +73,6 @@ application: {

startLogsAssembly(session, configuration, lifeCycle, getCommonContext, mainLogger)
startLogsAssembly(session, configuration, lifeCycle, getCommonContext, mainLogger, reportError)
if (!canUseEventBridge()) {
startLogsBatch(configuration, lifeCycle)
startLogsBatch(configuration, lifeCycle, reportError)
} else {

@@ -76,3 +90,3 @@ startLogsBridge(lifeCycle)

function startLogsTelemetry(configuration: LogsConfiguration) {
function startLogsTelemetry(configuration: LogsConfiguration, reportError: (error: RawError) => void) {
const telemetry = startTelemetry(configuration)

@@ -86,2 +100,3 @@ if (canUseEventBridge()) {

configuration.rumEndpointBuilder,
reportError,
configuration.replica?.rumEndpointBuilder

@@ -88,0 +103,0 @@ )

@@ -15,19 +15,18 @@ import type { Context, RelativeTime, TelemetryEvent, TimeStamp } from '@datadog/browser-core'

const initConfiguration = { clientToken: 'xxx', service: 'service' }
const SESSION_ID = 'session-id'
const DEFAULT_MESSAGE = {
status: StatusType.info,
message: 'message',
origin: ErrorSource.LOGGER,
date: 123456 as TimeStamp,
}
const COMMON_CONTEXT: CommonContext = {
view: {
referrer: 'referrer_from_common_context',
url: 'url_from_common_context',
},
context: { common_context_key: 'common_context_value' },
}
describe('startLogsAssembly', () => {
const SESSION_ID = 'session-id'
const DEFAULT_MESSAGE = {
status: StatusType.info,
message: 'message',
origin: ErrorSource.LOGGER,
date: 123456 as TimeStamp,
}
const COMMON_CONTEXT: CommonContext = {
view: {
referrer: 'referrer_from_common_context',
url: 'url_from_common_context',
},
context: { common_context_key: 'common_context_value' },
}
const sessionManager: LogsSessionManager = {

@@ -49,4 +48,2 @@ findTrackedSession: () => (sessionIsTracked ? { id: SESSION_ID } : undefined),

...validateAndBuildLogsConfiguration(initConfiguration)!,
maxBatchSize: 1,
eventRateLimiterThreshold: 1,
beforeSend: (x: LogsEvent) => beforeSend(x),

@@ -56,3 +53,3 @@ }

mainLogger = new Logger(() => noop)
startLogsAssembly(sessionManager, configuration, lifeCycle, () => COMMON_CONTEXT, mainLogger)
startLogsAssembly(sessionManager, configuration, lifeCycle, () => COMMON_CONTEXT, mainLogger, noop)
window.DD_RUM = {

@@ -277,134 +274,169 @@ getInternalContext: noop,

})
})
describe('logs limitation', () => {
let clock: Clock
describe('logs limitation', () => {
let clock: Clock
const sessionManager = {
findTrackedSession: () => ({ id: SESSION_ID }),
}
beforeEach(() => {
clock = mockClock()
})
let beforeSend: (event: LogsEvent) => void | boolean
let lifeCycle: LifeCycle
let serverLogs: Array<LogsEvent & Context> = []
let mainLogger: Logger
let reportErrorSpy: jasmine.Spy<jasmine.Func>
afterEach(() => {
clock.cleanup()
})
;[
{ status: StatusType.error, messageContext: {}, message: 'Reached max number of errors by minute: 1' },
{ status: StatusType.warn, messageContext: {}, message: 'Reached max number of warns by minute: 1' },
{ status: StatusType.info, messageContext: {}, message: 'Reached max number of infos by minute: 1' },
{ status: StatusType.debug, messageContext: {}, message: 'Reached max number of debugs by minute: 1' },
{
status: StatusType.debug,
messageContext: { status: 'unknown' }, // overrides the rawLogsEvent status
message: 'Reached max number of customs by minute: 1',
},
].forEach(({ status, message, messageContext }) => {
it(`stops sending ${status} logs when reaching the limit`, () => {
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'foo', status },
messageContext,
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'bar', status },
messageContext,
})
beforeEach(() => {
lifeCycle = new LifeCycle()
lifeCycle.subscribe(LifeCycleEventType.LOG_COLLECTED, (serverRumEvent) => serverLogs.push(serverRumEvent))
const configuration = {
...validateAndBuildLogsConfiguration(initConfiguration)!,
maxBatchSize: 1,
eventRateLimiterThreshold: 1,
beforeSend: (x: LogsEvent) => beforeSend(x),
}
beforeSend = noop
mainLogger = new Logger(() => noop)
reportErrorSpy = jasmine.createSpy('reportError')
startLogsAssembly(sessionManager, configuration, lifeCycle, () => COMMON_CONTEXT, mainLogger, reportErrorSpy)
clock = mockClock()
})
expect(serverLogs.length).toEqual(2)
expect(serverLogs[0].message).toBe('foo')
expect(serverLogs[1]).toEqual(
jasmine.objectContaining({
message,
error: {
origin: ErrorSource.AGENT,
},
origin: ErrorSource.AGENT,
})
)
afterEach(() => {
clock.cleanup()
serverLogs = []
})
;[
{ status: StatusType.error, messageContext: {}, message: 'Reached max number of errors by minute: 1' },
{ status: StatusType.warn, messageContext: {}, message: 'Reached max number of warns by minute: 1' },
{ status: StatusType.info, messageContext: {}, message: 'Reached max number of infos by minute: 1' },
{ status: StatusType.debug, messageContext: {}, message: 'Reached max number of debugs by minute: 1' },
{
status: StatusType.debug,
messageContext: { status: 'unknown' }, // overrides the rawLogsEvent status
message: 'Reached max number of customs by minute: 1',
},
].forEach(({ status, message, messageContext }) => {
it(`stops sending ${status} logs when reaching the limit`, () => {
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'foo', status },
messageContext,
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'bar', status },
messageContext,
})
it(`does not take discarded ${status} logs into account`, () => {
beforeSend = (event) => {
if (event.message === 'discard me') {
return false
}
expect(serverLogs.length).toEqual(1)
expect(serverLogs[0].message).toBe('foo')
expect(reportErrorSpy).toHaveBeenCalledTimes(1)
expect(reportErrorSpy.calls.argsFor(0)[0]).toEqual(
jasmine.objectContaining({
message,
source: ErrorSource.AGENT,
})
)
})
it(`does not take discarded ${status} logs into account`, () => {
beforeSend = (event) => {
if (event.message === 'discard me') {
return false
}
}
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'discard me', status },
messageContext,
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'discard me', status },
messageContext,
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'discard me', status },
messageContext,
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'foo', status },
messageContext,
})
expect(serverLogs.length).toEqual(1)
expect(serverLogs[0].message).toBe('foo')
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'discard me', status },
messageContext,
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'discard me', status },
messageContext,
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'discard me', status },
messageContext,
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'foo', status },
messageContext,
})
it(`allows to send new ${status}s after a minute`, () => {
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'foo', status },
messageContext,
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'bar', status },
messageContext,
})
clock.tick(ONE_MINUTE)
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'baz', status },
messageContext,
})
expect(serverLogs.length).toEqual(1)
expect(serverLogs[0].message).toBe('foo')
})
expect(serverLogs.length).toEqual(3)
expect(serverLogs[0].message).toEqual('foo')
expect(serverLogs[1].error!.origin).toEqual(ErrorSource.AGENT)
expect(serverLogs[2].message).toEqual('baz')
it(`allows to send new ${status}s after a minute`, () => {
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'foo', status },
messageContext,
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'bar', status },
messageContext,
})
clock.tick(ONE_MINUTE)
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'baz', status },
messageContext,
})
it('allows to send logs with a different status when reaching the limit', () => {
const otherLogStatus = status === StatusType.error ? StatusType.info : StatusType.error
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'foo', status },
messageContext,
expect(serverLogs.length).toEqual(2)
expect(serverLogs[0].message).toEqual('foo')
expect(serverLogs[1].message).toEqual('baz')
expect(reportErrorSpy).toHaveBeenCalledTimes(1)
expect(reportErrorSpy.calls.argsFor(0)[0]).toEqual(
jasmine.objectContaining({
source: ErrorSource.AGENT,
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'bar', status },
messageContext,
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'baz', status: otherLogStatus },
...{ ...messageContext, status: otherLogStatus },
})
expect(serverLogs.length).toEqual(3)
expect(serverLogs[0].message).toEqual('foo')
expect(serverLogs[1].error!.origin).toEqual(ErrorSource.AGENT)
expect(serverLogs[2].message).toEqual('baz')
})
)
})
it('two different custom statuses are accounted by the same limit', () => {
it('allows to send logs with a different status when reaching the limit', () => {
const otherLogStatus = status === StatusType.error ? StatusType.info : StatusType.error
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'foo', status: StatusType.info },
messageContext: { status: 'foo' },
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'foo', status },
messageContext,
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'bar', status: StatusType.info },
messageContext: { status: 'bar' },
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'bar', status },
messageContext,
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'baz', status: otherLogStatus },
...{ ...messageContext, status: otherLogStatus },
})
expect(serverLogs.length).toEqual(2)
expect(serverLogs[0].message).toEqual('foo')
expect(serverLogs[1].error!.origin).toEqual(ErrorSource.AGENT)
expect(serverLogs[1].message).toEqual('baz')
expect(reportErrorSpy).toHaveBeenCalledTimes(1)
expect(reportErrorSpy.calls.argsFor(0)[0]).toEqual(
jasmine.objectContaining({
source: ErrorSource.AGENT,
})
)
})
})
it('two different custom statuses are accounted by the same limit', () => {
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'foo', status: StatusType.info },
messageContext: { status: 'foo' },
})
lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
rawLogsEvent: { ...DEFAULT_MESSAGE, message: 'bar', status: StatusType.info },
messageContext: { status: 'bar' },
})
expect(serverLogs.length).toEqual(1)
expect(serverLogs[0].message).toEqual('foo')
expect(reportErrorSpy).toHaveBeenCalledTimes(1)
expect(reportErrorSpy.calls.argsFor(0)[0]).toEqual(
jasmine.objectContaining({
source: ErrorSource.AGENT,
})
)
})
})

@@ -411,0 +443,0 @@

@@ -20,3 +20,2 @@ import type { Context, EventRateLimiter, RawError, RelativeTime } from '@datadog/browser-core'

import type { LogsSessionManager } from './logsSessionManager'
import { reportAgentError } from './reportAgentError'

@@ -28,3 +27,4 @@ export function startLogsAssembly(

getCommonContext: () => CommonContext,
mainLogger: Logger // Todo: [RUMF-1230] Remove this parameter in the next major release
mainLogger: Logger, // Todo: [RUMF-1230] Remove this parameter in the next major release
reportError: (error: RawError) => void
) {

@@ -34,7 +34,3 @@ const statusWithCustom = (STATUSES as string[]).concat(['custom'])

statusWithCustom.forEach((status) => {
logRateLimiters[status] = createEventRateLimiter(
status,
configuration.eventRateLimiterThreshold,
(error: RawError) => reportAgentError(error, lifeCycle)
)
logRateLimiters[status] = createEventRateLimiter(status, configuration.eventRateLimiterThreshold, reportError)
})

@@ -41,0 +37,0 @@

import type { Configuration, InitConfiguration } from '@datadog/browser-core'
import {
assign,
ONE_KILO_BYTE,
ONE_KIBI_BYTE,
validateAndBuildConfiguration,

@@ -34,3 +34,3 @@ display,

*/
export const DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT = 32 * ONE_KILO_BYTE
export const DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT = 32 * ONE_KIBI_BYTE

@@ -37,0 +37,0 @@ export function validateAndBuildLogsConfiguration(

@@ -1,2 +0,2 @@

import type { Context } from '@datadog/browser-core'
import type { Context, RawError } from '@datadog/browser-core'
import { startBatchWithReplica } from '@datadog/browser-core'

@@ -8,6 +8,11 @@ import type { LogsConfiguration } from '../domain/configuration'

export function startLogsBatch(configuration: LogsConfiguration, lifeCycle: LifeCycle) {
export function startLogsBatch(
configuration: LogsConfiguration,
lifeCycle: LifeCycle,
reportError: (error: RawError) => void
) {
const batch = startBatchWithReplica(
configuration,
configuration.logsEndpointBuilder,
reportError,
configuration.replica?.logsEndpointBuilder

@@ -14,0 +19,0 @@ )

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc