@cloudcare/browser-logs 1.2.10 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- !function(){"use strict";var e=Array.prototype,t=Function.prototype,r=Object.prototype,n=e.slice,o=r.toString,i=r.hasOwnProperty,s=(t.bind,e.forEach),a=(e.indexOf,Array.isArray),u=function(e,t,r){if(null===e)return!1;if(s&&e.forEach===s)e.forEach(t,r);else if(e.length===+e.length){for(var n=0,o=e.length;n<o;n++)if(n in e&&false===t.call(r,e[n],n,e))return!1}else for(var a in e)if(i.call(e,a)&&false===t.call(r,e[a],a,e))return!1};function c(e){return u(n.call(arguments,1),(function(t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})),e}var f=function(e){return u(n.call(arguments,1),(function(t){for(var r in t)void 0!==t[r]&&(e[r]=t[r])})),e},l=function(e){return u(n.call(arguments,1),(function(t){for(var r in t)void 0!==t[r]&&(b(t[r])&&b(e[r])?f(e[r],t[r]):e[r]=t[r])})),e},d=a||function(e){return"[object Array]"===o.call(e)},p=function(e){if(!e)return!1;try{return/^\s*\bfunction\b/.test(e)}catch(e){return!1}},v=function(e){var t=[];return null===e||u(e,(function(e){t[t.length]=e})),t},h=function(e,t,r){if(e.filter)return e.filter(t);for(var n=[],o=0;o<e.length;o++)if(i.call(e,o)){var s=e[o];t.call(r,s,o,e)&&n.push(s)}return n},g=function(e,t,r){if(e.map)return e.map(t);for(var n=[],o=0;o<e.length;o++)if(i.call(e,o)){var s=e[o];n.push(t.call(r,s,o,e))}return n},b=function(e){return null!==e&&"[object Object]"===o.call(e)},m=function(e){if(b(e)){for(var t in e)if(i.call(e,t))return!1;return!0}return!1},y=function(e){return"[object String]"===o.call(e)},w=function(e){return"[object Boolean]"===o.call(e)},_=function(e){return"[object Number]"===o.call(e)&&/[\d\.]+/.test(String(e))},x=(Date.now,function(e,t,r){var n,o,i,s,a=0;r||(r={});var u=function(){a=!1===r.leading?0:(new Date).getTime(),n=null,s=e.apply(o,i),n||(o=i=null)},c=function(){i=arguments;var c=(new Date).getTime();a||!1!==r.leading||(a=c);var f=t-(c-a);return o=this,f<=0||f>t?(n&&(clearTimeout(n),n=null),a=c,s=e.apply(o,i),n||(o=i=null)):n||!1===r.trailing||(n=setTimeout(u,f)),s};return c.cancel=function(){clearTimeout(n),a=0,n=null},c});function O(e){return e?(parseInt(e,10)^16*Math.random()>>parseInt(e,10)/4).toString(16):"".concat(1e7,"-",1e3,"-",4e3,"-",8e3,"-",1e11).replace(/[018]/g,O)}function S(e,t,r){if(void 0===r&&(r=function(){if("undefined"!=typeof WeakSet){var e=new WeakSet;return{hasAlreadyBeenSeen:function(t){var r=e.has(t);return r||e.add(t),r}}}var t=[];return{hasAlreadyBeenSeen:function(e){var r=t.indexOf(e)>=0;return r||t.push(e),r}}}()),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 n=t.flags||[t.global?"g":"",t.ignoreCase?"i":"",t.multiline?"m":"",t.sticky?"y":"",t.unicode?"u":""].join("");return new RegExp(t.source,n)}if(!r.hasAlreadyBeenSeen(t)){if(Array.isArray(t)){for(var o=Array.isArray(e)?e:[],i=0;i<t.length;++i)o[i]=S(o[i],t[i],r);return o}var s;o="object"==(null===(s=e)?"null":Array.isArray(s)?"array":typeof s)?e:{};for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(o[a]=S(o[a],t[a],r));return o}}function E(e){return S(void 0,e)}function k(e,t,r){if(null==e)return JSON.stringify(e);var n=[!1,void 0];C(e)&&(n=[!0,e.toJSON],delete e.toJSON);var o,i,s=[!1,void 0];"object"==typeof e&&C(o=Object.getPrototypeOf(e))&&(s=[!0,o.toJSON],delete o.toJSON);try{i=JSON.stringify(e,void 0,r)}catch(e){i="<error: unable to serialize object>"}finally{n[0]&&(e.toJSON=n[1]),s[0]&&(o.toJSON=s[1])}return i}function C(e){return"object"==typeof e&&null!==e&&e.hasOwnProperty("toJSON")}function T(){}var $,L=1e3,B=6e4;function M(e,t){return+e.toFixed(t)}function R(){return performance.now()}function U(){return{relative:R(),timeStamp:A()}}function A(){return I()}function I(){return(new Date).getTime()}function P(e,t){return t-e}function F(){return void 0===$&&($=performance.timing.navigationStart),$}function D(e,t){for(var r=t.split(".");r.length;){var n=r.shift();if(!(e&&n in e&&i.call(e,n)))return;e=e[n]}return e}function j(e,t){var r=e.charCodeAt(t-1);return r>=55296&&r<=56319?e.slice(0,t+1):e.slice(0,t)}function q(e,t,r,n){return Q(e,[t],r,n)}function Q(e,t,r,n){var o=n&&n.once?function(e){i(),r(e)}:r;n=n&&n.passive?{capture:n.capture,passive:n.passive}:n&&n.capture,u(t,(function(t){e.addEventListener(t,o,n)}));var i=function(){u(t,(function(t){e.removeEventListener(t,o,n)}))};return{stop:i}}function V(e,t){return-1!==e.indexOf(t)}function W(){var e={};return{get:function(){return e},add:function(t,r){y(t)?e[t]=r:console.error("key 需要传递字符串类型")},remove:function(t){delete e[t]},set:function(t){b(t)?e=t:console.error("content 需要传递对象类型数据")},getContext:function(){return E(e)},setContext:function(t){e=E(t)},setContextProperty:function(t,r){e[t]=E(r)},removeContextProperty:function(t){delete e[t]},clearContext:function(){e={}}}}function N(e){var t={};return u(e,(function(e,r){var n;t[(n=r,n.replace(/[A-Z]/g,(function(e,t){return(0!==t?"_":"")+e.toLowerCase()})).replace(/-/g,"_"))]=G(e)})),t}function G(e){return d(e)?g(e,(function(e){return G(e)})):"object"==typeof e&&null!==e?N(e):e}function H(e){if("object"==typeof e&&e)e=k(e);else if(!y(e))return e;return String(e).replace(/[\s=,"]/g,(function(e){return"\\"+e}))}function X(e){return'"'+e.replace(/[\\]*"/g,'"').replace(/"/g,'\\"').replace(/\\/g,"\\\\")+'"'}function K(e){return"object"==typeof e&&e?X(k(e)):y(e)?X(e):e}function z(e,t){return null!=e?e:t}var Y=function(){this.buffer=[]};Y.prototype={add:function(e){this.buffer.push(e)>500&&this.buffer.splice(0,1)},drain:function(){u(this.buffer,(function(e){e()})),this.buffer.length=0}};var J=Y,Z=1/0;function ee(e){this.expireDelay=e,this.entries=[];var t=this;this.clearOldContextsInterval=setInterval((function(){t.clearOldContexts()}),6e4)}ee.prototype.add=function(e,t){var r=this,n={context:e,startTime:t,endTime:Z,remove:function(){var e=r.entries.indexOf(n);e>=0&&r.entries.splice(e,1)},close:function(e){n.endTime=e}};return this.entries.unshift(n),n},ee.prototype.find=function(e){void 0===e&&(e=Z);for(var t=0;t<this.entries.length;t++){var r=this.entries[t];if(r.startTime<=e){if(e<=r.endTime)return r.context;break}}},ee.prototype.closeActive=function(e){var t=this.entries[0];t&&t.endTime===Z&&t.close(e)},ee.prototype.findAll=function(e){void 0===e&&(e=Z);var t=h(this.entries,(function(t){return t.startTime<=e&&e<=t.endTime}));return g(t,(function(e){return e.context}))},ee.prototype.reset=function(){this.entries=[]},ee.prototype.stop=function(){clearInterval(this.clearOldContextsInterval)},ee.prototype.clearOldContexts=function(){for(var e=R()-this.expireDelay;this.entries.length>0&&this.entries[this.entries.length-1].endTime<e;)this.entries.pop()};var te={log:"log",debug:"debug",info:"info",warn:"warn",error:"error"},re=function e(t){var r=[].slice.call(arguments,1);Object.prototype.hasOwnProperty.call(te,t)||(t=te.log),e[t].apply(e,r)};re.debug=console.debug.bind(console),re.log=console.log.bind(console),re.info=console.info.bind(console),re.warn=console.warn.bind(console),re.error=console.error.bind(console);var ne={navigator:void 0!==window.navigator?window.navigator:{},infoMap:{engine:["WebKit","Trident","Gecko","Presto"],browser:["Safari","Chrome","Edge","IE","IE 11","IE 10","IE 9","IE 8","IE 7","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Arora","Lunascape","QupZilla","Coc Coc","Kindle","Iceweasel","Konqueror","Iceape","SeaMonkey","Epiphany","360","360SE","360EE","UC","QQBrowser","QQ","Baidu","Maxthon","Sogou","LBBROWSER","2345Explorer","TheWorld","XiaoMi","Quark","Qiyu","Wechat",,"WechatWork","Taobao","Alipay","Weibo","Douban","Suning","iQiYi"],os:["Windows","Linux","Mac OS","Android","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"],device:["Mobile","Tablet","iPad"]}},oe={getMatchMap:function(e){return{Trident:e.indexOf("Trident")>-1||e.indexOf("NET CLR")>-1,Presto:e.indexOf("Presto")>-1,WebKit:e.indexOf("AppleWebKit")>-1,Gecko:e.indexOf("Gecko/")>-1,Safari:e.indexOf("Safari")>-1,Chrome:e.indexOf("Chrome")>-1||e.indexOf("CriOS")>-1,IE:e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1,Edge:e.indexOf("Edge")>-1,Firefox:e.indexOf("Firefox")>-1||e.indexOf("FxiOS")>-1,"Firefox Focus":e.indexOf("Focus")>-1,Chromium:e.indexOf("Chromium")>-1,Opera:e.indexOf("Opera")>-1||e.indexOf("OPR")>-1,Vivaldi:e.indexOf("Vivaldi")>-1,Yandex:e.indexOf("YaBrowser")>-1,Arora:e.indexOf("Arora")>-1,Lunascape:e.indexOf("Lunascape")>-1,QupZilla:e.indexOf("QupZilla")>-1,"Coc Coc":e.indexOf("coc_coc_browser")>-1,Kindle:e.indexOf("Kindle")>-1||e.indexOf("Silk/")>-1,Iceweasel:e.indexOf("Iceweasel")>-1,Konqueror:e.indexOf("Konqueror")>-1,Iceape:e.indexOf("Iceape")>-1,SeaMonkey:e.indexOf("SeaMonkey")>-1,Epiphany:e.indexOf("Epiphany")>-1,360:e.indexOf("QihooBrowser")>-1||e.indexOf("QHBrowser")>-1,"360EE":e.indexOf("360EE")>-1,"360SE":e.indexOf("360SE")>-1,UC:e.indexOf("UC")>-1||e.indexOf(" UBrowser")>-1,QQBrowser:e.indexOf("QQBrowser")>-1,QQ:e.indexOf("QQ/")>-1,Baidu:e.indexOf("Baidu")>-1||e.indexOf("BIDUBrowser")>-1,Maxthon:e.indexOf("Maxthon")>-1,Sogou:e.indexOf("MetaSr")>-1||e.indexOf("Sogou")>-1,LBBROWSER:e.indexOf("LBBROWSER")>-1,"2345Explorer":e.indexOf("2345Explorer")>-1,TheWorld:e.indexOf("TheWorld")>-1,XiaoMi:e.indexOf("MiuiBrowser")>-1,Quark:e.indexOf("Quark")>-1,Qiyu:e.indexOf("Qiyu")>-1,Wechat:e.indexOf("MicroMessenger")>-1,Taobao:e.indexOf("AliApp(TB")>-1,Alipay:e.indexOf("AliApp(AP")>-1,Weibo:e.indexOf("Weibo")>-1,Douban:e.indexOf("com.douban.frodo")>-1,Suning:e.indexOf("SNEBUY-APP")>-1,iQiYi:e.indexOf("IqiyiApp")>-1,Windows:e.indexOf("Windows")>-1,Linux:e.indexOf("Linux")>-1||e.indexOf("X11")>-1,"Mac OS":e.indexOf("Macintosh")>-1,Android:e.indexOf("Android")>-1||e.indexOf("Adr")>-1,Ubuntu:e.indexOf("Ubuntu")>-1,FreeBSD:e.indexOf("FreeBSD")>-1,Debian:e.indexOf("Debian")>-1,"Windows Phone":e.indexOf("IEMobile")>-1||e.indexOf("Windows Phone")>-1,BlackBerry:e.indexOf("BlackBerry")>-1||e.indexOf("RIM")>-1,MeeGo:e.indexOf("MeeGo")>-1,Symbian:e.indexOf("Symbian")>-1,iOS:e.indexOf("like Mac OS X")>-1,"Chrome OS":e.indexOf("CrOS")>-1,WebOS:e.indexOf("hpwOS")>-1,Mobile:e.indexOf("Mobi")>-1||e.indexOf("iPh")>-1||e.indexOf("480")>-1,Tablet:e.indexOf("Tablet")>-1||e.indexOf("Nexus 7")>-1,iPad:e.indexOf("iPad")>-1}},matchInfoMap:function(e){var t=ne.navigator.userAgent||{},r=oe.getMatchMap(t);for(var n in ne.infoMap)for(var o=0;o<ne.infoMap[n].length;o++){var i=ne.infoMap[n][o];r[i]&&(e[n]=i)}},getOS:function(){return oe.matchInfoMap(this),this.os||"Unknown"},getOSVersion:function(){var e=this,t=ne.navigator.userAgent||{};e.osVersion="",e.osMajor="";var r={Windows:function(){var e=t.replace(/^.*Windows NT ([\d.]+);.*$/,"$1");return{6.4:"10",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP",5.1:"XP","5.0":"2000"}[e]||e},Android:function(){return t.replace(/^.*Android ([\d.]+);.*$/,"$1")},iOS:function(){return t.replace(/^.*OS ([\d_]+) like.*$/,"$1").replace(/_/g,".")},Debian:function(){return t.replace(/^.*Debian\/([\d.]+).*$/,"$1")},"Windows Phone":function(){return t.replace(/^.*Windows Phone( OS)? ([\d.]+);.*$/,"$2")},"Mac OS":function(){return t.replace(/^.*Mac OS X ([\d_]+).*$/,"$1").replace(/_/g,".")},WebOS:function(){return t.replace(/^.*hpwOS\/([\d.]+);.*$/,"$1")}};return r[e.os]&&(e.osVersion=r[e.os](),e.osVersion===t&&(e.osVersion="")),e.osVersion&&(e.osMajor=e.osVersion.split(".").length&&e.osVersion.split(".")[0]),{version:e.osVersion,osMajor:e.osMajor}},getOrientationStatu:function(){return window.matchMedia("(orientation: portrait)").matches?"竖屏":"横屏"},getDeviceType:function(){var e=this;return e.device="PC",oe.matchInfoMap(e),e.device},getNetwork:function(){return navigator&&navigator.connection&&navigator.connection.effectiveType},getLanguage:function(){var e;return this.language=((e=(ne.navigator.browserLanguage||ne.navigator.language).split("-"))[1]&&(e[1]=e[1].toUpperCase()),e.join("_")),this.language},getBrowserInfo:function(){var e=this;oe.matchInfoMap(e);var t=ne.navigator.userAgent||{},r=function(e,t){var r=ne.navigator.mimeTypes;for(var n in r)if(r[n][e]==t)return!0;return!1},n=oe.getMatchMap(t),o=!1;if(window.chrome){var i=t.replace(/^.*Chrome\/([\d]+).*$/,"$1");i>36&&window.showModalDialog?o=!0:i>45&&(o=r("type","application/vnd.chromium.remoting-viewer"))}if(n.Baidu&&n.Opera&&(n.Baidu=!1),n.Mobile&&(n.Mobile=!(t.indexOf("iPad")>-1)),o&&(r("type","application/gameplugin")||ne.navigator&&void 0===ne.navigator.connection.saveData?n["360SE"]=!0:n["360EE"]=!0),n.IE||n.Edge)switch(window.screenTop-window.screenY){case 71:case 74:case 99:case 75:case 74:case 105:default:break;case 102:n["360EE"]=!0;break;case 104:n["360SE"]=!0}var s={Safari:function(){return t.replace(/^.*Version\/([\d.]+).*$/,"$1")},Chrome:function(){return t.replace(/^.*Chrome\/([\d.]+).*$/,"$1").replace(/^.*CriOS\/([\d.]+).*$/,"$1")},IE:function(){return t.replace(/^.*MSIE ([\d.]+).*$/,"$1").replace(/^.*rv:([\d.]+).*$/,"$1")},Edge:function(){return t.replace(/^.*Edge\/([\d.]+).*$/,"$1")},Firefox:function(){return t.replace(/^.*Firefox\/([\d.]+).*$/,"$1").replace(/^.*FxiOS\/([\d.]+).*$/,"$1")},"Firefox Focus":function(){return t.replace(/^.*Focus\/([\d.]+).*$/,"$1")},Chromium:function(){return t.replace(/^.*Chromium\/([\d.]+).*$/,"$1")},Opera:function(){return t.replace(/^.*Opera\/([\d.]+).*$/,"$1").replace(/^.*OPR\/([\d.]+).*$/,"$1")},Vivaldi:function(){return t.replace(/^.*Vivaldi\/([\d.]+).*$/,"$1")},Yandex:function(){return t.replace(/^.*YaBrowser\/([\d.]+).*$/,"$1")},Arora:function(){return t.replace(/^.*Arora\/([\d.]+).*$/,"$1")},Lunascape:function(){return t.replace(/^.*Lunascape[\/\s]([\d.]+).*$/,"$1")},QupZilla:function(){return t.replace(/^.*QupZilla[\/\s]([\d.]+).*$/,"$1")},"Coc Coc":function(){return t.replace(/^.*coc_coc_browser\/([\d.]+).*$/,"$1")},Kindle:function(){return t.replace(/^.*Version\/([\d.]+).*$/,"$1")},Iceweasel:function(){return t.replace(/^.*Iceweasel\/([\d.]+).*$/,"$1")},Konqueror:function(){return t.replace(/^.*Konqueror\/([\d.]+).*$/,"$1")},Iceape:function(){return t.replace(/^.*Iceape\/([\d.]+).*$/,"$1")},SeaMonkey:function(){return t.replace(/^.*SeaMonkey\/([\d.]+).*$/,"$1")},Epiphany:function(){return t.replace(/^.*Epiphany\/([\d.]+).*$/,"$1")},360:function(){return t.replace(/^.*QihooBrowser\/([\d.]+).*$/,"$1")},"360SE":function(){return{63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[t.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"360EE":function(){return{69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[t.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},Maxthon:function(){return t.replace(/^.*Maxthon\/([\d.]+).*$/,"$1")},QQBrowser:function(){return t.replace(/^.*QQBrowser\/([\d.]+).*$/,"$1")},QQ:function(){return t.replace(/^.*QQ\/([\d.]+).*$/,"$1")},Baidu:function(){return t.replace(/^.*BIDUBrowser[\s\/]([\d.]+).*$/,"$1")},UC:function(){return t.replace(/^.*UC?Browser\/([\d.]+).*$/,"$1")},Sogou:function(){return t.replace(/^.*SE ([\d.X]+).*$/,"$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/,"$1")},LBBROWSER:function(){var e="";t.indexOf("LieBaoFast")>-1&&(e=t.replace(/^.*LieBaoFast\/([\d.]+).*$/,"$1"));var r=t.replace(/^.*Chrome\/([\d]+).*$/,"$1");return e||{57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[r]||""},"2345Explorer":function(){return t.replace(/^.*2345Explorer\/([\d.]+).*$/,"$1")},TheWorld:function(){return t.replace(/^.*TheWorld ([\d.]+).*$/,"$1")},XiaoMi:function(){return t.replace(/^.*MiuiBrowser\/([\d.]+).*$/,"$1")},Quark:function(){return t.replace(/^.*Quark\/([\d.]+).*$/,"$1")},Qiyu:function(){return t.replace(/^.*Qiyu\/([\d.]+).*$/,"$1")},Wechat:function(){return t.replace(/^.*MicroMessenger\/([\d.]+).*$/,"$1")},WechatWork:function(){return t.replace(/^.*wxwork\/([\d.]+).*$/,"$1")},Taobao:function(){return t.replace(/^.*AliApp\(TB\/([\d.]+).*$/,"$1")},Alipay:function(){return t.replace(/^.*AliApp\(AP\/([\d.]+).*$/,"$1")},Weibo:function(){return t.replace(/^.*weibo__([\d.]+).*$/,"$1")},Douban:function(){return t.replace(/^.*com.douban.frodo\/([\d.]+).*$/,"$1")},Suning:function(){return t.replace(/^.*SNEBUY-APP([\d.]+).*$/,"$1")},iQiYi:function(){return t.replace(/^.*IqiyiVersion\/([\d.]+).*$/,"$1")}};return e.browserVersion="",e.browserMajor="",s[e.browser]&&(e.browserVersion=s[e.browser](),e.browserVersion==t&&(e.browserVersion="")),"Chrome"==e.browser&&t.match(/\S+Browser/)&&(e.browser=t.match(/\S+Browser/)[0],e.version=t.replace(/^.*Browser\/([\d.]+).*$/,"$1")),"Edge"==e.browser&&(e.version>"75"?e.engine="Blink":e.engine="EdgeHTML"),("Chrome"==e.browser&&parseInt(e.browserVersion)>27||n.Chrome&&"WebKit"==e.engine&&parseInt(e.browserVersion)>27||"Opera"==e.browser&&parseInt(e.version)>12||"Yandex"==e.browser)&&(e.engine="Blink"),e.browserVersion&&(e.browserMajor=e.browserVersion.split(".").length&&this.browserVersion.split(".")[0]),{browser:e.browser,browserVersion:e.browserVersion,engine:e.engine,browserMajor:e.browserMajor}},getGeoPostion:function(e){navigator&&navigator.geolocation&&navigator.geolocation.getCurrentPosition((function(t){e(t)}),(function(e){re.warn(e)}))}},ie={os:oe.getOS(),osVersion:oe.getOSVersion().version,osVersionMajor:oe.getOSVersion().osMajor,browser:oe.getBrowserInfo().browser,browserVersion:oe.getBrowserInfo().browserVersion,browserVersionMajor:oe.getBrowserInfo().browserMajor,screenSize:window.screen.width+"*"+window.screen.height,networkType:oe.getNetwork(),divice:oe.getDeviceType()},se="beforeunload",ae="click",ue="keydown",ce="scroll",fe="touchstart",le="visibilitychange",de="securitypolicyviolation",pe="action",ve="error",he="long_task",ge="view",be="resource",me="logger",ye={FETCH:"fetch",XHR:"xhr"},we="unhandled";function _e(e,t,r){var n=e[t],o=r(n),i=function(){if("function"==typeof o)return o.apply(this,arguments)};return e[t]=i,{stop:function(){e[t]===i?e[t]=n:o=n}}}function xe(e,t,r){return _e(e,t,(function(e){return function(){var t;return r&&r.before&&r.before.apply(this,arguments),"function"==typeof e&&(t=e.apply(this,arguments)),r&&r.after&&r.after.apply(this,arguments),t}}))}var Oe="?";function Se(e){var t=[],r=Me(e,"stack");return r&&u(r.split("\n"),(function(e){var r=function(e){var t=ke.exec(e);if(!t)return;var r=t[2]&&0===t[2].indexOf("native"),n=t[2]&&0===t[2].indexOf("eval"),o=Ce.exec(t[2]);n&&o&&(t[2]=o[1],t[3]=o[2],t[4]=o[3]);return{args:r?[t[2]]:[],column:t[4]?+t[4]:void 0,func:t[1]||Oe,line:t[3]?+t[3]:void 0,url:r?void 0:t[2]}}(e)||function(e){var t=Te.exec(e);if(!t)return;return{args:[],column:t[3]?+t[3]:void 0,func:Oe,line:t[2]?+t[2]:void 0,url:t[1]}}(e)||function(e){var t=$e.exec(e);if(!t)return;return{args:[],column:t[4]?+t[4]:void 0,func:t[1]||Oe,line:+t[3],url:t[2]}}(e)||function(e){var t=Le.exec(e);if(!t)return;var r=t[3]&&t[3].indexOf(" > eval")>-1,n=Be.exec(t[3]);r&&n&&(t[3]=n[1],t[4]=n[2],t[5]=void 0);return{args:t[2]?t[2].split(","):[],column:t[5]?+t[5]:void 0,func:t[1]||Oe,line:t[4]?+t[4]:void 0,url:t[3]}}(e);r&&(!r.func&&r.line&&(r.func=Oe),t.push(r))})),{message:Me(e,"message"),name:Me(e,"name"),stack:t}}var Ee="((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\w+\\.|\\/).*?)",ke=new RegExp("^\\s*at (.*?) ?\\("+Ee+"(?::(\\d+))?"+"(?::(\\d+))?\\)?\\s*$","i"),Ce=new RegExp("\\((\\S*)(?::(\\d+))(?::(\\d+))\\)");var Te=new RegExp("^\\s*at ?"+Ee+"(?::(\\d+))?"+"(?::(\\d+))??\\s*$","i");var $e=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;var Le=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,Be=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;function Me(e,t){if("object"==typeof e&&e&&t in e){var r=e[t];return"string"==typeof r?r:void 0}}var Re=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;function Ue(e){var t=function(e){return xe(window,"onerror",{before:function(t,r,n,o,i){var s;if(i)s=Se(i),e(s,i);else{var a,u={url:r,column:o,line:n},c=t;if("[object String]"==={}.toString.call(t)){var f=Re.exec(c);f&&(a=f[1],c=f[2])}e(s={name:a,message:"string"==typeof c?c:void 0,stack:[u]},t)}}})}(e),r=function(e){return xe(window,"onunhandledrejection",{before:function(t){var r=t.reason||"Empty reason",n=Se(r);e(n,r)}})}(e);return{stop:function(){t.stop(),r.stop()}}}var Ae={AGENT:"agent",CONSOLE:"console",NETWORK:"network",SOURCE:"source",LOGGER:"logger",CUSTOM:"custom"};function Ie(){var e=new Error;if(!e.stack)try{throw e}catch(e){}var t=Se(e);return t.stack=t.stack.slice(2),Pe(t)}function Pe(e){var t=Fe(e);return u(e.stack,(function(e){var r="?"===e.func?"<anonymous>":e.func,n=e.args&&e.args.length>0?"("+e.args.join(", ")+")":"",o=e.line?":"+e.line:"",i=e.line&&e.column?":"+e.column:"";t+="\n at "+r+n+" @ "+e.url+o+i})),t}function Fe(e){return(e.name||"Error")+": "+e.message}function De(e,t){for(var r=e,n=[];r&&r.cause instanceof Error&&n.length<10;){var o=Se(r.cause);n.push({message:r.cause.message,source:t,type:o&&o.name,stack:o&&Pe(o)}),r=r.cause}return n.length?n:void 0}function je(e){return Ue((function(t,r){e.notify(function(e){var t=e.stackTrace,r=e.originalError,n=e.handlingStack,o=e.startClocks,i=e.nonErrorPrefix,s=e.source,a=e.handling;return t&&(void 0!==t.message||r instanceof Error)?{startClocks:o,source:s,handling:a,originalError:r,message:t.message||"Empty message",stack:Pe(t),handlingStack:n,type:t.name,causes:De(r,s)}:{startClocks:o,source:s,handling:a,originalError:r,message:i+" "+k(r),stack:"No stack, consider using an instance of Error",handlingStack:n,type:t&&t.name}}({stackTrace:t,originalError:r,startClocks:U(),nonErrorPrefix:"Uncaught",source:Ae.SOURCE,handling:we}))}))}var qe=function(e){this.observers=[],this.onLastUnsubscribe=void 0,this.onFirstSubscribe=e};qe.prototype={subscribe:function(e){!this.observers.length&&this.onFirstSubscribe&&(this.onLastUnsubscribe=this.onFirstSubscribe()||void 0),this.observers.push(e);var t=this;return{unsubscribe:function(){t.observers=h(t.observers,(function(t){return e!==t})),!t.observers.length&&t.onLastUnsubscribe&&t.onLastUnsubscribe()}}},notify:function(e){u(this.observers,(function(t){t(e)}))}};var Qe=qe;function Ve(){var e=[].slice.call(arguments),t=new Qe((function(){var r=g(e,(function(e){return e.subscribe((function(e){return t.notify(e)}))}));return function(){return u(r,(function(e){return e.unsubscribe()}))}}));return t}var We={};function Ne(e){var t=g(e,(function(e){return We[e]||(We[e]=function(e){var t=new Qe((function(){var r=console[e];return console[e]=function(){var n=[].slice.call(arguments);r.apply(console,arguments);var o=Ie();t.notify(Ge(n,e,o))},function(){console[e]=r}}));return t}(e)),We[e]}));return Ve.apply(this,t)}function Ge(e,t,r){var n,o=g(e,(function(e){return function(e){if("string"==typeof e)return e;if(e instanceof Error)return Fe(Se(e));return k(e,0,2)}(e)})).join(" ");if(t===te.error){var i=function(e,t){for(var r=0;r<e.length;r+=1){var n=e[r];if(t(n,r,e))return n}}(e,(function(e){return e instanceof Error}));n=i?Pe(Se(i)):void 0,o="console error: "+o}return{api:t,message:o,stack:n,handlingStack:r}}var He={intervention:"intervention",deprecation:"deprecation",cspViolation:"csp_violation"};function Xe(e){var t,r=[];V(e,He.cspViolation)&&r.push(t=new Qe((function(){return q(document,de,(function(e){t.notify(function(e){var t=He.cspViolation,r="'"+e.blockedURI+"' blocked by '"+e.effectiveDirective+"' directive";return{type:He.cspViolation,subtype:e.effectiveDirective,message:t+": "+r,stack:Ke(e.effectiveDirective,r+' of the policy "'+j(e.originalPolicy,100)+'"',e.sourceFile,e.lineNumber,e.columnNumber)}}(e))})).stop})));var n=h(e,(function(e){return e!==He.cspViolation}));return n.length&&r.push(function(e){var t=new Qe((function(){if(window.ReportingObserver){var r=function(e){u(e,(function(e){t.notify(function(e){var t=e.body,r=e.type;return{type:r,subtype:t.id,message:r+": "+t.message,stack:Ke(t.id,t.message,t.sourceFile,t.lineNumber,t.columnNumber)}}(e))}))},n=new window.ReportingObserver(r,{types:e,buffered:!0});return n.observe(),function(){n.disconnect()}}}));return t}(n)),Ve.apply(this,r)}function Ke(e,t,r,n,o){return r&&Pe({name:e,message:t,stack:[{func:"?",url:r,line:n,column:o}]})}var ze=function(){this._events=[],this.pendingEvents=[]};ze.prototype={emit:function(e){var t=[].slice.call(arguments,1);u(this._events,(function(r){if(r.type!==e)return!1;r.callback.apply(r.context,t)}))},on:function(e,t,r){"function"==typeof t&&this._events.push({type:e,callback:t,context:r||this})}};new ze;var Ye,Je="RAW_LOG_COLLECTED",Ze="LOG_COLLECTED";function et(){this.callbacks=[]}function tt(e){return rt(e,function(e){if(e.origin)return e.origin;var t=e.host.replace(/(:80|:443)$/,"");return e.protocol+"//"+t}(window.location)).href}function rt(e,t){if(function(){if(void 0!==Ye)return Ye;try{var e=new URL("http://test/path");return Ye="http://test/path"===e.href}catch(e){Ye=!1}return Ye}())return void 0!==t?new URL(e,t):new URL(e);if(void 0===t&&!/:/.test(e))throw new Error("Invalid URL: "+e);var r=document,n=r.createElement("a");if(void 0!==t){var o=(r=document.implementation.createHTMLDocument("")).createElement("base");o.href=t,r.head.appendChild(o),r.body.appendChild(n)}return n.href=e,n}et.prototype={notify:function(e,t){var r=this.callbacks[e];r&&u(r,(function(e){e(t)}))},subscribe:function(e,t){this.callbacks[e]||(this.callbacks[e]=[]),this.callbacks[e].push(t);var r=this;return{unsubscribe:function(){r.callbacks[e]=h(r.callbacks[e],(function(e){return e!==t}))}}}};var nt=navigator.userAgent.toLowerCase(),ot=function(){return/iphone os/.test(nt)};var it;function st(e,t,r,n){var o=new Date;o.setTime(o.getTime()+r);var i="expires="+o.toUTCString(),s=n&&n.crossSite?"none":"strict",a=n&&n.domain?";domain="+n.domain:"",u=n&&n.secure?";secure":"";document.cookie=e+"="+t+";"+i+";path=/;samesite="+s+a+u}function at(e){return function(e,t){var r=e.match("(?:^|;)\\s*"+t+"\\s*=\\s*([^;]+)");return r?r[1]:void 0}(document.cookie,e)}var ut,ct,ft=/^\s+|\s+$/g;function lt(e){return e.replace(ft,"")}function dt(e){return e.lastIndexOf("/")===e.length-1?lt(e)+"v1/write/logging":lt(e)+"/v1/write/logging"}function pt(e){var t,r,n;if(void 0===e.sampleRate||(t=e.sampleRate,_(t)&&t>=0&&t<=100))return c({beforeSend:e.beforeSend&&(r=e.beforeSend,n="beforeSend threw an error:",function(){var e=[].slice.call(arguments);try{return r.apply(this,e)}catch(e){re.error(n,e)}}),cookieOptions:vt(e),sampleRate:z(e.sampleRate,100),service:e.service,version:e.version,env:e.env,silentMultipleInit:!!e.silentMultipleInit,batchBytesLimit:16384,eventRateLimiterThreshold:3e3,flushTimeout:3e4,batchMessagesLimit:50,messageBytesLimit:262144,resourceUrlLimit:5120},function(e){var t=function(e){return!1};"isIntakeUrl"in e&&p(e.isIntakeUrl)&&w(e.isIntakeUrl())&&(t=e.isIntakeUrl);var r,n=function(e){return!1};return"isServerError"in e&&p(e.isServerError)&&w(e.isServerError())&&(n=e.isServerError),{datakitUrl:(r=e.datakitUrl||e.datakitOrigin,r.lastIndexOf("/")===r.length-1?lt(r)+"v1/write/rum":lt(r)+"/v1/write/rum"),logsEndpoint:dt(e.datakitOrigin),isIntakeUrl:t,isServerError:n}}(e));re.error("Sample Rate should be a number between 0 and 100")}function vt(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===it){for(var e="dd_site_test_".concat(O()),t=window.location.hostname.split("."),r=t.pop();t.length&&!at(e);)r=t.pop()+"."+r,st(e,"test",L,{domain:r});it=r}return it}()),t}function ht(){var e;return ut||(e=new Qe((function(){if(window.fetch){var t=_e(window,"fetch",(function(t){return function(r,n){var o,i=function(e,t,r){var n=r&&r.method||"object"==typeof t&&t.method||"GET",o=tt("object"==typeof t&&t.url||t),i=U(),s={state:"start",init:r,input:t,method:n,startClocks:i,url:o};return e.notify(s),s}(e,r,n);return i?(o=t.call(this,i.input,i.init),function(e,t,r){var n=function(t){var n=r;n.state="complete",n.duration=P(n.startClocks.timeStamp,A()),"stack"in t||t instanceof Error?(n.status=0,n.isAborted=t instanceof DOMException&&t.code===DOMException.ABORT_ERR,n.error=t,e.notify(n)):"status"in t&&(n.response=t,n.responseType=t.type,n.status=t.status,n.isAborted=!1,e.notify(n))};t.then(n,n)}(e,o,i)):o=t.call(this,r,n),o}}));return t.stop}})),ut=e),ut}var gt={};function bt(){var e;return ct||(e=new Qe((function(){var t=xe(XMLHttpRequest.prototype,"open",{before:mt}),r=xe(XMLHttpRequest.prototype,"send",{before:function(){yt.call(this,e)}}),n=xe(XMLHttpRequest.prototype,"abort",{before:_t});return function(){t.stop(),r.stop(),n.stop()}})),ct=e),ct}function mt(e,t){var r=this._DATAFLUX_REQUEST_UUID||O();this._DATAFLUX_REQUEST_UUID=r,gt[r]={state:"open",method:e,url:tt(String(t))}}function yt(e){var t=gt[this._DATAFLUX_REQUEST_UUID];if(t){var r=t;r.state="start",r.startTime=R(),r.startClocks=U(),r.isAborted=!1,r.xhr=this;var n=!1,o=xe(this,"onreadystatechange",{before:function(){this.readyState===XMLHttpRequest.DONE&&i.call(this)}}),i=function i(){if(this.removeEventListener("loadend",i),o.stop(),!n){n=!0;var s=t;s.state="complete",s.duration=P(r.startClocks.timeStamp,A()),s.status=this.status,e.notify(c({},s)),wt.call(this)}};this.addEventListener("loadend",i),e.notify(r)}}function wt(){delete gt[this._DATAFLUX_REQUEST_UUID],delete this._DATAFLUX_REQUEST_UUID}function _t(){var e=gt[this._DATAFLUX_REQUEST_UUID];e&&(e.isAborted=!0)}var xt={action_id:"action.id",sdk_name:"_dd.sdk_name",sdk_version:"_dd.sdk_version",app_id:"application.id",env:"env",service:"service",version:"version",userid:"user.id",user_email:"user.email",user_name:"user.name",session_id:"session.id",session_type:"session.type",session_sampling:"session.is_sampling",is_signin:"user.is_signin",os:"device.os",os_version:"device.os_version",os_version_major:"device.os_version_major",browser:"device.browser",browser_version:"device.browser_version",browser_version_major:"device.browser_version_major",screen_size:"device.screen_size",network_type:"device.network_type",device:"device.device",view_id:"view.id",view_referrer:"view.referrer",view_url:"view.url",view_host:"view.host",view_path:"view.path",view_name:"view.path",view_path_group:"view.path_group",view_url_query:"view.url_query"},Ot={view:{type:ge,tags:{view_loading_type:"view.loading_type",view_apdex_level:"view.apdex_level",is_active:"view.is_active"},fields:{view_error_count:"view.error.count",view_resource_count:"view.resource.count",view_long_task_count:"view.long_task.count",view_action_count:"view.action.count",first_contentful_paint:"view.first_contentful_paint",largest_contentful_paint:"view.largest_contentful_paint",cumulative_layout_shift:"view.cumulative_layout_shift",first_input_delay:"view.first_input_delay",loading_time:"view.loading_time",dom_interactive:"view.dom_interactive",dom_content_loaded:"view.dom_content_loaded",dom_complete:"view.dom_complete",load_event:"view.load_event",first_input_time:"view.first_input_time",first_meaningful_paint:"view.largest_contentful_paint",first_paint_time:"view.fpt",resource_load_time:"view.resource_load_time",time_to_interactive:"view.tti",dom:"view.dom",dom_ready:"view.dom_ready",time_spent:"view.time_spent"}},resource:{type:be,tags:{trace_id:"_dd.trace_id",span_id:"_dd.span_id",resource_url:"resource.url",resource_url_host:"resource.url_host",resource_url_path:"resource.url_path",resource_url_path_group:"resource.url_path_group",resource_url_query:"resource.url_query",resource_type:"resource.type",resource_status:"resource.status",resource_status_group:"resource.status_group",resource_method:"resource.method"},fields:{duration:"resource.duration",resource_size:"resource.size",resource_dns:"resource.dns",resource_tcp:"resource.tcp",resource_ssl:"resource.ssl",resource_ttfb:"resource.ttfb",resource_trans:"resource.trans",resource_redirect:"resource.redirect",resource_first_byte:"resource.firstbyte",resource_dns_time:"resource.dns_time",resource_download_time:"resource.download_time",resource_first_byte_time:"resource.first_byte_time",resource_connect_time:"resource.connect_time",resource_ssl_time:"resource.ssl_time",resource_redirect_time:"resource.redirect_time"}},error:{type:ve,tags:{error_id:"error.id",trace_id:"_dd.trace_id",span_id:"_dd.span_id",error_source:"error.source",error_type:"error.type",error_handling:"error.handling"},fields:{error_message:["string","error.message"],error_stack:["string","error.stack"],error_causes:["string","error.causes"]}},long_task:{type:he,tags:{long_task_id:"long_task.id"},fields:{duration:"long_task.duration"}},action:{type:pe,tags:{action_type:"action.type"},fields:{action_name:"action.target.name",duration:"action.loading_time",action_error_count:"action.error.count",action_resource_count:"action.resource.count",action_frustration_types:"action.frustration.type",action_long_task_count:"action.long_task.count"}},browser_log:{type:me,tags:{error_source:"error.source",error_type:"error.type",error_resource_url:"http.url",error_resource_url_host:"http.url_host",error_resource_url_path:"http.url_path",error_resource_url_path_group:"http.url_path_group",error_resource_status:"http.status_code",error_resource_status_group:"http.status_group",error_resource_method:"http.method",action_id:"user_action.id",service:"service",status:"status"},fields:{message:["string","message"]}}};var St,Et=144e5,kt=9e5,Ct=/^([a-z]+)=([a-z0-9-]+)$/,Tt="&",$t="_dataflux_s",Lt=[];function Bt(e,t){if(void 0===t&&(t=0),St||(St=e),e===St)if(t>=100)Ut();else{var r,n=It();if(Mt()){if(n.lock)return void Rt(e,t);if(r=O(),n.lock=r,At(n,e.options),(n=It()).lock!==r)return void Rt(e,t)}var o=e.process(n);if(Mt()&&(n=It()).lock!==r)Rt(e,t);else{if(o&&function(e,t){if(Pt(e))return void function(e){st($t,"",0,e)}(t);e.expire=String(I()+kt),At(e,t)}(o,e.options),Mt()&&(!o||!Pt(o))){if((n=It()).lock!==r)return void Rt(e,t);delete n.lock,At(n,e.options),o=n}e.after&&e.after(o||n),Ut()}}else Lt.push(e)}function Mt(){return!!window.chrome||/HeadlessChrome/.test(window.navigator.userAgent)}function Rt(e,t){setTimeout((function(){Bt(e,t+1)}),10)}function Ut(){St=void 0;var e=Lt.shift();e&&Bt(e)}function At(e,t){st($t,function(e){return g((t=e,r=[],u(t,(function(e,t){r.push([t,e])})),r),(function(e){return e[0]+"="+e[1]})).join(Tt);var t,r}(e),kt,t)}function It(){var e=at($t),t={};return function(e){return void 0!==e&&(-1!==e.indexOf(Tt)||Ct.test(e))}(e)&&u(e.split(Tt),(function(e){var r=Ct.exec(e);if(null!==r){var n=r[1],o=r[2];t[n]=o}})),t}function Pt(e){return m(e)}function Ft(e,t,r){var n=new Qe,o=new Qe,i=setInterval((function(){Bt({options:e,process:function(e){return c(e)?void 0:{}},after:a})}),1e3),s=function(){var e=It();if(c(e))return e;return{}}();function a(e){return c(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 c(e){return(void 0===e.created||I()-Number(e.created)<Et)&&(void 0===e.expire||I()<Number(e.expire))}return{expandOrRenewSession:x((function(){var o;Bt({options:e,process:function(e){var n=a(e);return o=function(e){var n=r(e[t]),o=n.trackingType,i=n.isTracked;e[t]=o,i&&!e.id&&(e.id=O(),e.created=String(I()));return i}(n),n},after:function(e){o&&!u()&&function(e){s=e,n.notify()}(e),s=e}})}),1e3),expandSession:function(){Bt({options:e,process:function(e){return u()?a(e):void 0}})},getSession:function(){return s},renewObservable:n,expireObservable:o,stop:function(){clearInterval(i)}}}var Dt=[],jt=function(e,t,r){var n=Ft(e,t,r);Dt.push((function(){return n.stop()}));var o,i=new ee(144e5);function s(){return{id:n.getSession().id,trackingType:n.getSession()[t]}}return Dt.push((function(){return i.stop()})),n.renewObservable.subscribe((function(){i.add(s(),R())})),n.expireObservable.subscribe((function(){i.closeActive(R())})),n.expandOrRenewSession(),i.add(s(),[0,F()][0]),o=Q(window,[ae,fe,ue,ce],(function(){return n.expandOrRenewSession()}),{capture:!0,passive:!0}),Dt.push(o.stop),function(e){var t=function(){"visible"===document.visibilityState&&e()},r=q(document,le,t);Dt.push(r.stop);var n=setInterval(t,6e4);Dt.push((function(){clearInterval(n)}))}((function(){return n.expandSession()})),{findActiveSession:function(e){return i.find(e)},renewObservable:n.renewObservable,expireObservable:n.expireObservable}};var qt=3145728,Qt="UP",Vt="FAILURE_DETECTED",Wt="DOWN",Nt="AFTER_SUCCESS",Gt="AFTER_RESUME";function Ht(e,t,r,n){t.transportStatus===Qt&&0===t.queuedPayloads.size()&&t.bandwidthMonitor.canHandle(e)?Kt(e,t,r,{onSuccess:function(){return zt(Nt,t,r,n)},onFailure:function(){t.queuedPayloads.enqueue(e),Xt(t,r,n)}}):t.queuedPayloads.enqueue(e)}function Xt(e,t,r){e.transportStatus===Wt&&setTimeout((function(){Kt(e.queuedPayloads.first(),e,t,{onSuccess:function(){e.queuedPayloads.dequeue(),e.currentBackoffTime=1e3,zt(Gt,e,t,r)},onFailure:function(){e.currentBackoffTime=Math.min(256e3,2*e.currentBackoffTime),Xt(e,t,r)}})}),e.currentBackoffTime)}function Kt(e,t,r,n){var o=n.onSuccess,i=n.onFailure;t.bandwidthMonitor.add(e),r(e,(function(r){t.bandwidthMonitor.remove(e),!function(e){return 0!==e.status&&e.status<500}(r)?(t.transportStatus=t.bandwidthMonitor.ongoingRequestCount>0?Vt:Wt,t.lastFailureStatus=r.status,i()):(t.transportStatus=Qt,o())}))}function zt(e,t,r,n){e===Nt&&t.queuedPayloads.isFull()&&!t.queueFullReported&&(n({message:"Reached max events size queued for upload: 3MiB",source:Ae.AGENT,startClocks:U()}),t.queueFullReported=!0);var o=t.queuedPayloads;for(t.queuedPayloads=Yt();o.size()>0;)Ht(o.dequeue(),t,r,n)}function Yt(){var e=[];return{bytesCount:0,enqueue:function(t){this.isFull()||(e.push(t),this.bytesCount+=t.bytesCount)},first:function(){return e[0]},dequeue:function(){var t=e.shift();return t&&(this.bytesCount-=t.bytesCount),t},size:function(){return e.length},isFull:function(){return this.bytesCount>=qt}}}function Jt(e){return e?e+(-1===e.indexOf("?")?"?":"&")+"precision=ms":e}function Zt(e,t,r){var n={transportStatus:Qt,lastFailureStatus:0,currentBackoffTime:1e3,bandwidthMonitor:{ongoingRequestCount:0,ongoingByteCount:0,canHandle:function(e){return 0===this.ongoingRequestCount||this.ongoingByteCount+e.bytesCount<=81920&&this.ongoingRequestCount<32},add:function(e){this.ongoingRequestCount+=1,this.ongoingByteCount+=e.bytesCount},remove:function(e){this.ongoingRequestCount-=1,this.ongoingByteCount-=e.bytesCount}},queuedPayloads:Yt(),queueFullReported:!1},o=function(r,n){return function(e,t,r,n){var o=r.data,i=r.bytesCount,s=Jt(e);(function(){try{return window.Request&&"keepalive"in new Request("http://a")}catch(e){return!1}})()&&i<t?fetch(s,{method:"POST",body:o,keepalive:!0}).then((function(e){"function"==typeof n&&n({status:e.status})}),(function(){er(s,o,n)})):er(s,o,n)}(e,t,r,n)};return{send:function(e){Ht(e,n,o,r)},sendOnExit:function(r){!function(e,t,r){var n=r.data,o=r.bytesCount,i=Jt(e);if(navigator.sendBeacon&&o<t)try{if(navigator.sendBeacon(i,n))return}catch(e){}er(i,n)}(e,t,r)}}}function er(e,t,r){var n=new XMLHttpRequest;n.open("POST",e,!0),n.send(t),n.addEventListener("loadend",(function(){"function"==typeof r&&r({status:n.status})}))}var tr=/[^\u0000-\u007F]/,rr="custom_keys",nr=function(e){if(!e||!e.type)return{rowStr:"",rowData:void 0};var t={tags:{},fields:{}},r=!1,n="";return u(Ot,(function(o,i){if(o.type===e.type){n+=i+",",t.measurement=i;var s=[],a=f({},xt,o.tags),c=["date","type",rr];u(a,(function(r,n){var o=D(e,r);c.push(n),(o||_(o))&&(t.tags[n]=function(e){return y(e)?e:k(e)}(o),s.push(H(n)+"="+H(o)))}));var l=[];if(u(o.fields,(function(r,n){if(d(r)&&2===r.length){r[0];var o=r[1],i=D(e,o);c.push(n),(i||_(i))&&(t.fields[n]=i,l.push(H(n)+"="+K(i)))}else if(y(r)){i=D(e,r);c.push(n),(i||_(i))&&(t.fields[n]=i,l.push(H(n)+"="+K(i)))}})),e.tags&&b(e.tags)&&!m(e.tags)){var p=[];u(e.tags,(function(e,r){c.indexOf(r)>-1||(c.push(r),(e||_(e))&&(p.push(r),t.fields[r]=e,l.push(H(r)+"="+K(e))))})),p.length&&(t.fields.custom_keys=K(p),l.push(H(rr)+"="+K(p)))}e.type===me&&u(e,(function(e,r){-1===c.indexOf(r)&&(_(e)||y(e)||w(e))&&(t.fields[r]=e,l.push(H(r)+"="+K(e)))})),s.length&&(n+=s.join(",")),l.length&&(n+=" ",n+=l.join(","),r=!0),n=n+" "+e.date,t.time=(v=e.date,_(v)?M(1e6*v,0):v)}var v})),{rowStr:r?n:"",rowData:r?t:void 0}},or=function(e,t,r,n,o,i){this.pushOnlyBuffer=[],this.upsertBuffer={},this.bufferBytesCount=0,this.bufferMessagesCount=0,this.request=e,this.batchMessagesLimit=t,this.batchBytesLimit=r,this.messageBytesLimit=n,this.flushTimeout=o,this.beforeUnloadCallback="function"==typeof i?i:T,this.setupFlushOnExit(),this.flushPeriodically()};or.prototype.add=function(e){this.addOrUpdate(e)},or.prototype.upsert=function(e,t){this.addOrUpdate(e,t)},or.prototype.flush=function(e){if("function"!=typeof e&&(e=this.request.send),0!==this.bufferMessagesCount){var t=this.pushOnlyBuffer.concat(v(this.upsertBuffer)),r=this.bufferBytesCount;this.pushOnlyBuffer=[],this.upsertBuffer={},this.bufferBytesCount=0,this.bufferMessagesCount=0,t.length>0&&e({data:t.join("\n"),bytesCount:r})}},or.prototype.flushOnExit=function(){this.flush(this.request.sendOnExit)},or.prototype.computeBytesCount=function(e){return tr.test(e)?void 0!==window.TextEncoder?(new TextEncoder).encode(e).length:new Blob([e]).size:e.length},or.prototype.addOrUpdate=function(e,t){var r=this.process(e),n=r.processedMessage,o=r.messageBytesCount;o>=this.messageBytesLimit?re.warn("Discarded a message whose size was bigger than the maximum allowed size "+this.messageBytesLimit+"KB."):(this.hasMessageFor(t)&&this.remove(t),this.willReachedBytesLimitWith(o)&&this.flush(),this.push(n,o,t),this.isFull()&&this.flush())},or.prototype.process=function(e){var t=nr(e).rowStr;return{processedMessage:t,messageBytesCount:this.computeBytesCount(t)}},or.prototype.push=function(e,t,r){this.bufferMessagesCount>0&&(this.bufferBytesCount+=1),void 0!==r?this.upsertBuffer[r]=e:this.pushOnlyBuffer.push(e),this.bufferBytesCount+=t,this.bufferMessagesCount+=1},or.prototype.remove=function(e){var t=this.upsertBuffer[e];delete this.upsertBuffer[e];var r=this.computeBytesCount(t);this.bufferBytesCount-=r,this.bufferMessagesCount-=1,this.bufferMessagesCount>0&&(this.bufferBytesCount-=1)},or.prototype.hasMessageFor=function(e){return void 0!==e&&void 0!==this.upsertBuffer[e]},or.prototype.willReachedBytesLimitWith=function(e){return this.bufferBytesCount+e+1>=this.batchBytesLimit},or.prototype.isFull=function(){return this.bufferMessagesCount===this.batchMessagesLimit||this.bufferBytesCount>=this.batchBytesLimit},or.prototype.flushPeriodically=function(){var e=this;setTimeout((function(){e.flush(),e.flushPeriodically()}),this.flushTimeout)},or.prototype.setupFlushOnExit=function(){var e=this;navigator.sendBeacon&&(q(window,se,this.beforeUnloadCallback),q(document,le,(function(){"hidden"===document.visibilityState&&e.flushOnExit()})),q(window,se,(function(){return e.flushOnExit()})))};var ir=or;var sr={sdkVersion:"1.2.10",sdkName:"df_web_logs_sdk"};function ar(e,t,r){return void 0===e?[]:"all"===e||d(e)&&function(e,t,r){if(e.every)return e.every(t);for(var n=!0,o=0;o<e.length;o++)if(i.call(e,o)){var s=e[o];if(!t.call(r,s,o,e)){n=!1;break}}return n}(e,(function(e){return V(t,e)}))?"all"===e?t:function(e){for(var t,r=[],n={},o=0;o<e.length;o++)(t=e[o])in n||(n[t]=!0,r.push(t));return r}(e):void re.error(r+' should be "all" or an array with allowed values "'+t.join('", "')+'"')}var ur,cr,fr={debug:"debug",error:"error",info:"info",warn:"warn",critical:"critical"},lr="console",dr="http",pr=(cr=[],null===(ur=fr)||u(ur,(function(e,t){cr[cr.length]=t})),cr);function vr(e,t,r,n,o){this.contextManager=W(),void 0===r&&(r=dr),void 0===n&&(n=fr.debug),void 0===o&&(o={}),this.handleLogStrategy=e,this.handlerType=r,this.level=n,this.contextManager.set(c({},o,t?{logger:{name:t}}:void 0))}vr.prototype={log:function(e,t,r){void 0===r&&(r=fr.info),this.handleLogStrategy({message:e,context:E(t),status:r},this)},debug:function(e,t){this.log(e,t,fr.debug)},info:function(e,t){this.log(e,t,fr.info)},warn:function(e,t){this.log(e,t,fr.warn)},critical:function(e,t){this.log(e,t,fr.critical)},error:function(e,t){var r={error:{origin:Ae.LOGGER}};this.log(e,l(r,t),fr.error)},setContext:function(e){this.contextManager.set(e)},getContext:function(){return this.contextManager.get()},addContext:function(e,t){this.contextManager.add(e,t)},removeContext:function(e){this.contextManager.remove(e)},setHandler:function(e){this.handlerType=e},getHandler:function(){return this.handlerType},setLevel:function(e){this.level=e},getLevel:function(){return this.level}};var hr="0",gr="1";function br(e){var t=jt(e.cookieOptions,"logs",(function(t){return function(e,t){var r=function(e){return e===hr||e===gr}(t)?t:function(e){if(t=e.sampleRate,!(0!==t&&100*Math.random()<=t))return hr;var t;return gr}(e);return{trackingType:r,isTracked:r===gr}}(e,t)}));return{findTrackedSession:function(e){var r=t.findActiveSession(e);return r&&r.trackingType===gr?{id:r.id}:void 0}}}var mr={[fr.debug]:0,[fr.info]:1,[fr.warn]:2,[fr.error]:3};function yr(e,t,r){var n=r.getHandler(),o=d(n)?n:[n];return mr[e]>=mr[r.getLevel()]&&V(o,t)}function wr(e,t,r,n,o,i){var s=pr.concat(["custom"]),a={};u(s,(function(e){var r,n,o,s,u;a[e]=(r=e,n=t.eventRateLimiterThreshold,o=i,s=0,u=!1,{isLimitReached:function(){if(0===s&&setTimeout((function(){s=0}),B),(s+=1)<=n||u)return u=!1,!1;if(s===n+1){u=!0;try{o({message:"Reached max number of "+r+"s by minute: "+n,source:Ae.AGENT,startClocks:U()})}finally{u=!1}}return!0}})})),r.subscribe(Je,(function(i){var s=i.rawLogsEvent,u=i.messageContext||void 0,c=i.messageContext||void 0,f=i.logger||o,d=s.date-F(),p=e.findTrackedSession(d);if(p){var v=c||n(),h=l({service:t.service||"browser",env:t.env||"",version:t.version||"",_dd:{sdkName:t.sdkName,sdkVersion:t.sdkVersion},session:{id:p.id},view:v.view,device:ie,type:me},v.context,function(e){return t(window.DATAFLUX_RUM);function t(t){if(t&&t.getInternalContext)return t.getInternalContext(e)}}(d),s,f.getContext(),u);!yr(s.status,dr,f)||t.beforeSend&&!1===t.beforeSend(h)||h.error&&h.error.origin!==Ae.AGENT&&z(a[h.status],a.custom).isLimitReached()||r.notify(Ze,N(h))}}))}var _r={[te.log]:fr.info,[te.debug]:fr.debug,[te.info]:fr.info,[te.warn]:fr.warn,[te.error]:fr.error};var xr={[He.cspViolation]:fr.error,[He.intervention]:fr.error,[He.deprecation]:fr.warn};function Or(e,t){if(!e.forwardErrorsToLogs)return{stop:T};var r=bt().subscribe((function(e){"complete"===e.state&&o(ye.XHR,e)})),n=ht().subscribe((function(e){"complete"===e.state&&o(ye.FETCH,e)}));function o(r,n){function o(e){var o,i,s,a,u,c=(o=n.url,i=function(e){this._fields={Username:4,Password:5,Port:7,Protocol:2,Host:6,Path:8,URL:0,QueryString:9,Fragment:10},this._values={},this._regex=null,this._regex=/^((\w+):\/\/)?((\w+):?(\w+)?@)?([^\/\?:]+):?(\d+)?(\/?[^\?#]+)?\??([^#]+)?#?(\w*)/,void 0!==e&&this._parse(e)},i.prototype.setUrl=function(e){this._parse(e)},i.prototype._initValues=function(){for(var e in this._fields)this._values[e]=""},i.prototype.addQueryString=function(e){if("object"!=typeof e)return!1;var t=this._values.QueryString||"";for(var r in e)t=new RegExp(r+"[^&]+").test(t)?t.replace(new RegExp(r+"[^&]+"),r+"="+e[r]):"&"===t.slice(-1)?t+r+"="+e[r]:""===t?r+"="+e[r]:t+"&"+r+"="+e[r];this._values.QueryString=t},i.prototype.getParse=function(){return this._values},i.prototype.getUrl=function(){var e="";return e+=this._values.Origin,(e+=this._values.Path)+(this._values.QueryString?"?"+this._values.QueryString:"")},i.prototype._parse=function(e){this._initValues();var t=this._regex.exec(e);if(!t)throw"DPURLParser::_parse -> Invalid URL";for(var r in this._fields)void 0!==t[this._fields[r]]&&(this._values[r]=t[this._fields[r]]);this._values.Path=this._values.Path||"/",this._values.Hostname=this._values.Host.replace(/:\d+$/,""),this._values.Origin=this._values.Protocol+"://"+this._values.Hostname+(this._values.Port?":"+this._values.Port:"")},new i(o)).getParse();t.notify(Je,{rawLogsEvent:{message:Er(r)+" error "+n.method+" "+n.url,date:n.startClocks.timeStamp,error:{origin:Ae.NETWORK,stack:e||"Failed to load"},http:{method:n.method,status_code:n.status,url:n.url,statusGroup:(u=n.status,u?String(u).substr(0,1)+String(u).substr(1).replace(/\d*/g,"x"):u),urlHost:c.Host,urlPath:c.Path,urlPathGroup:(s=c.Path,a="",s&&(a=s.replace(/\/([^\/]*)\d([^\/]*)/g,"/?").replace(/\/$/g,"")),a||"/")},status:fr.error,origin:Ae.NETWORK}})}!e.isIntakeUrl(n.url)&&(function(e){return 0===e.status&&"opaque"!==e.responseType}(n)||function(e){return e.status>=500}(n)||e.isServerError(n))&&("xhr"in n?function(e,t,r){"string"==typeof e.response?r(Sr(e.response,t)):r(e.response)}(n.xhr,e,o):n.response?function(e,t,r){window.TextDecoder?e.body?function(e,t,r){!function(e,t,r){var n=e.getReader(),o=[],i=0;function s(){n.read().then((function(e){e.done?a():(o.push(e.value),(i+=e.value.length)>t?a():s())}),(function(e){return r(e)}))}function a(){var e;if(n.cancel().catch(T),1===o.length)e=o[0];else{e=new Uint8Array(i);var s=0;u(o,(function(t){e.set(t,s),s+=t.length}))}r(void 0,e.slice(0,t),e.length>t)}s()}(e,t,(function(e,t,n){if(e)r(e);else{var o=(new TextDecoder).decode(t);n&&(o+="..."),r(void 0,o)}}))}(e.clone().body,t.requestErrorResponseLengthLimit,(function(e,t){r(e?"Unable to retrieve response: "+e:t)})):r():e.clone().text().then((function(e){return r(Sr(e,t))}),(function(e){return r("Unable to retrieve response: "+e)}))}(n.response,e,o):n.error&&function(e,t,r){r(Sr(Pe(Se(e)),t))}(n.error,e,o))}return{stop:function(){r.unsubscribe(),n.unsubscribe()}}}function Sr(e,t){return e.length>t.requestErrorResponseLengthLimit?e.substring(0,t.requestErrorResponseLengthLimit)+"...":e}function Er(e){return ye.XHR===e?"XHR":"Fetch"}function kr(e,t,r){var n=function(e,t,r){var n=function(t){return new ir(Zt(t,e.batchBytesLimit,r),e.batchMessagesLimit,e.batchBytesLimit,e.messageBytesLimit,e.flushTimeout)}(t);return{add:function(e){n.add(e)}}}(e,e.logsEndpoint,r);t.subscribe(Ze,(function(e){n.add(e)}))}const Cr=function(e){var t,r,n=!1,o=W(),i={},s=function(){},a=new J,u=function(e,t,r,n){void 0===r&&(r=E(p())),void 0===n&&(n=A()),a.add((function(){return u(e,t,r,n)}))},l=function(){},d=new vr((function(){return u.apply(this,arguments)}));function p(){return{view:{referrer:document.referrer,url:window.location.href},context:o.get()}}return t={logger:d,init:function(t){if(function(e){return n?(e.silentMultipleInit||re.error("DD_LOGS is already initialized."),!1):!(!e.datakitUrl&&!e.datakitOrigin)||(re.error("datakitOrigin is not configured, no RUM data will be collected."),!1)}(t)){var r=function(e){var t=pt(e),r=ar(e.forwardConsoleLogs,v(te),"Forward Console Logs"),n=ar(e.forwardReports,v(He),"Forward Reports");if(t&&r&&n)return e.forwardErrorsToLogs&&!V(r,te.error)&&r.push(te.error),c({forwardErrorsToLogs:!1!==e.forwardErrorsToLogs,forwardConsoleLogs:r,forwardReports:n,requestErrorResponseLengthLimit:32768},t,sr)}(t);if(r){var o=e(r,p,d);u=o.handleLog,s=o.getInternalContext,l=function(){return E(t)},a.drain(),n=!0}}},getGlobalContext:o.getContext,setGlobalContext:o.setContext,setGlobalContextProperty:o.setContextProperty,removeGlobalContextProperty:o.removeContextProperty,clearGlobalContext:o.clearContext,createLogger:function(e,t){return void 0===t&&(t={}),i[e]=new vr((function(){return u(this.arguments)}),e,t.handler,t.level,t.context),i[e]},getLogger:function(e){return i[e]},getInitConfiguration:function(){return l()},getInternalContext:function(e){return s(e)}},r=f({},t,{onReady:function(e){e()}}),Object.defineProperty(r,"_setDebug",{get:function(){return setDebugMode},enumerable:!1}),r}((function(e,t,r){var n=new et;const o=function(e){n.notify(Je,{rawLogsEvent:{message:e.message,date:e.startClocks.timeStamp,error:{origin:Ae.AGENT},origin:Ae.AGENT,status:fr.error}})};Or(e,n),function(e,t){if(!e.forwardErrorsToLogs)return{stop:T};var r=new Qe,n=je(r),o=r.subscribe((function(e){t.notify(Je,{rawLogsEvent:{message:e.message,date:e.startClocks.timeStamp,error:{kind:e.type,origin:Ae.SOURCE,stack:e.stack},origin:Ae.SOURCE,status:fr.error}})}))}(e,n),function(e,t){var r=Ne(e.forwardConsoleLogs).subscribe((function(e){t.notify(Je,{rawLogsEvent:{date:A(),message:e.message,origin:Ae.CONSOLE,error:e.api===te.error?{origin:Ae.CONSOLE,stack:e.stack}:void 0,status:_r[e.api]}})}))}(e,n),function(e,t){var r=Xe(e.forwardReports).subscribe((function(e){var r,n,o,i=e.message,s=xr[e.type];s===fr.error?r={kind:e.subtype,origin:Ae.REPORT,stack:e.stack}:e.stack&&(i+=" Found in "+(n=e.stack,(o=/@ (.+)/.exec(n))&&o[1])),t.notify(Je,{rawLogsEvent:{date:A(),message:i,origin:Ae.REPORT,error:r,status:s}})}))}(e,n);var i=function(e){return{handleLog:function(t,r,n,o){var i=t.context;yr(t.status,lr,r)&&re(t.status,t.message,l(r.getContext(),i)),e.notify(Je,{rawLogsEvent:{date:o||A(),message:t.message,status:t.status,origin:Ae.LOGGER},messageContext:i,savedCommonContext:n,logger:r})}}}(n),s=br(e);wr(s,e,n,t,r,o),kr(e,n,o);var a,u=(a=s,{get:function(e){var t=a.findTrackedSession(e);if(t)return{session:{id:t.id}}}});return{handleLog:i.handleLog,getInternalContext:u.get}}));var Tr,$r,Lr,Br;Tr=function(){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}(),Lr=Cr,Br=Tr[$r="DATAFLUX_LOGS"],Tr[$r]=Lr,Br&&Br.q&&u(Br.q,(function(e){e()}))}();
1
+ !function(){"use strict";var e="beforeunload",t="click",r="keydown",n="scroll",o="touchstart",i="visibilitychange",s="freeze",a="pagehide",u="securitypolicyviolation",c="action",f="error",l="long_task",d="view",p="resource",v="logger",h={FETCH:"fetch",XHR:"xhr"},g="unhandled";function b(e,t){var r,n=window;return n.Zone&&"function"==typeof n.Zone.__symbol__&&(r=e[n.Zone.__symbol__(t)]),r||(r=e[t]),r}var y=Array.prototype,m=Function.prototype,w=Object.prototype,_=y.slice,x=w.toString,O=w.hasOwnProperty,S=(m.bind,y.forEach),k=(y.indexOf,Array.isArray),E=function(e,t,r){if(null===e)return!1;if(S&&e.forEach===S)e.forEach(t,r);else if(e.length===+e.length){for(var n=0,o=e.length;n<o;n++)if(n in e&&false===t.call(r,e[n],n,e))return!1}else for(var i in e)if(O.call(e,i)&&false===t.call(r,e[i],i,e))return!1};function C(e){return E(_.call(arguments,1),(function(t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})),e}var L=function(e){return E(_.call(arguments,1),(function(t){for(var r in t)void 0!==t[r]&&(e[r]=t[r])})),e},$=function(e){return E(_.call(arguments,1),(function(t){for(var r in t)void 0!==t[r]&&(I(t[r])&&I(e[r])?L(e[r],t[r]):e[r]=t[r])})),e},T=k||function(e){return"[object Array]"===x.call(e)},B=function(e){if(!e)return!1;try{return/^\s*\bfunction\b/.test(e)}catch(e){return!1}},M=function(e){var t=[];return null===e||E(e,(function(e){t[t.length]=e})),t},R=function(e){var t=[];return null===e||E(e,(function(e,r){t[t.length]=r})),t},A=function(e,t,r){if(e.filter)return e.filter(t);for(var n=[],o=0;o<e.length;o++)if(O.call(e,o)){var i=e[o];t.call(r,i,o,e)&&n.push(i)}return n},U=function(e,t,r){if(e.map)return e.map(t);for(var n=[],o=0;o<e.length;o++)if(O.call(e,o)){var i=e[o];n.push(t.call(r,i,o,e))}return n},I=function(e){return null!==e&&"[object Object]"===x.call(e)},P=function(e){if(I(e)){for(var t in e)if(O.call(e,t))return!1;return!0}return!1},D=function(e){return"[object String]"===x.call(e)},F=function(e){return"[object Boolean]"===x.call(e)},j=function(e){return"[object Number]"===x.call(e)&&/[\d\.]+/.test(String(e))},q=(Date.now,function(e,t,r){var n,o,i=!r||void 0===r.leading||r.leading,s=!r||void 0===r.trailing||r.trailing,a=!1,u=this;return{throttled:function(){a?n=arguments:(i?e.apply(u,arguments):n=arguments,a=!0,o=setTimeout((function(){s&&n&&e.apply(u,n),a=!1,n=void 0}),t))},cancel:function(){clearTimeout(o),a=!1,n=void 0}}});function Q(e){return e?(parseInt(e,10)^16*Math.random()>>parseInt(e,10)/4).toString(16):"".concat(1e7,"-",1e3,"-",4e3,"-",8e3,"-",1e11).replace(/[018]/g,Q)}function N(e,t,r){if(void 0===r&&(r=function(){if("undefined"!=typeof WeakSet){var e=new WeakSet;return{hasAlreadyBeenSeen:function(t){var r=e.has(t);return r||e.add(t),r}}}var t=[];return{hasAlreadyBeenSeen:function(e){var r=t.indexOf(e)>=0;return r||t.push(e),r}}}()),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 n=t.flags||[t.global?"g":"",t.ignoreCase?"i":"",t.multiline?"m":"",t.sticky?"y":"",t.unicode?"u":""].join("");return new RegExp(t.source,n)}if(!r.hasAlreadyBeenSeen(t)){if(Array.isArray(t)){for(var o=Array.isArray(e)?e:[],i=0;i<t.length;++i)o[i]=N(o[i],t[i],r);return o}var s;o="object"==(null===(s=e)?"null":Array.isArray(s)?"array":typeof s)?e:{};for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(o[a]=N(o[a],t[a],r));return o}}function V(e){return N(void 0,e)}function W(e,t,r){if(null==e)return JSON.stringify(e);var n=[!1,void 0];G(e)&&(n=[!0,e.toJSON],delete e.toJSON);var o,i,s=[!1,void 0];"object"==typeof e&&G(o=Object.getPrototypeOf(e))&&(s=[!0,o.toJSON],delete o.toJSON);try{i=JSON.stringify(e,void 0,r)}catch(e){i="<error: unable to serialize object>"}finally{n[0]&&(e.toJSON=n[1]),s[0]&&(o.toJSON=s[1])}return i}function G(e){return"object"==typeof e&&null!==e&&e.hasOwnProperty("toJSON")}function H(){}var X,z=1e3,K=6e4;function Y(e,t){return+e.toFixed(t)}function Z(){return performance.now()}function J(){return{relative:Z(),timeStamp:ee()}}function ee(){return te()}function te(){return(new Date).getTime()}function re(){return void 0===X&&(X=performance.timing.navigationStart),X}function ne(e,t){for(var r=t.split(".");r.length;){var n=r.shift();if(!(e&&n in e&&O.call(e,n)))return;e=e[n]}return e}function oe(e,t){var r=e.charCodeAt(t-1);return r>=55296&&r<=56319?e.slice(0,t+1):e.slice(0,t)}function ie(e,t,r,n){return se(e,[t],r,n)}function se(e,t,r,n){var o=n&&n.once?function(e){s(),r(e)}:r;n=n&&n.passive?{capture:n.capture,passive:n.passive}:n&&n.capture;var i=b(e,"addEventListener");E(t,(function(t){i.call(e,t,o,n)}));var s=function(){var r=b(e,"removeEventListener");E(t,(function(t){r.call(e,t,o,n)}))};return{stop:s}}function ae(e,t){return-1!==e.indexOf(t)}function ue(){var e={};return{get:function(){return e},add:function(t,r){D(t)?e[t]=r:console.error("key 需要传递字符串类型")},remove:function(t){delete e[t]},set:function(t){I(t)?e=t:console.error("content 需要传递对象类型数据")},getContext:function(){return V(e)},setContext:function(t){e=V(t)},setContextProperty:function(t,r){e[t]=V(r)},removeContextProperty:function(t){delete e[t]},clearContext:function(){e={}}}}function ce(e){var t={};return E(e,(function(e,r){var n;t[(n=r,n.replace(/[A-Z]/g,(function(e,t){return(0!==t?"_":"")+e.toLowerCase()})).replace(/-/g,"_"))]=fe(e)})),t}function fe(e){return T(e)?U(e,(function(e){return fe(e)})):"object"==typeof e&&null!==e?ce(e):e}function le(e){if("object"==typeof e&&e)e=W(e);else if(!D(e))return e;return String(e).replace(/[\s=,"]/g,(function(e){return"\\"+e}))}function de(e){return'"'+e.replace(/\\/g,"\\\\").replace(/[\\]*"/g,'"').replace(/"/g,'\\"')+'"'}function pe(e){return"object"==typeof e&&e?de(W(e)):D(e)?de(e):e}function ve(e,t){return null!=e?e:t}var he=function(){this.buffer=[]};he.prototype={add:function(e){this.buffer.push(e)>500&&this.buffer.splice(0,1)},drain:function(){E(this.buffer,(function(e){e()})),this.buffer.length=0}};var ge=he,be=1/0;function ye(e){this.expireDelay=e,this.entries=[];var t=this;this.clearOldContextsInterval=setInterval((function(){t.clearOldContexts()}),6e4)}ye.prototype.add=function(e,t){var r=this,n={context:e,startTime:t,endTime:be,remove:function(){var e=r.entries.indexOf(n);e>=0&&r.entries.splice(e,1)},close:function(e){n.endTime=e}};return this.entries.unshift(n),n},ye.prototype.find=function(e){void 0===e&&(e=be);for(var t=0;t<this.entries.length;t++){var r=this.entries[t];if(r.startTime<=e){if(e<=r.endTime)return r.context;break}}},ye.prototype.closeActive=function(e){var t=this.entries[0];t&&t.endTime===be&&t.close(e)},ye.prototype.findAll=function(e){void 0===e&&(e=be);var t=A(this.entries,(function(t){return t.startTime<=e&&e<=t.endTime}));return U(t,(function(e){return e.context}))},ye.prototype.reset=function(){this.entries=[]},ye.prototype.stop=function(){clearInterval(this.clearOldContextsInterval)},ye.prototype.clearOldContexts=function(){for(var e=Z()-this.expireDelay;this.entries.length>0&&this.entries[this.entries.length-1].endTime<e;)this.entries.pop()};var me={log:"log",debug:"debug",info:"info",warn:"warn",error:"error"},we=function e(t){var r=[].slice.call(arguments,1);Object.prototype.hasOwnProperty.call(me,t)||(t=me.log),e[t].apply(e,r)};we.debug=console.debug.bind(console),we.log=console.log.bind(console),we.info=console.info.bind(console),we.warn=console.warn.bind(console),we.error=console.error.bind(console);var _e={navigator:void 0!==window.navigator?window.navigator:{},infoMap:{engine:["WebKit","Trident","Gecko","Presto"],browser:["Safari","Chrome","Edge","IE","IE 11","IE 10","IE 9","IE 8","IE 7","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Arora","Lunascape","QupZilla","Coc Coc","Kindle","Iceweasel","Konqueror","Iceape","SeaMonkey","Epiphany","360","360SE","360EE","UC","QQBrowser","QQ","Baidu","Maxthon","Sogou","LBBROWSER","2345Explorer","TheWorld","XiaoMi","Quark","Qiyu","Wechat",,"WechatWork","Taobao","Alipay","Weibo","Douban","Suning","iQiYi"],os:["Windows","Linux","Mac OS","Android","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"],device:["Mobile","Tablet","iPad"]}},xe={getMatchMap:function(e){return{Trident:e.indexOf("Trident")>-1||e.indexOf("NET CLR")>-1,Presto:e.indexOf("Presto")>-1,WebKit:e.indexOf("AppleWebKit")>-1,Gecko:e.indexOf("Gecko/")>-1,Safari:e.indexOf("Safari")>-1,Chrome:e.indexOf("Chrome")>-1||e.indexOf("CriOS")>-1,IE:e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1,Edge:e.indexOf("Edge")>-1,Firefox:e.indexOf("Firefox")>-1||e.indexOf("FxiOS")>-1,"Firefox Focus":e.indexOf("Focus")>-1,Chromium:e.indexOf("Chromium")>-1,Opera:e.indexOf("Opera")>-1||e.indexOf("OPR")>-1,Vivaldi:e.indexOf("Vivaldi")>-1,Yandex:e.indexOf("YaBrowser")>-1,Arora:e.indexOf("Arora")>-1,Lunascape:e.indexOf("Lunascape")>-1,QupZilla:e.indexOf("QupZilla")>-1,"Coc Coc":e.indexOf("coc_coc_browser")>-1,Kindle:e.indexOf("Kindle")>-1||e.indexOf("Silk/")>-1,Iceweasel:e.indexOf("Iceweasel")>-1,Konqueror:e.indexOf("Konqueror")>-1,Iceape:e.indexOf("Iceape")>-1,SeaMonkey:e.indexOf("SeaMonkey")>-1,Epiphany:e.indexOf("Epiphany")>-1,360:e.indexOf("QihooBrowser")>-1||e.indexOf("QHBrowser")>-1,"360EE":e.indexOf("360EE")>-1,"360SE":e.indexOf("360SE")>-1,UC:e.indexOf("UC")>-1||e.indexOf(" UBrowser")>-1,QQBrowser:e.indexOf("QQBrowser")>-1,QQ:e.indexOf("QQ/")>-1,Baidu:e.indexOf("Baidu")>-1||e.indexOf("BIDUBrowser")>-1,Maxthon:e.indexOf("Maxthon")>-1,Sogou:e.indexOf("MetaSr")>-1||e.indexOf("Sogou")>-1,LBBROWSER:e.indexOf("LBBROWSER")>-1,"2345Explorer":e.indexOf("2345Explorer")>-1,TheWorld:e.indexOf("TheWorld")>-1,XiaoMi:e.indexOf("MiuiBrowser")>-1,Quark:e.indexOf("Quark")>-1,Qiyu:e.indexOf("Qiyu")>-1,Wechat:e.indexOf("MicroMessenger")>-1,Taobao:e.indexOf("AliApp(TB")>-1,Alipay:e.indexOf("AliApp(AP")>-1,Weibo:e.indexOf("Weibo")>-1,Douban:e.indexOf("com.douban.frodo")>-1,Suning:e.indexOf("SNEBUY-APP")>-1,iQiYi:e.indexOf("IqiyiApp")>-1,Windows:e.indexOf("Windows")>-1,Linux:e.indexOf("Linux")>-1||e.indexOf("X11")>-1,"Mac OS":e.indexOf("Macintosh")>-1,Android:e.indexOf("Android")>-1||e.indexOf("Adr")>-1,Ubuntu:e.indexOf("Ubuntu")>-1,FreeBSD:e.indexOf("FreeBSD")>-1,Debian:e.indexOf("Debian")>-1,"Windows Phone":e.indexOf("IEMobile")>-1||e.indexOf("Windows Phone")>-1,BlackBerry:e.indexOf("BlackBerry")>-1||e.indexOf("RIM")>-1,MeeGo:e.indexOf("MeeGo")>-1,Symbian:e.indexOf("Symbian")>-1,iOS:e.indexOf("like Mac OS X")>-1,"Chrome OS":e.indexOf("CrOS")>-1,WebOS:e.indexOf("hpwOS")>-1,Mobile:e.indexOf("Mobi")>-1||e.indexOf("iPh")>-1||e.indexOf("480")>-1,Tablet:e.indexOf("Tablet")>-1||e.indexOf("Nexus 7")>-1,iPad:e.indexOf("iPad")>-1}},matchInfoMap:function(e){var t=_e.navigator.userAgent||{},r=xe.getMatchMap(t);for(var n in _e.infoMap)for(var o=0;o<_e.infoMap[n].length;o++){var i=_e.infoMap[n][o];r[i]&&(e[n]=i)}},getOS:function(){return xe.matchInfoMap(this),this.os||"Unknown"},getOSVersion:function(){var e=this,t=_e.navigator.userAgent||{};e.osVersion="",e.osMajor="";var r={Windows:function(){var e=t.replace(/^.*Windows NT ([\d.]+);.*$/,"$1");return{6.4:"10",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP",5.1:"XP","5.0":"2000"}[e]||e},Android:function(){return t.replace(/^.*Android ([\d.]+);.*$/,"$1")},iOS:function(){return t.replace(/^.*OS ([\d_]+) like.*$/,"$1").replace(/_/g,".")},Debian:function(){return t.replace(/^.*Debian\/([\d.]+).*$/,"$1")},"Windows Phone":function(){return t.replace(/^.*Windows Phone( OS)? ([\d.]+);.*$/,"$2")},"Mac OS":function(){return t.replace(/^.*Mac OS X ([\d_]+).*$/,"$1").replace(/_/g,".")},WebOS:function(){return t.replace(/^.*hpwOS\/([\d.]+);.*$/,"$1")}};return r[e.os]&&(e.osVersion=r[e.os](),e.osVersion===t&&(e.osVersion="")),e.osVersion&&(e.osMajor=e.osVersion.split(".").length&&e.osVersion.split(".")[0]),{version:e.osVersion,osMajor:e.osMajor}},getOrientationStatu:function(){return window.matchMedia("(orientation: portrait)").matches?"竖屏":"横屏"},getDeviceType:function(){var e=this;return e.device="PC",xe.matchInfoMap(e),e.device},getNetwork:function(){var e=window.navigator.connection||window.navigator.mozConnection||window.navigator.webkitConnection,t="unknown",r=e?e.type||e.effectiveType:null;if(r&&"string"==typeof r)switch(r){case"bluetooth":case"cellular":case"slow-2g":case"2g":case"3g":t="cellular";break;case"none":t="none";break;case"ethernet":case"wifi":case"wimax":case"4g":t="wifi";break;case"other":case"unknown":t="unknown"}return t},getLanguage:function(){var e;return this.language=((e=(_e.navigator.browserLanguage||_e.navigator.language).split("-"))[1]&&(e[1]=e[1].toUpperCase()),e.join("_")),this.language},getBrowserInfo:function(){var e=this;xe.matchInfoMap(e);var t=_e.navigator.userAgent||{},r=function(e,t){var r=_e.navigator.mimeTypes;for(var n in r)if(r[n][e]==t)return!0;return!1},n=xe.getMatchMap(t),o=!1;if(window.chrome){var i=t.replace(/^.*Chrome\/([\d]+).*$/,"$1");i>36&&window.showModalDialog?o=!0:i>45&&(o=r("type","application/vnd.chromium.remoting-viewer"))}if(n.Baidu&&n.Opera&&(n.Baidu=!1),n.Mobile&&(n.Mobile=!(t.indexOf("iPad")>-1)),o&&(r("type","application/gameplugin")||_e.navigator&&void 0===_e.navigator.connection.saveData?n["360SE"]=!0:n["360EE"]=!0),n.IE||n.Edge)switch(window.screenTop-window.screenY){case 71:case 74:case 99:case 75:case 74:case 105:default:break;case 102:n["360EE"]=!0;break;case 104:n["360SE"]=!0}var s={Safari:function(){return t.replace(/^.*Version\/([\d.]+).*$/,"$1")},Chrome:function(){return t.replace(/^.*Chrome\/([\d.]+).*$/,"$1").replace(/^.*CriOS\/([\d.]+).*$/,"$1")},IE:function(){return t.replace(/^.*MSIE ([\d.]+).*$/,"$1").replace(/^.*rv:([\d.]+).*$/,"$1")},Edge:function(){return t.replace(/^.*Edge\/([\d.]+).*$/,"$1")},Firefox:function(){return t.replace(/^.*Firefox\/([\d.]+).*$/,"$1").replace(/^.*FxiOS\/([\d.]+).*$/,"$1")},"Firefox Focus":function(){return t.replace(/^.*Focus\/([\d.]+).*$/,"$1")},Chromium:function(){return t.replace(/^.*Chromium\/([\d.]+).*$/,"$1")},Opera:function(){return t.replace(/^.*Opera\/([\d.]+).*$/,"$1").replace(/^.*OPR\/([\d.]+).*$/,"$1")},Vivaldi:function(){return t.replace(/^.*Vivaldi\/([\d.]+).*$/,"$1")},Yandex:function(){return t.replace(/^.*YaBrowser\/([\d.]+).*$/,"$1")},Arora:function(){return t.replace(/^.*Arora\/([\d.]+).*$/,"$1")},Lunascape:function(){return t.replace(/^.*Lunascape[\/\s]([\d.]+).*$/,"$1")},QupZilla:function(){return t.replace(/^.*QupZilla[\/\s]([\d.]+).*$/,"$1")},"Coc Coc":function(){return t.replace(/^.*coc_coc_browser\/([\d.]+).*$/,"$1")},Kindle:function(){return t.replace(/^.*Version\/([\d.]+).*$/,"$1")},Iceweasel:function(){return t.replace(/^.*Iceweasel\/([\d.]+).*$/,"$1")},Konqueror:function(){return t.replace(/^.*Konqueror\/([\d.]+).*$/,"$1")},Iceape:function(){return t.replace(/^.*Iceape\/([\d.]+).*$/,"$1")},SeaMonkey:function(){return t.replace(/^.*SeaMonkey\/([\d.]+).*$/,"$1")},Epiphany:function(){return t.replace(/^.*Epiphany\/([\d.]+).*$/,"$1")},360:function(){return t.replace(/^.*QihooBrowser\/([\d.]+).*$/,"$1")},"360SE":function(){return{63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[t.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"360EE":function(){return{69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[t.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},Maxthon:function(){return t.replace(/^.*Maxthon\/([\d.]+).*$/,"$1")},QQBrowser:function(){return t.replace(/^.*QQBrowser\/([\d.]+).*$/,"$1")},QQ:function(){return t.replace(/^.*QQ\/([\d.]+).*$/,"$1")},Baidu:function(){return t.replace(/^.*BIDUBrowser[\s\/]([\d.]+).*$/,"$1")},UC:function(){return t.replace(/^.*UC?Browser\/([\d.]+).*$/,"$1")},Sogou:function(){return t.replace(/^.*SE ([\d.X]+).*$/,"$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/,"$1")},LBBROWSER:function(){var e="";t.indexOf("LieBaoFast")>-1&&(e=t.replace(/^.*LieBaoFast\/([\d.]+).*$/,"$1"));var r=t.replace(/^.*Chrome\/([\d]+).*$/,"$1");return e||{57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[r]||""},"2345Explorer":function(){return t.replace(/^.*2345Explorer\/([\d.]+).*$/,"$1")},TheWorld:function(){return t.replace(/^.*TheWorld ([\d.]+).*$/,"$1")},XiaoMi:function(){return t.replace(/^.*MiuiBrowser\/([\d.]+).*$/,"$1")},Quark:function(){return t.replace(/^.*Quark\/([\d.]+).*$/,"$1")},Qiyu:function(){return t.replace(/^.*Qiyu\/([\d.]+).*$/,"$1")},Wechat:function(){return t.replace(/^.*MicroMessenger\/([\d.]+).*$/,"$1")},WechatWork:function(){return t.replace(/^.*wxwork\/([\d.]+).*$/,"$1")},Taobao:function(){return t.replace(/^.*AliApp\(TB\/([\d.]+).*$/,"$1")},Alipay:function(){return t.replace(/^.*AliApp\(AP\/([\d.]+).*$/,"$1")},Weibo:function(){return t.replace(/^.*weibo__([\d.]+).*$/,"$1")},Douban:function(){return t.replace(/^.*com.douban.frodo\/([\d.]+).*$/,"$1")},Suning:function(){return t.replace(/^.*SNEBUY-APP([\d.]+).*$/,"$1")},iQiYi:function(){return t.replace(/^.*IqiyiVersion\/([\d.]+).*$/,"$1")}};return e.browserVersion="",e.browserMajor="",s[e.browser]&&(e.browserVersion=s[e.browser](),e.browserVersion==t&&(e.browserVersion="")),"Chrome"==e.browser&&t.match(/\S+Browser/)&&(e.browser=t.match(/\S+Browser/)[0],e.version=t.replace(/^.*Browser\/([\d.]+).*$/,"$1")),"Edge"==e.browser&&(e.version>"75"?e.engine="Blink":e.engine="EdgeHTML"),("Chrome"==e.browser&&parseInt(e.browserVersion)>27||n.Chrome&&"WebKit"==e.engine&&parseInt(e.browserVersion)>27||"Opera"==e.browser&&parseInt(e.version)>12||"Yandex"==e.browser)&&(e.engine="Blink"),e.browserVersion&&(e.browserMajor=e.browserVersion.split(".").length&&this.browserVersion.split(".")[0]),{browser:e.browser,browserVersion:e.browserVersion,engine:e.engine,browserMajor:e.browserMajor}},getGeoPostion:function(e){navigator&&navigator.geolocation&&navigator.geolocation.getCurrentPosition((function(t){e(t)}),(function(e){we.warn(e)}))}},Oe={os:xe.getOS(),osVersion:xe.getOSVersion().version,osVersionMajor:xe.getOSVersion().osMajor,browser:xe.getBrowserInfo().browser,browserVersion:xe.getBrowserInfo().browserVersion,browserVersionMajor:xe.getBrowserInfo().browserMajor,screenSize:window.screen.width+"*"+window.screen.height,networkType:xe.getNetwork(),divice:xe.getDeviceType()};function Se(e,t,r){var n=e[t],o=r(n),i=function(){if("function"==typeof o)return o.apply(this,arguments)};return e[t]=i,{stop:function(){e[t]===i?e[t]=n:o=n}}}function ke(e,t,r){return Se(e,t,(function(e){return function(){var t;return r&&r.before&&r.before.apply(this,arguments),"function"==typeof e&&(t=e.apply(this,arguments)),r&&r.after&&r.after.apply(this,arguments),t}}))}var Ee="?";function Ce(e){var t=[],r=Ue(e,"stack");return r&&E(r.split("\n"),(function(e){var r=function(e){var t=$e.exec(e);if(!t)return;var r=t[2]&&0===t[2].indexOf("native"),n=t[2]&&0===t[2].indexOf("eval"),o=Te.exec(t[2]);n&&o&&(t[2]=o[1],t[3]=o[2],t[4]=o[3]);return{args:r?[t[2]]:[],column:t[4]?+t[4]:void 0,func:t[1]||Ee,line:t[3]?+t[3]:void 0,url:r?void 0:t[2]}}(e)||function(e){var t=Be.exec(e);if(!t)return;return{args:[],column:t[3]?+t[3]:void 0,func:Ee,line:t[2]?+t[2]:void 0,url:t[1]}}(e)||function(e){var t=Me.exec(e);if(!t)return;return{args:[],column:t[4]?+t[4]:void 0,func:t[1]||Ee,line:+t[3],url:t[2]}}(e)||function(e){var t=Re.exec(e);if(!t)return;var r=t[3]&&t[3].indexOf(" > eval")>-1,n=Ae.exec(t[3]);r&&n&&(t[3]=n[1],t[4]=n[2],t[5]=void 0);return{args:t[2]?t[2].split(","):[],column:t[5]?+t[5]:void 0,func:t[1]||Ee,line:t[4]?+t[4]:void 0,url:t[3]}}(e);r&&(!r.func&&r.line&&(r.func=Ee),t.push(r))})),{message:Ue(e,"message"),name:Ue(e,"name"),stack:t}}var Le="((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\w+\\.|\\/).*?)",$e=new RegExp("^\\s*at (.*?) ?\\("+Le+"(?::(\\d+))?"+"(?::(\\d+))?\\)?\\s*$","i"),Te=new RegExp("\\((\\S*)(?::(\\d+))(?::(\\d+))\\)");var Be=new RegExp("^\\s*at ?"+Le+"(?::(\\d+))?"+"(?::(\\d+))??\\s*$","i");var Me=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;var Re=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,Ae=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;function Ue(e,t){if("object"==typeof e&&e&&t in e){var r=e[t];return"string"==typeof r?r:void 0}}var Ie=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;function Pe(e){var t=function(e){return ke(window,"onerror",{before:function(t,r,n,o,i){var s;if(i)s=Ce(i),e(s,i);else{var a,u={url:r,column:o,line:n},c=t;if("[object String]"==={}.toString.call(t)){var f=Ie.exec(c);f&&(a=f[1],c=f[2])}e(s={name:a,message:"string"==typeof c?c:void 0,stack:[u]},t)}}})}(e),r=function(e){return ke(window,"onunhandledrejection",{before:function(t){var r=t.reason||"Empty reason",n=Ce(r);e(n,r)}})}(e);return{stop:function(){t.stop(),r.stop()}}}var De={AGENT:"agent",CONSOLE:"console",NETWORK:"network",SOURCE:"source",LOGGER:"logger",CUSTOM:"custom"};function Fe(){var e=new Error;if(!e.stack)try{throw e}catch(e){}var t=Ce(e);return t.stack=t.stack.slice(2),je(t)}function je(e){var t=qe(e);return E(e.stack,(function(e){var r="?"===e.func?"<anonymous>":e.func,n=e.args&&e.args.length>0?"("+e.args.join(", ")+")":"",o=e.line?":"+e.line:"",i=e.line&&e.column?":"+e.column:"";t+="\n at "+r+n+" @ "+e.url+o+i})),t}function qe(e){return(e.name||"Error")+": "+e.message}function Qe(e,t){for(var r=e,n=[];r&&r.cause instanceof Error&&n.length<10;){var o=Ce(r.cause);n.push({message:r.cause.message,source:t,type:o&&o.name,stack:o&&je(o)}),r=r.cause}return n.length?n:void 0}function Ne(e){return Pe((function(t,r){e.notify(function(e){var t=e.stackTrace,r=e.originalError,n=e.handlingStack,o=e.startClocks,i=e.nonErrorPrefix,s=e.source,a=e.handling;return t&&(void 0!==t.message||r instanceof Error)?{startClocks:o,source:s,handling:a,originalError:r,message:t.message||"Empty message",stack:je(t),handlingStack:n,type:t.name,causes:Qe(r,s)}:{startClocks:o,source:s,handling:a,originalError:r,message:i+" "+W(r),stack:"No stack, consider using an instance of Error",handlingStack:n,type:t&&t.name}}({stackTrace:t,originalError:r,startClocks:J(),nonErrorPrefix:"Uncaught",source:De.SOURCE,handling:g}))}))}var Ve=function(e){this.observers=[],this.onLastUnsubscribe=void 0,this.onFirstSubscribe=e};Ve.prototype={subscribe:function(e){!this.observers.length&&this.onFirstSubscribe&&(this.onLastUnsubscribe=this.onFirstSubscribe()||void 0),this.observers.push(e);var t=this;return{unsubscribe:function(){t.observers=A(t.observers,(function(t){return e!==t})),!t.observers.length&&t.onLastUnsubscribe&&t.onLastUnsubscribe()}}},notify:function(e){E(this.observers,(function(t){t(e)}))}};var We=Ve;function Ge(){var e=[].slice.call(arguments),t=new We((function(){var r=U(e,(function(e){return e.subscribe((function(e){return t.notify(e)}))}));return function(){return E(r,(function(e){return e.unsubscribe()}))}}));return t}var He={};function Xe(e){var t=U(e,(function(e){return He[e]||(He[e]=function(e){var t=new We((function(){var r=console[e];return console[e]=function(){var n=[].slice.call(arguments);r.apply(console,arguments);var o=Fe();t.notify(ze(n,e,o))},function(){console[e]=r}}));return t}(e)),He[e]}));return Ge.apply(this,t)}function ze(e,t,r){var n,o=U(e,(function(e){return function(e){if("string"==typeof e)return e;if(e instanceof Error)return qe(Ce(e));return W(e,0,2)}(e)})).join(" ");if(t===me.error){var i=function(e,t){for(var r=0;r<e.length;r+=1){var n=e[r];if(t(n,r,e))return n}}(e,(function(e){return e instanceof Error}));n=i?je(Ce(i)):void 0,o="console error: "+o}return{api:t,message:o,stack:n,handlingStack:r}}var Ke={intervention:"intervention",deprecation:"deprecation",cspViolation:"csp_violation"};function Ye(e){var t,r=[];ae(e,Ke.cspViolation)&&r.push(t=new We((function(){return ie(document,u,(function(e){t.notify(function(e){var t=Ke.cspViolation,r="'"+e.blockedURI+"' blocked by '"+e.effectiveDirective+"' directive";return{type:Ke.cspViolation,subtype:e.effectiveDirective,message:t+": "+r,stack:Ze(e.effectiveDirective,r+' of the policy "'+oe(e.originalPolicy,100)+'"',e.sourceFile,e.lineNumber,e.columnNumber)}}(e))})).stop})));var n=A(e,(function(e){return e!==Ke.cspViolation}));return n.length&&r.push(function(e){var t=new We((function(){if(window.ReportingObserver){var r=function(e){E(e,(function(e){t.notify(function(e){var t=e.body,r=e.type;return{type:r,subtype:t.id,message:r+": "+t.message,stack:Ze(t.id,t.message,t.sourceFile,t.lineNumber,t.columnNumber)}}(e))}))},n=new window.ReportingObserver(r,{types:e,buffered:!0});return n.observe(),function(){n.disconnect()}}}));return t}(n)),Ge.apply(this,r)}function Ze(e,t,r,n,o){return r&&je({name:e,message:t,stack:[{func:"?",url:r,line:n,column:o}]})}var Je=function(){this._events=[],this.pendingEvents=[]};Je.prototype={emit:function(e){var t=[].slice.call(arguments,1);E(this._events,(function(r){if(r.type!==e)return!1;r.callback.apply(r.context,t)}))},on:function(e,t,r){"function"==typeof t&&this._events.push({type:e,callback:t,context:r||this})}};new Je;var et,tt="RAW_LOG_COLLECTED",rt="LOG_COLLECTED";function nt(){this.callbacks={}}function ot(e){return it(e,function(e){if(e.origin)return e.origin;var t=e.host.replace(/(:80|:443)$/,"");return e.protocol+"//"+t}(window.location)).href}function it(e,t){if(function(){if(void 0!==et)return et;try{var e=new URL("http://test/path");return et="http://test/path"===e.href}catch(e){et=!1}return et}())return void 0!==t?new URL(e,t):new URL(e);if(void 0===t&&!/:/.test(e))throw new Error("Invalid URL: "+e);var r=document,n=r.createElement("a");if(void 0!==t){var o=(r=document.implementation.createHTMLDocument("")).createElement("base");o.href=t,r.head.appendChild(o),r.body.appendChild(n)}return n.href=e,n}nt.prototype={notify:function(e,t){var r=this.callbacks[e];r&&E(r,(function(e){e(t)}))},subscribe:function(e,t){this.callbacks[e]||(this.callbacks[e]=[]),this.callbacks[e].push(t);var r=this;return{unsubscribe:function(){r.callbacks[e]=A(r.callbacks[e],(function(e){return e!==t}))}}}};var st=navigator.userAgent.toLowerCase(),at=function(){return/iphone os/.test(st)};var ut;function ct(e,t,r,n){var o=new Date;o.setTime(o.getTime()+r);var i="expires="+o.toUTCString(),s=n&&n.crossSite?"none":"strict",a=n&&n.domain?";domain="+n.domain:"",u=n&&n.secure?";secure":"";document.cookie=e+"="+t+";"+i+";path=/;samesite="+s+a+u}function ft(e){return function(e,t){var r=e.match("(?:^|;)\\s*"+t+"\\s*=\\s*([^;]+)");return r?r[1]:void 0}(document.cookie,e)}var lt=/^\s+|\s+$/g;function dt(e){return e.replace(lt,"")}function pt(e){return e.lastIndexOf("/")===e.length-1?dt(e)+"v1/write/logging":dt(e)+"/v1/write/logging"}function vt(e){return e.lastIndexOf("/")===e.length-1?dt(e)+"v1/write/rum/replay":dt(e)+"/v1/write/rum/replay"}var ht,gt;function bt(e){var t,r,n;if(void 0===e.sampleRate||(t=e.sampleRate,j(t)&&t>=0&&t<=100))return C({beforeSend:e.beforeSend&&(r=e.beforeSend,n="beforeSend threw an error:",function(){var e=[].slice.call(arguments);try{return r.apply(this,e)}catch(e){we.error(n,e)}}),cookieOptions:yt(e),sampleRate:ve(e.sampleRate,100),service:e.service,version:e.version,env:e.env,silentMultipleInit:!!e.silentMultipleInit,batchBytesLimit:16384,eventRateLimiterThreshold:3e3,flushTimeout:3e4,batchMessagesLimit:50,messageBytesLimit:262144,resourceUrlLimit:5120},function(e){var t=function(e){return!1};"isIntakeUrl"in e&&B(e.isIntakeUrl)&&F(e.isIntakeUrl())&&(t=e.isIntakeUrl);var r,n=function(e){return!1};return"isServerError"in e&&B(e.isServerError)&&F(e.isServerError())&&(n=e.isServerError),{datakitUrl:(r=e.datakitUrl||e.datakitOrigin,r.lastIndexOf("/")===r.length-1?dt(r)+"v1/write/rum":dt(r)+"/v1/write/rum"),logsEndpoint:pt(e.datakitOrigin),sessionReplayEndPoint:vt(e.datakitOrigin),isIntakeUrl:t,isServerError:n}}(e));we.error("Sample Rate should be a number between 0 and 100")}function yt(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===ut){for(var e="dd_site_test_".concat(Q()),t=window.location.hostname.split("."),r=t.pop();t.length&&!ft(e);)r=t.pop()+"."+r,ct(e,"test",z,{domain:r});ut=r}return ut}()),t}function mt(){var e;return ht||(e=new We((function(){if(window.fetch){var t=Se(window,"fetch",(function(t){return function(r,n){var o,i=function(e,t,r){var n=r&&r.method||"object"==typeof t&&t.method||"GET",o=ot("object"==typeof t&&t.url||t),i=J(),s={state:"start",init:r,input:t,method:n,startClocks:i,url:o};return e.notify(s),s}(e,r,n);return i?(o=t.call(this,i.input,i.init),function(e,t,r){var n=function(t){var n=r;n.state="resolve","stack"in t||t instanceof Error?(n.status=0,n.isAborted=t instanceof DOMException&&t.code===DOMException.ABORT_ERR,n.error=t):"status"in t&&(n.response=t,n.responseType=t.type,n.status=t.status,n.isAborted=!1),e.notify(n)};t.then(n,n)}(e,o,i)):o=t.call(this,r,n),o}}));return t.stop}})),ht=e),ht}var wt={};function _t(){var e;return gt||(e=new We((function(){var t=ke(XMLHttpRequest.prototype,"open",{before:xt}),r=ke(XMLHttpRequest.prototype,"send",{before:function(){Ot.call(this,e)}}),n=ke(XMLHttpRequest.prototype,"abort",{before:kt});return function(){t.stop(),r.stop(),n.stop()}})),gt=e),gt}function xt(e,t){var r=this._DATAFLUX_REQUEST_UUID||Q();this._DATAFLUX_REQUEST_UUID=r,wt[r]={state:"open",method:e,url:ot(String(t))}}function Ot(e){var t=wt[this._DATAFLUX_REQUEST_UUID];if(t){var r=t;r.state="start",r.startTime=Z(),r.startClocks=J(),r.isAborted=!1,r.xhr=this;var n=!1,o=ke(this,"onreadystatechange",{before:function(){this.readyState===XMLHttpRequest.DONE&&i.call(this)}}),i=function i(){if(this.removeEventListener("loadend",i),o.stop(),!n){n=!0;var s,a=t;a.state="complete",a.duration=(s=r.startClocks.timeStamp,ee()-s),a.status=this.status,e.notify(C({},a)),St.call(this)}};this.addEventListener("loadend",i),e.notify(r)}}function St(){delete wt[this._DATAFLUX_REQUEST_UUID],delete this._DATAFLUX_REQUEST_UUID}function kt(){var e=wt[this._DATAFLUX_REQUEST_UUID];e&&(e.isAborted=!0)}var Et={HIDDEN:"visibility_hidden",UNLOADING:"before_unload",PAGEHIDE:"page_hide",FROZEN:"page_frozen"};var Ct={sdk_name:"_dd.sdk_name",sdk_version:"_dd.sdk_version",app_id:"application.id",env:"env",service:"service",version:"version",userid:"user.id",user_email:"user.email",user_name:"user.name",session_id:"session.id",session_type:"session.type",session_sampling:"session.is_sampling",session_has_replay:"session.has_replay",is_signin:"user.is_signin",os:"device.os",os_version:"device.os_version",os_version_major:"device.os_version_major",browser:"device.browser",browser_version:"device.browser_version",browser_version_major:"device.browser_version_major",screen_size:"device.screen_size",network_type:"device.network_type",device:"device.device",view_id:"view.id",view_referrer:"view.referrer",view_url:"view.url",view_host:"view.host",view_path:"view.path",view_name:"view.path",view_path_group:"view.path_group",view_url_query:"view.url_query"},Lt={action_id:"action.id",view_in_foreground:"view.in_foreground"},$t={view:{type:d,tags:{view_loading_type:"view.loading_type",view_apdex_level:"view.apdex_level",is_active:"view.is_active"},fields:{session_replay_stats:"_dd.replay_stats",view_error_count:"view.error.count",view_resource_count:"view.resource.count",view_long_task_count:"view.long_task.count",view_action_count:"view.action.count",first_contentful_paint:"view.first_contentful_paint",largest_contentful_paint:"view.largest_contentful_paint",cumulative_layout_shift:"view.cumulative_layout_shift",first_input_delay:"view.first_input_delay",loading_time:"view.loading_time",dom_interactive:"view.dom_interactive",dom_content_loaded:"view.dom_content_loaded",dom_complete:"view.dom_complete",load_event:"view.load_event",first_input_time:"view.first_input_time",first_meaningful_paint:"view.largest_contentful_paint",first_paint_time:"view.fpt",resource_load_time:"view.resource_load_time",time_to_interactive:"view.tti",dom:"view.dom",dom_ready:"view.dom_ready",time_spent:"view.time_spent",in_foreground_periods:"view.in_foreground_periods",frustration_count:"view.frustration.count"}},resource:{type:p,tags:{trace_id:"_dd.trace_id",span_id:"_dd.span_id",resource_url:"resource.url",resource_url_host:"resource.url_host",resource_url_path:"resource.url_path",resource_url_path_group:"resource.url_path_group",resource_url_query:"resource.url_query",resource_type:"resource.type",resource_status:"resource.status",resource_status_group:"resource.status_group",resource_method:"resource.method"},fields:{duration:"resource.duration",resource_size:"resource.size",resource_dns:"resource.dns",resource_tcp:"resource.tcp",resource_ssl:"resource.ssl",resource_ttfb:"resource.ttfb",resource_trans:"resource.trans",resource_redirect:"resource.redirect",resource_first_byte:"resource.firstbyte",resource_dns_time:"resource.dns_time",resource_download_time:"resource.download_time",resource_first_byte_time:"resource.first_byte_time",resource_connect_time:"resource.connect_time",resource_ssl_time:"resource.ssl_time",resource_redirect_time:"resource.redirect_time"}},error:{type:f,tags:{error_id:"error.id",trace_id:"_dd.trace_id",span_id:"_dd.span_id",error_source:"error.source",error_type:"error.type",error_handling:"error.handling"},fields:{error_message:["string","error.message"],error_stack:["string","error.stack"],error_causes:["string","error.causes"]}},long_task:{type:l,tags:{long_task_id:"long_task.id"},fields:{duration:"long_task.duration"}},action:{type:c,tags:{action_type:"action.type"},fields:{action_name:"action.target.name",duration:"action.loading_time",action_error_count:"action.error.count",action_resource_count:"action.resource.count",action_frustration_types:"action.frustration.type",action_long_task_count:"action.long_task.count"}},browser_log:{type:v,tags:{error_source:"error.source",error_type:"error.type",error_resource_url:"http.url",error_resource_url_host:"http.url_host",error_resource_url_path:"http.url_path",error_resource_url_path_group:"http.url_path_group",error_resource_status:"http.status_code",error_resource_status_group:"http.status_group",error_resource_method:"http.method",action_id:"user_action.id",service:"service",status:"status"},fields:{message:["string","message"]}}};var Tt,Bt=144e5,Mt=9e5,Rt=/^([a-z]+)=([a-z0-9-]+)$/,At="&",Ut="_dataflux_s",It=[];function Pt(e,t){if(void 0===t&&(t=0),Tt||(Tt=e),e===Tt)if(t>=100)jt();else{var r,n=Qt();if(Dt()){if(n.lock)return void Ft(e,t);if(r=Q(),n.lock=r,qt(n,e.options),(n=Qt()).lock!==r)return void Ft(e,t)}var o=e.process(n);if(Dt()&&(n=Qt()).lock!==r)Ft(e,t);else{if(o&&function(e,t){if(Nt(e))return void function(e){ct(Ut,"",0,e)}(t);e.expire=String(te()+Mt),qt(e,t)}(o,e.options),Dt()&&(!o||!Nt(o))){if((n=Qt()).lock!==r)return void Ft(e,t);delete n.lock,qt(n,e.options),o=n}e.after&&e.after(o||n),jt()}}else It.push(e)}function Dt(){return!!window.chrome||/HeadlessChrome/.test(window.navigator.userAgent)}function Ft(e,t){setTimeout((function(){Pt(e,t+1)}),10)}function jt(){Tt=void 0;var e=It.shift();e&&Pt(e)}function qt(e,t){ct(Ut,function(e){return U((t=e,r=[],E(t,(function(e,t){r.push([t,e])})),r),(function(e){return e[0]+"="+e[1]})).join(At);var t,r}(e),Mt,t)}function Qt(){var e=ft(Ut),t={};return function(e){return void 0!==e&&(-1!==e.indexOf(At)||Rt.test(e))}(e)&&E(e.split(At),(function(e){var r=Rt.exec(e);if(null!==r){var n=r[1],o=r[2];t[n]=o}})),t}function Nt(e){return P(e)}function Vt(e,t,r){var n=new We,o=new We,i=setInterval((function(){Pt({options:e,process:function(e){return c(e)?void 0:{}},after:a})}),1e3),s=function(){var e=Qt();if(c(e))return e;return{}}();function a(e){return c(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 c(e){return(void 0===e.created||te()-Number(e.created)<Bt)&&(void 0===e.expire||te()<Number(e.expire))}return{expandOrRenewSession:q((function(){var o;Pt({options:e,process:function(e){var n=a(e);return o=function(e){var n=r(e[t]),o=n.trackingType,i=n.isTracked;e[t]=o,i&&!e.id&&(e.id=Q(),e.created=String(te()));return i}(n),n},after:function(e){o&&!u()&&function(e){s=e,n.notify()}(e),s=e}})}),1e3).throttled,expandSession:function(){Pt({options:e,process:function(e){return u()?a(e):void 0}})},getSession:function(){return s},renewObservable:n,expireObservable:o,stop:function(){clearInterval(i)}}}var Wt=[],Gt=function(e,s,a){var u=Vt(e,s,a);Wt.push((function(){return u.stop()}));var c,f=new ye(144e5);function l(){return{id:u.getSession().id,trackingType:u.getSession()[s]}}return Wt.push((function(){return f.stop()})),u.renewObservable.subscribe((function(){f.add(l(),Z())})),u.expireObservable.subscribe((function(){f.closeActive(Z())})),u.expandOrRenewSession(),f.add(l(),[0,re()][0]),c=se(window,[t,o,r,n],(function(){return u.expandOrRenewSession()}),{capture:!0,passive:!0}),Wt.push(c.stop),function(e){var t=function(){"visible"===document.visibilityState&&e()},r=ie(document,i,t);Wt.push(r.stop);var n=setInterval(t,6e4);Wt.push((function(){clearInterval(n)}))}((function(){return u.expandSession()})),{findActiveSession:function(e){return f.find(e)},renewObservable:u.renewObservable,expireObservable:u.expireObservable}};var Ht=3145728,Xt=0,zt=1,Kt=2,Yt=0,Zt=1;function Jt(e,t,r,n){t.transportStatus===Xt&&0===t.queuedPayloads.size()&&t.bandwidthMonitor.canHandle(e)?tr(e,t,r,{onSuccess:function(){return rr(Yt,t,r,n)},onFailure:function(){t.queuedPayloads.enqueue(e),er(t,r,n)}}):t.queuedPayloads.enqueue(e)}function er(e,t,r){e.transportStatus===Kt&&setTimeout((function(){tr(e.queuedPayloads.first(),e,t,{onSuccess:function(){e.queuedPayloads.dequeue(),e.currentBackoffTime=1e3,rr(Zt,e,t,r)},onFailure:function(){e.currentBackoffTime=Math.min(256e3,2*e.currentBackoffTime),er(e,t,r)}})}),e.currentBackoffTime)}function tr(e,t,r,n){var o=n.onSuccess,i=n.onFailure;t.bandwidthMonitor.add(e),r(e,(function(r){t.bandwidthMonitor.remove(e),!function(e){return"opaque"!==e.type&&(0===e.status&&!navigator.onLine||408===e.status||429===e.status||e.status>=500)}(r)?(t.transportStatus=Xt,o()):(t.transportStatus=t.bandwidthMonitor.ongoingRequestCount>0?zt:Kt,t.lastFailureStatus=r.status,i())}))}function rr(e,t,r,n){e===Yt&&t.queuedPayloads.isFull()&&!t.queueFullReported&&(n({message:"Reached max events size queued for upload: 3MiB",source:De.AGENT,startClocks:J()}),t.queueFullReported=!0);var o=t.queuedPayloads;for(t.queuedPayloads=nr();o.size()>0;)Jt(o.dequeue(),t,r,n)}function nr(){var e=[];return{bytesCount:0,enqueue:function(t){this.isFull()||(e.push(t),this.bytesCount+=t.bytesCount)},first:function(){return e[0]},dequeue:function(){var t=e.shift();return t&&(this.bytesCount-=t.bytesCount),t},size:function(){return e.length},isFull:function(){return this.bytesCount>=Ht}}}function or(e){return e?e+(-1===e.indexOf("?")?"?":"&")+"precision=ms":e}function ir(e,t,r){var n={transportStatus:Xt,lastFailureStatus:0,currentBackoffTime:1e3,bandwidthMonitor:{ongoingRequestCount:0,ongoingByteCount:0,canHandle:function(e){return 0===this.ongoingRequestCount||this.ongoingByteCount+e.bytesCount<=81920&&this.ongoingRequestCount<32},add:function(e){this.ongoingRequestCount+=1,this.ongoingByteCount+=e.bytesCount},remove:function(e){this.ongoingRequestCount-=1,this.ongoingByteCount-=e.bytesCount}},queuedPayloads:nr(),queueFullReported:!1},o=function(r,n){return function(e,t,r,n){var o=r.data,i=r.bytesCount,s=or(e);(function(){try{return window.Request&&"keepalive"in new Request("http://a")}catch(e){return!1}})()&&i<t?fetch(s,{method:"POST",body:o,keepalive:!0,mode:"cors"}).then((function(e){"function"==typeof n&&n({status:e.status,type:e.type})}),(function(){sr(s,o,n)})):sr(s,o,n)}(e,t,r,n)};return{send:function(e){Jt(e,n,o,r)},sendOnExit:function(r){!function(e,t,r){var n=r.data,o=r.bytesCount,i=or(e);if(navigator.sendBeacon&&o<t)try{if(navigator.sendBeacon(i,n))return}catch(e){}sr(i,n)}(e,t,r)}}}function sr(e,t,r){var n=new XMLHttpRequest;n.open("POST",e,!0),n.send(t),n.addEventListener("loadend",(function(){"function"==typeof r&&r({status:n.status})}))}var ar=/[^\u0000-\u007F]/,ur="custom_keys",cr=function(e){if(!e||!e.type)return{rowStr:"",rowData:void 0};var t={tags:{},fields:{}},r=!1,n="";return E($t,(function(o,i){if(o.type===e.type){n+=i+",",t.measurement=i;var s=[],a=L({},Ct,o.tags),u=["date","type",ur];E(a,(function(r,n){var o=ne(e,r);u.push(n),(o||j(o))&&(t.tags[n]=function(e){return D(e)?e:W(e)}(o),s.push(le(n)+"="+le(o)))}));var c=[],f=L({},Lt,o.fields);if(E(f,(function(r,n){if(T(r)&&2===r.length){r[0];var o=r[1],i=ne(e,o);u.push(n),(i||j(i))&&(t.fields[n]=i,c.push(le(n)+"="+pe(i)))}else if(D(r)){i=ne(e,r);u.push(n),(i||j(i))&&(t.fields[n]=i,c.push(le(n)+"="+pe(i)))}})),e.tags&&I(e.tags)&&!P(e.tags)){var l=[];E(e.tags,(function(e,r){u.indexOf(r)>-1||(u.push(r),(e||j(e))&&(l.push(r),t.fields[r]=e,c.push(le(r)+"="+pe(e))))})),l.length&&(t.fields.custom_keys=pe(l),c.push(le(ur)+"="+pe(l)))}e.type===v&&E(e,(function(e,r){-1===u.indexOf(r)&&(j(e)||D(e)||F(e))&&(t.fields[r]=e,c.push(le(r)+"="+pe(e)))})),s.length&&(n+=s.join(",")),c.length&&(n+=" ",n+=c.join(","),r=!0),n=n+" "+e.date,t.time=(d=e.date,j(d)?Y(1e6*d,0):d)}var d})),{rowStr:r?n:"",rowData:r?t:void 0}},fr=function(e,t,r,n,o,i){this.pushOnlyBuffer=[],this.upsertBuffer={},this.bufferBytesCount=0,this.bufferMessagesCount=0,this.request=e,this.batchMessagesLimit=t,this.batchBytesLimit=r,this.messageBytesLimit=n,this.flushTimeout=o;var s=this;i.subscribe((function(){s.flush(s.request.sendOnExit)})),this.flushPeriodically()};fr.prototype.add=function(e){this.addOrUpdate(e)},fr.prototype.upsert=function(e,t){this.addOrUpdate(e,t)},fr.prototype.flush=function(e){if("function"!=typeof e&&(e=this.request.send),0!==this.bufferMessagesCount){var t=this.pushOnlyBuffer.concat(M(this.upsertBuffer)),r=this.bufferBytesCount;this.pushOnlyBuffer=[],this.upsertBuffer={},this.bufferBytesCount=0,this.bufferMessagesCount=0,t.length>0&&e({data:t.join("\n"),bytesCount:r})}},fr.prototype.flushOnExit=function(){this.flush(this.request.sendOnExit)},fr.prototype.computeBytesCount=function(e){return ar.test(e)?void 0!==window.TextEncoder?(new TextEncoder).encode(e).length:new Blob([e]).size:e.length},fr.prototype.addOrUpdate=function(e,t){var r=this.process(e),n=r.processedMessage,o=r.messageBytesCount;o>=this.messageBytesLimit?we.warn("Discarded a message whose size was bigger than the maximum allowed size "+this.messageBytesLimit+"KB."):(this.hasMessageFor(t)&&this.remove(t),this.willReachedBytesLimitWith(o)&&this.flush(),this.push(n,o,t),this.isFull()&&this.flush())},fr.prototype.process=function(e){var t=cr(e).rowStr;return{processedMessage:t,messageBytesCount:this.computeBytesCount(t)}},fr.prototype.push=function(e,t,r){this.bufferMessagesCount>0&&(this.bufferBytesCount+=1),void 0!==r?this.upsertBuffer[r]=e:this.pushOnlyBuffer.push(e),this.bufferBytesCount+=t,this.bufferMessagesCount+=1},fr.prototype.remove=function(e){var t=this.upsertBuffer[e];delete this.upsertBuffer[e];var r=this.computeBytesCount(t);this.bufferBytesCount-=r,this.bufferMessagesCount-=1,this.bufferMessagesCount>0&&(this.bufferBytesCount-=1)},fr.prototype.hasMessageFor=function(e){return void 0!==e&&void 0!==this.upsertBuffer[e]},fr.prototype.willReachedBytesLimitWith=function(e){return this.bufferBytesCount+e+1>=this.batchBytesLimit},fr.prototype.isFull=function(){return this.bufferMessagesCount===this.batchMessagesLimit||this.bufferBytesCount>=this.batchBytesLimit},fr.prototype.flushPeriodically=function(){var e=this;setTimeout((function(){e.flush(),e.flushPeriodically()}),this.flushTimeout)};var lr=fr;var dr={sdkVersion:"2.0.0",sdkName:"df_web_logs_sdk"};function pr(e,t,r){return void 0===e?[]:"all"===e||T(e)&&function(e,t,r){if(e.every)return e.every(t);for(var n=!0,o=0;o<e.length;o++)if(O.call(e,o)){var i=e[o];if(!t.call(r,i,o,e)){n=!1;break}}return n}(e,(function(e){return ae(t,e)}))?"all"===e?t:function(e){for(var t,r=[],n={},o=0;o<e.length;o++)(t=e[o])in n||(n[t]=!0,r.push(t));return r}(e):void we.error(r+' should be "all" or an array with allowed values "'+t.join('", "')+'"')}var vr={debug:"debug",error:"error",info:"info",warn:"warn",critical:"critical"},hr="console",gr="http",br=R(vr);function yr(e,t,r,n,o){this.contextManager=ue(),void 0===r&&(r=gr),void 0===n&&(n=vr.debug),void 0===o&&(o={}),this.handleLogStrategy=e,this.handlerType=r,this.level=n,this.contextManager.set(C({},o,t?{logger:{name:t}}:void 0))}yr.prototype={log:function(e,t,r){void 0===r&&(r=vr.info),this.handleLogStrategy({message:e,context:V(t),status:r},this)},debug:function(e,t){this.log(e,t,vr.debug)},info:function(e,t){this.log(e,t,vr.info)},warn:function(e,t){this.log(e,t,vr.warn)},critical:function(e,t){this.log(e,t,vr.critical)},error:function(e,t){var r={error:{origin:De.LOGGER}};this.log(e,$(r,t),vr.error)},setContext:function(e){this.contextManager.set(e)},getContext:function(){return this.contextManager.get()},addContext:function(e,t){this.contextManager.add(e,t)},removeContext:function(e){this.contextManager.remove(e)},setHandler:function(e){this.handlerType=e},getHandler:function(){return this.handlerType},setLevel:function(e){this.level=e},getLevel:function(){return this.level}};var mr="0",wr="1";function _r(e){var t=Gt(e.cookieOptions,"logs",(function(t){return function(e,t){var r=function(e){return e===mr||e===wr}(t)?t:function(e){if(t=e.sampleRate,!(0!==t&&100*Math.random()<=t))return mr;var t;return wr}(e);return{trackingType:r,isTracked:r===wr}}(e,t)}));return{findTrackedSession:function(e){var r=t.findActiveSession(e);return r&&r.trackingType===wr?{id:r.id}:void 0}}}var xr={[vr.debug]:0,[vr.info]:1,[vr.warn]:2,[vr.error]:3};function Or(e,t,r){var n=r.getHandler(),o=T(n)?n:[n];return xr[e]>=xr[r.getLevel()]&&ae(o,t)}function Sr(e,t,r,n,o,i){var s=br.concat(["custom"]),a={};E(s,(function(e){var r,n,o,s,u;a[e]=(r=e,n=t.eventRateLimiterThreshold,o=i,s=0,u=!1,{isLimitReached:function(){if(0===s&&setTimeout((function(){s=0}),K),(s+=1)<=n||u)return u=!1,!1;if(s===n+1){u=!0;try{o({message:"Reached max number of "+r+"s by minute: "+n,source:De.AGENT,startClocks:J()})}finally{u=!1}}return!0}})})),r.subscribe(tt,(function(i){var s=i.rawLogsEvent,u=i.messageContext||void 0,c=i.messageContext||void 0,f=i.logger||o,l=s.date-re(),d=e.findTrackedSession(l);if(d){var p=c||n(),h=$({service:t.service||"browser",env:t.env||"",version:t.version||"",_dd:{sdkName:t.sdkName,sdkVersion:t.sdkVersion},session:{id:d.id},view:p.view,device:Oe,type:v},p.context,function(e){return t(window.DATAFLUX_RUM);function t(t){if(t&&t.getInternalContext)return t.getInternalContext(e)}}(l),s,f.getContext(),u);!Or(s.status,gr,f)||t.beforeSend&&!1===t.beforeSend(h)||h.error&&h.error.origin!==De.AGENT&&ve(a[h.status],a.custom).isLimitReached()||r.notify(rt,ce(h))}}))}var kr={[me.log]:vr.info,[me.debug]:vr.debug,[me.info]:vr.info,[me.warn]:vr.warn,[me.error]:vr.error};var Er={[Ke.cspViolation]:vr.error,[Ke.intervention]:vr.error,[Ke.deprecation]:vr.warn};function Cr(e,t){if(!e.forwardErrorsToLogs)return{stop:H};var r=_t().subscribe((function(e){"complete"===e.state&&o(h.XHR,e)})),n=mt().subscribe((function(e){"complete"===e.state&&o(h.FETCH,e)}));function o(r,n){function o(e){var o,i,s,a,u,c=(o=n.url,i=function(e){this._fields={Username:4,Password:5,Port:7,Protocol:2,Host:6,Path:8,URL:0,QueryString:9,Fragment:10},this._values={},this._regex=null,this._regex=/^((\w+):\/\/)?((\w+):?(\w+)?@)?([^\/\?:]+):?(\d+)?(\/?[^\?#]+)?\??([^#]+)?#?(\w*)/,void 0!==e&&this._parse(e)},i.prototype.setUrl=function(e){this._parse(e)},i.prototype._initValues=function(){for(var e in this._fields)this._values[e]=""},i.prototype.addQueryString=function(e){if("object"!=typeof e)return!1;var t=this._values.QueryString||"";for(var r in e)t=new RegExp(r+"[^&]+").test(t)?t.replace(new RegExp(r+"[^&]+"),r+"="+e[r]):"&"===t.slice(-1)?t+r+"="+e[r]:""===t?r+"="+e[r]:t+"&"+r+"="+e[r];this._values.QueryString=t},i.prototype.getParse=function(){return this._values},i.prototype.getUrl=function(){var e="";return e+=this._values.Origin,(e+=this._values.Path)+(this._values.QueryString?"?"+this._values.QueryString:"")},i.prototype._parse=function(e){this._initValues();var t=this._regex.exec(e);if(!t)throw"DPURLParser::_parse -> Invalid URL";for(var r in this._fields)void 0!==t[this._fields[r]]&&(this._values[r]=t[this._fields[r]]);this._values.Path=this._values.Path||"/",this._values.Hostname=this._values.Host.replace(/:\d+$/,""),this._values.Origin=this._values.Protocol+"://"+this._values.Hostname+(this._values.Port?":"+this._values.Port:"")},new i(o)).getParse();t.notify(tt,{rawLogsEvent:{message:$r(r)+" error "+n.method+" "+n.url,date:n.startClocks.timeStamp,error:{origin:De.NETWORK,stack:e||"Failed to load"},http:{method:n.method,status_code:n.status,url:n.url,statusGroup:(u=n.status,u?String(u).substr(0,1)+String(u).substr(1).replace(/\d*/g,"x"):u),urlHost:c.Host,urlPath:c.Path,urlPathGroup:(s=c.Path,a="",s&&(a=s.replace(/\/([^\/]*)\d([^\/]*)/g,"/?").replace(/\/$/g,"")),a||"/")},status:vr.error,origin:De.NETWORK}})}!e.isIntakeUrl(n.url)&&(function(e){return 0===e.status&&"opaque"!==e.responseType}(n)||function(e){return e.status>=500}(n)||e.isServerError(n))&&("xhr"in n?function(e,t,r){"string"==typeof e.response?r(Lr(e.response,t)):r(e.response)}(n.xhr,e,o):n.response?function(e,t,r){var n=function(e){try{return e.clone()}catch(e){return}}(e);n&&n.body?window.TextDecoder?function(e,t,r){!function(e,t,r){var n=e.getReader(),o=[],i=0;function s(){var e,s;if(n.cancel().catch(H),r.collectStreamBody){var a;if(1===o.length)a=o[0];else{a=new Uint8Array(i);var u=0;E(o,(function(e){a.set(e,u),u+=e.length}))}e=a.slice(0,r.bytesLimit),s=a.length>r.bytesLimit}t(void 0,e,s)}!function e(){n.read().then((function(t){t.done?s():(r.collectStreamBody&&o.push(t.value),(i+=t.value.length)>r.bytesLimit?s():e())}),(function(e){t(e)}))}()}(e,(function(e,t,n){if(e)r(e);else{var o=(new TextDecoder).decode(t);n&&(o+="..."),r(void 0,o)}}),{bytesLimit:t,collectStreamBody:!0})}(n.body,t.requestErrorResponseLengthLimit,(function(e,t){r(e?"Unable to retrieve response: "+e:t)})):n.text().then((function(e){return r(Lr(e,t))}),(function(e){return r("Unable to retrieve response: "+e)})):r()}(n.response,e,o):n.error&&function(e,t,r){r(Lr(je(Ce(e)),t))}(n.error,e,o))}return{stop:function(){r.unsubscribe(),n.unsubscribe()}}}function Lr(e,t){return e.length>t.requestErrorResponseLengthLimit?e.substring(0,t.requestErrorResponseLengthLimit)+"...":e}function $r(e){return h.XHR===e?"XHR":"Fetch"}function Tr(e,t,r,n){var o=function(e,t,r,n){var o=function(t){return new lr(ir(t,e.batchBytesLimit,r),e.batchMessagesLimit,e.batchBytesLimit,e.messageBytesLimit,e.flushTimeout,n)}(t);return{add:function(e){o.add(e)}}}(e,e.logsEndpoint,r,n);t.subscribe(rt,(function(e){o.add(e)}))}const Br=function(e){var t,r,n=!1,o=ue(),i={},s=function(){},a=new ge,u=function(e,t,r,n){void 0===r&&(r=V(l())),void 0===n&&(n=ee()),a.add((function(){return u(e,t,r,n)}))},c=function(){},f=new yr((function(){return u.apply(this,arguments)}));function l(){return{view:{referrer:document.referrer,url:window.location.href},context:o.get()}}return t={logger:f,init:function(t){if(function(e){return n?(e.silentMultipleInit||we.error("DD_LOGS is already initialized."),!1):!(!e.datakitUrl&&!e.datakitOrigin)||(we.error("datakitOrigin is not configured, no RUM data will be collected."),!1)}(t)){var r=function(e){var t=bt(e),r=pr(e.forwardConsoleLogs,M(me),"Forward Console Logs"),n=pr(e.forwardReports,M(Ke),"Forward Reports");if(t&&r&&n)return e.forwardErrorsToLogs&&!ae(r,me.error)&&r.push(me.error),C({forwardErrorsToLogs:!1!==e.forwardErrorsToLogs,forwardConsoleLogs:r,forwardReports:n,requestErrorResponseLengthLimit:32768},t,dr)}(t);if(r){var o=e(r,l,f);u=o.handleLog,s=o.getInternalContext,c=function(){return V(t)},a.drain(),n=!0}}},getGlobalContext:o.getContext,setGlobalContext:o.setContext,setGlobalContextProperty:o.setContextProperty,removeGlobalContextProperty:o.removeContextProperty,clearGlobalContext:o.clearContext,createLogger:function(e,t){return void 0===t&&(t={}),i[e]=new yr((function(){return u(this.arguments)}),e,t.handler,t.level,t.context),i[e]},getLogger:function(e){return i[e]},getInitConfiguration:function(){return c()},getInternalContext:function(e){return s(e)}},r=L({},t,{onReady:function(e){e()}}),Object.defineProperty(r,"_setDebug",{get:function(){return setDebugMode},enumerable:!1}),r}((function(t,r,n){var o,u=new nt,c=function(e){u.notify(tt,{rawLogsEvent:{message:e.message,date:e.startClocks.timeStamp,error:{origin:De.AGENT},origin:De.AGENT,status:vr.error}})},f=o=new We((function(){var t=se(document,[i,s,a],(function(e){e.type===i&&"hidden"===document.visibilityState?o.notify({reason:Et.HIDDEN}):e.type===s&&o.notify({reason:Et.FROZEN})}),{capture:!0}),r=ie(window,e,(function(){o.notify({reason:Et.UNLOADING})}));return function(){t.stop(),r.stop()}}));Cr(t,u),function(e,t){if(!e.forwardErrorsToLogs)return{stop:H};var r=new We,n=Ne(r),o=r.subscribe((function(e){t.notify(tt,{rawLogsEvent:{message:e.message,date:e.startClocks.timeStamp,error:{kind:e.type,origin:De.SOURCE,stack:e.stack},origin:De.SOURCE,status:vr.error}})}))}(t,u),function(e,t){var r=Xe(e.forwardConsoleLogs).subscribe((function(e){t.notify(tt,{rawLogsEvent:{date:ee(),message:e.message,origin:De.CONSOLE,error:e.api===me.error?{origin:De.CONSOLE,stack:e.stack}:void 0,status:kr[e.api]}})}))}(t,u),function(e,t){var r=Ye(e.forwardReports).subscribe((function(e){var r,n,o,i=e.message,s=Er[e.type];s===vr.error?r={kind:e.subtype,origin:De.REPORT,stack:e.stack}:e.stack&&(i+=" Found in "+(n=e.stack,(o=/@ (.+)/.exec(n))&&o[1])),t.notify(tt,{rawLogsEvent:{date:ee(),message:i,origin:De.REPORT,error:r,status:s}})}))}(t,u);var l=function(e){return{handleLog:function(t,r,n,o){var i=t.context;Or(t.status,hr,r)&&we(t.status,t.message,$(r.getContext(),i)),e.notify(tt,{rawLogsEvent:{date:o||ee(),message:t.message,status:t.status,origin:De.LOGGER},messageContext:i,savedCommonContext:n,logger:r})}}}(u),d=_r(t);Sr(d,t,u,r,n,c),Tr(t,u,c,f);var p,v=(p=d,{get:function(e){var t=p.findTrackedSession(e);if(t)return{session:{id:t.id}}}});return{handleLog:l.handleLog,getInternalContext:v.get}}));var Mr,Rr,Ar,Ur;Mr=function(){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}(),Ar=Br,Ur=Mr[Rr="DATAFLUX_LOGS"],Mr[Rr]=Ar,Ur&&Ur.q&&E(Ur.q,(function(e){e()}))}();
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.buildEnv = void 0;
7
7
  var buildEnv = {
8
- sdkVersion: '1.2.10',
8
+ sdkVersion: '2.0.0',
9
9
  sdkName: 'df_web_logs_sdk'
10
10
  };
11
11
  exports.buildEnv = buildEnv;
@@ -45,6 +45,7 @@ function startLogs(configuration, getCommonContext, mainLogger) {
45
45
  });
46
46
  };
47
47
 
48
+ var pageExitObservable = (0, _browserCore.createPageExitObservable)();
48
49
  (0, _networkErrorCollection.startNetworkErrorCollection)(configuration, lifeCycle);
49
50
  (0, _runtimeErrorCollection.startRuntimeErrorCollection)(configuration, lifeCycle);
50
51
  (0, _consoleCollection.startConsoleCollection)(configuration, lifeCycle);
@@ -54,7 +55,7 @@ function startLogs(configuration, getCommonContext, mainLogger) {
54
55
 
55
56
  var session = (0, _logsSessionManager.startLogsSessionManager)(configuration);
56
57
  (0, _assembly.startLogsAssembly)(session, configuration, lifeCycle, getCommonContext, mainLogger, reportError);
57
- (0, _startLogsBatch.startLogsBatch)(configuration, lifeCycle, reportError);
58
+ (0, _startLogsBatch.startLogsBatch)(configuration, lifeCycle, reportError, pageExitObservable);
58
59
  var internalContext = (0, _internalContext.startInternalContext)(session);
59
60
  return {
60
61
  handleLog: _startLoggerCollection.handleLog,
@@ -95,7 +95,12 @@ function computeFetchErrorText(error, configuration, callback) {
95
95
  }
96
96
 
97
97
  function computeFetchResponseText(response, configuration, callback) {
98
- if (!window.TextDecoder) {
98
+ var clonedResponse = (0, _browserCore.tryToClone)(response);
99
+
100
+ if (!clonedResponse || !clonedResponse.body) {
101
+ // if the clone failed or if the body is null, let's not try to read it.
102
+ callback();
103
+ } else if (!window.TextDecoder) {
99
104
  // If the browser doesn't support TextDecoder, let's read the whole response then truncate it.
100
105
  //
101
106
  // This should only be the case on early versions of Edge (before they migrated to Chromium).
@@ -123,15 +128,13 @@ function computeFetchResponseText(response, configuration, callback) {
123
128
  // }
124
129
  // response.body.getReader().cancel()
125
130
  // })
126
- response.clone().text().then(function (text) {
131
+ clonedResponse.text().then(function (text) {
127
132
  return callback(truncateResponseText(text, configuration));
128
133
  }, function (error) {
129
134
  return callback('Unable to retrieve response: ' + error);
130
135
  });
131
- } else if (!response.body) {
132
- callback();
133
136
  } else {
134
- truncateResponseStream(response.clone().body, configuration.requestErrorResponseLengthLimit, function (error, responseText) {
137
+ truncateResponseStream(clonedResponse.body, configuration.requestErrorResponseLengthLimit, function (error, responseText) {
135
138
  if (error) {
136
139
  callback('Unable to retrieve response: ' + error);
137
140
  } else {
@@ -165,8 +168,8 @@ function format(type) {
165
168
  return 'Fetch';
166
169
  }
167
170
 
168
- function truncateResponseStream(stream, limit, callback) {
169
- readLimitedAmountOfBytes(stream, limit, function (error, bytes, limitExceeded) {
171
+ function truncateResponseStream(stream, bytesLimit, callback) {
172
+ (0, _browserCore.readBytesFromStream)(stream, function (error, bytes, limitExceeded) {
170
173
  if (error) {
171
174
  callback(error);
172
175
  } else {
@@ -178,61 +181,8 @@ function truncateResponseStream(stream, limit, callback) {
178
181
 
179
182
  callback(undefined, responseText);
180
183
  }
184
+ }, {
185
+ bytesLimit: bytesLimit,
186
+ collectStreamBody: true
181
187
  });
182
- }
183
- /**
184
- * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of
185
- * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit
186
- * has been exceeded if more bytes were available.
187
- */
188
-
189
-
190
- function readLimitedAmountOfBytes(stream, limit, callback) {
191
- var reader = stream.getReader();
192
- var chunks = [];
193
- var readBytesCount = 0;
194
- readMore();
195
-
196
- function readMore() {
197
- reader.read().then(function (result) {
198
- if (result.done) {
199
- onDone();
200
- return;
201
- }
202
-
203
- chunks.push(result.value);
204
- readBytesCount += result.value.length;
205
-
206
- if (readBytesCount > limit) {
207
- onDone();
208
- } else {
209
- readMore();
210
- }
211
- }, function (error) {
212
- return callback(error);
213
- });
214
- }
215
-
216
- function onDone() {
217
- reader.cancel()["catch"]( // we don't care if cancel fails, but we still need to catch the error to avoid reporting it
218
- // as an unhandled rejection
219
- _browserCore.noop);
220
- var completeBuffer;
221
-
222
- if (chunks.length === 1) {
223
- // optim: if the response is small enough to fit in a single buffer (provided by the browser), just
224
- // use it directly.
225
- completeBuffer = chunks[0];
226
- } else {
227
- // else, we need to copy buffers into a larger buffer to concatenate them.
228
- completeBuffer = new Uint8Array(readBytesCount);
229
- var offset = 0;
230
- (0, _browserCore.each)(chunks, function (chunk) {
231
- completeBuffer.set(chunk, offset);
232
- offset += chunk.length;
233
- });
234
- }
235
-
236
- callback(undefined, completeBuffer.slice(0, limit), completeBuffer.length > limit);
237
- }
238
188
  }
@@ -7,8 +7,8 @@ exports.startLogsBatch = startLogsBatch;
7
7
 
8
8
  var _browserCore = require("@cloudcare/browser-core");
9
9
 
10
- function startLogsBatch(configuration, lifeCycle, reportError) {
11
- var batch = (0, _browserCore.startBatchWithReplica)(configuration, configuration.logsEndpoint, reportError);
10
+ function startLogsBatch(configuration, lifeCycle, reportError, pageExitObservable) {
11
+ var batch = (0, _browserCore.startBatchWithReplica)(configuration, configuration.logsEndpoint, reportError, pageExitObservable);
12
12
  lifeCycle.subscribe(_browserCore.LifeCycleEventType.LOG_COLLECTED, function (serverLogsEvent) {
13
13
  batch.add(serverLogsEvent);
14
14
  });
@@ -1,4 +1,4 @@
1
1
  export var buildEnv = {
2
- sdkVersion: '1.2.10',
2
+ sdkVersion: '2.0.0',
3
3
  sdkName: 'df_web_logs_sdk'
4
4
  };
@@ -1,4 +1,4 @@
1
- import { ErrorSource, LifeCycle, LifeCycleEventType } from '@cloudcare/browser-core';
1
+ import { ErrorSource, LifeCycle, LifeCycleEventType, createPageExitObservable } from '@cloudcare/browser-core';
2
2
  import { startLogsSessionManager } from '../domain/logsSessionManager';
3
3
  import { startLogsAssembly } from '../domain/assembly';
4
4
  import { startConsoleCollection } from '../domain/logsCollection/console/consoleCollection';
@@ -27,6 +27,7 @@ export function startLogs(configuration, getCommonContext, mainLogger) {
27
27
  });
28
28
  };
29
29
 
30
+ var pageExitObservable = createPageExitObservable();
30
31
  startNetworkErrorCollection(configuration, lifeCycle);
31
32
  startRuntimeErrorCollection(configuration, lifeCycle);
32
33
  startConsoleCollection(configuration, lifeCycle);
@@ -36,7 +37,7 @@ export function startLogs(configuration, getCommonContext, mainLogger) {
36
37
 
37
38
  var session = startLogsSessionManager(configuration);
38
39
  startLogsAssembly(session, configuration, lifeCycle, getCommonContext, mainLogger, reportError);
39
- startLogsBatch(configuration, lifeCycle, reportError);
40
+ startLogsBatch(configuration, lifeCycle, reportError, pageExitObservable);
40
41
  var internalContext = startInternalContext(session);
41
42
  return {
42
43
  handleLog: _startLoggerCollection.handleLog,
@@ -1,4 +1,4 @@
1
- import { ErrorSource, initXhrObservable, RequestType, initFetchObservable, computeStackTrace, toStackTraceString, noop, each, LifeCycleEventType, getStatusGroup, urlParse, replaceNumberCharByPath } from '@cloudcare/browser-core';
1
+ import { ErrorSource, initXhrObservable, RequestType, initFetchObservable, computeStackTrace, toStackTraceString, noop, each, LifeCycleEventType, getStatusGroup, urlParse, replaceNumberCharByPath, tryToClone, readBytesFromStream } from '@cloudcare/browser-core';
2
2
  import { StatusType } from '../../logger';
3
3
  export function startNetworkErrorCollection(configuration, lifeCycle) {
4
4
  if (!configuration.forwardErrorsToLogs) {
@@ -80,7 +80,12 @@ export function computeFetchErrorText(error, configuration, callback) {
80
80
  callback(truncateResponseText(toStackTraceString(computeStackTrace(error)), configuration));
81
81
  }
82
82
  export function computeFetchResponseText(response, configuration, callback) {
83
- if (!window.TextDecoder) {
83
+ var clonedResponse = tryToClone(response);
84
+
85
+ if (!clonedResponse || !clonedResponse.body) {
86
+ // if the clone failed or if the body is null, let's not try to read it.
87
+ callback();
88
+ } else if (!window.TextDecoder) {
84
89
  // If the browser doesn't support TextDecoder, let's read the whole response then truncate it.
85
90
  //
86
91
  // This should only be the case on early versions of Edge (before they migrated to Chromium).
@@ -108,15 +113,13 @@ export function computeFetchResponseText(response, configuration, callback) {
108
113
  // }
109
114
  // response.body.getReader().cancel()
110
115
  // })
111
- response.clone().text().then(function (text) {
116
+ clonedResponse.text().then(function (text) {
112
117
  return callback(truncateResponseText(text, configuration));
113
118
  }, function (error) {
114
119
  return callback('Unable to retrieve response: ' + error);
115
120
  });
116
- } else if (!response.body) {
117
- callback();
118
121
  } else {
119
- truncateResponseStream(response.clone().body, configuration.requestErrorResponseLengthLimit, function (error, responseText) {
122
+ truncateResponseStream(clonedResponse.body, configuration.requestErrorResponseLengthLimit, function (error, responseText) {
120
123
  if (error) {
121
124
  callback('Unable to retrieve response: ' + error);
122
125
  } else {
@@ -150,8 +153,8 @@ function format(type) {
150
153
  return 'Fetch';
151
154
  }
152
155
 
153
- function truncateResponseStream(stream, limit, callback) {
154
- readLimitedAmountOfBytes(stream, limit, function (error, bytes, limitExceeded) {
156
+ function truncateResponseStream(stream, bytesLimit, callback) {
157
+ readBytesFromStream(stream, function (error, bytes, limitExceeded) {
155
158
  if (error) {
156
159
  callback(error);
157
160
  } else {
@@ -163,61 +166,8 @@ function truncateResponseStream(stream, limit, callback) {
163
166
 
164
167
  callback(undefined, responseText);
165
168
  }
169
+ }, {
170
+ bytesLimit: bytesLimit,
171
+ collectStreamBody: true
166
172
  });
167
- }
168
- /**
169
- * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of
170
- * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit
171
- * has been exceeded if more bytes were available.
172
- */
173
-
174
-
175
- function readLimitedAmountOfBytes(stream, limit, callback) {
176
- var reader = stream.getReader();
177
- var chunks = [];
178
- var readBytesCount = 0;
179
- readMore();
180
-
181
- function readMore() {
182
- reader.read().then(function (result) {
183
- if (result.done) {
184
- onDone();
185
- return;
186
- }
187
-
188
- chunks.push(result.value);
189
- readBytesCount += result.value.length;
190
-
191
- if (readBytesCount > limit) {
192
- onDone();
193
- } else {
194
- readMore();
195
- }
196
- }, function (error) {
197
- return callback(error);
198
- });
199
- }
200
-
201
- function onDone() {
202
- reader.cancel().catch( // we don't care if cancel fails, but we still need to catch the error to avoid reporting it
203
- // as an unhandled rejection
204
- noop);
205
- var completeBuffer;
206
-
207
- if (chunks.length === 1) {
208
- // optim: if the response is small enough to fit in a single buffer (provided by the browser), just
209
- // use it directly.
210
- completeBuffer = chunks[0];
211
- } else {
212
- // else, we need to copy buffers into a larger buffer to concatenate them.
213
- completeBuffer = new Uint8Array(readBytesCount);
214
- var offset = 0;
215
- each(chunks, function (chunk) {
216
- completeBuffer.set(chunk, offset);
217
- offset += chunk.length;
218
- });
219
- }
220
-
221
- callback(undefined, completeBuffer.slice(0, limit), completeBuffer.length > limit);
222
- }
223
173
  }
@@ -1,6 +1,6 @@
1
1
  import { startBatchWithReplica, LifeCycleEventType } from '@cloudcare/browser-core';
2
- export function startLogsBatch(configuration, lifeCycle, reportError) {
3
- var batch = startBatchWithReplica(configuration, configuration.logsEndpoint, reportError);
2
+ export function startLogsBatch(configuration, lifeCycle, reportError, pageExitObservable) {
3
+ var batch = startBatchWithReplica(configuration, configuration.logsEndpoint, reportError, pageExitObservable);
4
4
  lifeCycle.subscribe(LifeCycleEventType.LOG_COLLECTED, function (serverLogsEvent) {
5
5
  batch.add(serverLogsEvent);
6
6
  });
package/package.json CHANGED
@@ -2,9 +2,9 @@
2
2
  "name": "@cloudcare/browser-logs",
3
3
  "main": "cjs/index.js",
4
4
  "module": "esm/index.js",
5
- "version": "1.2.10",
5
+ "version": "2.0.0",
6
6
  "dependencies": {
7
- "@cloudcare/browser-core": "1.2.9"
7
+ "@cloudcare/browser-core": "2.0.0"
8
8
  },
9
9
  "scripts": {
10
10
  "dev": "webpack serve --open --mode=development",
@@ -28,5 +28,5 @@
28
28
  "author": "dataflux",
29
29
  "license": "MIT",
30
30
  "description": "DataFlux RUM Web 端数据指标监控",
31
- "gitHead": "9a15e3d36ff76e9bd1830516743fb8299ce6829b"
31
+ "gitHead": "d1ed6b7eee3470c2086c14d0cebd0391baa36336"
32
32
  }
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  ErrorSource,
3
- LifeCycle,
4
- LifeCycleEventType
3
+ LifeCycle,
4
+ LifeCycleEventType,
5
+ createPageExitObservable
5
6
  } from '@cloudcare/browser-core'
6
7
  import { startLogsSessionManager } from '../domain/logsSessionManager'
7
8
  import { startLogsAssembly } from '../domain/assembly'
@@ -17,19 +18,20 @@ import { startInternalContext } from '../domain/internalContext'
17
18
  export function startLogs(configuration, getCommonContext, mainLogger) {
18
19
  var lifeCycle = new LifeCycle()
19
20
 
20
- const reportError = function(error) {
21
+ var reportError = function (error) {
21
22
  lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
22
23
  rawLogsEvent: {
23
24
  message: error.message,
24
25
  date: error.startClocks.timeStamp,
25
26
  error: {
26
- origin: ErrorSource.AGENT, // Todo: Remove in the next major release
27
+ origin: ErrorSource.AGENT // Todo: Remove in the next major release
27
28
  },
28
29
  origin: ErrorSource.AGENT,
29
- status: StatusType.error,
30
- },
30
+ status: StatusType.error
31
+ }
31
32
  })
32
33
  }
34
+ var pageExitObservable = createPageExitObservable()
33
35
  startNetworkErrorCollection(configuration, lifeCycle)
34
36
  startRuntimeErrorCollection(configuration, lifeCycle)
35
37
  startConsoleCollection(configuration, lifeCycle)
@@ -37,15 +39,21 @@ export function startLogs(configuration, getCommonContext, mainLogger) {
37
39
  var _startLoggerCollection = startLoggerCollection(lifeCycle)
38
40
 
39
41
  var session = startLogsSessionManager(configuration)
40
- startLogsAssembly(session, configuration, lifeCycle, getCommonContext, mainLogger, reportError)
42
+ startLogsAssembly(
43
+ session,
44
+ configuration,
45
+ lifeCycle,
46
+ getCommonContext,
47
+ mainLogger,
48
+ reportError
49
+ )
41
50
 
42
- startLogsBatch(configuration, lifeCycle, reportError)
51
+ startLogsBatch(configuration, lifeCycle, reportError, pageExitObservable)
43
52
 
44
53
  var internalContext = startInternalContext(session)
45
54
 
46
55
  return {
47
56
  handleLog: _startLoggerCollection.handleLog,
48
- getInternalContext: internalContext.get,
57
+ getInternalContext: internalContext.get
49
58
  }
50
59
  }
51
-
@@ -10,7 +10,9 @@ import {
10
10
  LifeCycleEventType,
11
11
  getStatusGroup,
12
12
  urlParse,
13
- replaceNumberCharByPath
13
+ replaceNumberCharByPath,
14
+ tryToClone,
15
+ readBytesFromStream
14
16
  } from '@cloudcare/browser-core'
15
17
  import { StatusType } from '../../logger'
16
18
 
@@ -19,25 +21,42 @@ export function startNetworkErrorCollection(configuration, lifeCycle) {
19
21
  return { stop: noop }
20
22
  }
21
23
 
22
- var xhrSubscription = initXhrObservable().subscribe(function(context){
24
+ var xhrSubscription = initXhrObservable().subscribe(function (context) {
23
25
  if (context.state === 'complete') {
24
26
  handleCompleteRequest(RequestType.XHR, context, configuration)
25
27
  }
26
28
  })
27
- var fetchSubscription = initFetchObservable().subscribe(function(context) {
29
+ var fetchSubscription = initFetchObservable().subscribe(function (context) {
28
30
  if (context.state === 'complete') {
29
31
  handleCompleteRequest(RequestType.FETCH, context, configuration)
30
32
  }
31
33
  })
32
34
 
33
35
  function handleCompleteRequest(type, request) {
34
- if (!configuration.isIntakeUrl(request.url) && (isRejected(request) || isServerError(request) || configuration.isServerError(request))) {
36
+ if (
37
+ !configuration.isIntakeUrl(request.url) &&
38
+ (isRejected(request) ||
39
+ isServerError(request) ||
40
+ configuration.isServerError(request))
41
+ ) {
35
42
  if ('xhr' in request) {
36
- computeXhrResponseData(request.xhr, configuration, onResponseDataAvailable)
43
+ computeXhrResponseData(
44
+ request.xhr,
45
+ configuration,
46
+ onResponseDataAvailable
47
+ )
37
48
  } else if (request.response) {
38
- computeFetchResponseText(request.response, configuration, onResponseDataAvailable)
49
+ computeFetchResponseText(
50
+ request.response,
51
+ configuration,
52
+ onResponseDataAvailable
53
+ )
39
54
  } else if (request.error) {
40
- computeFetchErrorText(request.error, configuration, onResponseDataAvailable)
55
+ computeFetchErrorText(
56
+ request.error,
57
+ configuration,
58
+ onResponseDataAvailable
59
+ )
41
60
  }
42
61
  }
43
62
 
@@ -45,11 +64,12 @@ export function startNetworkErrorCollection(configuration, lifeCycle) {
45
64
  var urlObj = urlParse(request.url).getParse()
46
65
  lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
47
66
  rawLogsEvent: {
48
- message: format(type) + ' error ' + request.method +' ' + request.url,
67
+ message:
68
+ format(type) + ' error ' + request.method + ' ' + request.url,
49
69
  date: request.startClocks.timeStamp,
50
70
  error: {
51
71
  origin: ErrorSource.NETWORK, // Todo: Remove in the next major release
52
- stack: responseData || 'Failed to load',
72
+ stack: responseData || 'Failed to load'
53
73
  },
54
74
  http: {
55
75
  method: request.method, // Cast resource method because of case mismatch cf issue RUMF-1152
@@ -61,17 +81,17 @@ export function startNetworkErrorCollection(configuration, lifeCycle) {
61
81
  urlPathGroup: replaceNumberCharByPath(urlObj.Path)
62
82
  },
63
83
  status: StatusType.error,
64
- origin: ErrorSource.NETWORK,
65
- },
84
+ origin: ErrorSource.NETWORK
85
+ }
66
86
  })
67
87
  }
68
88
  }
69
89
 
70
90
  return {
71
- stop: function() {
91
+ stop: function () {
72
92
  xhrSubscription.unsubscribe()
73
93
  fetchSubscription.unsubscribe()
74
- },
94
+ }
75
95
  }
76
96
  }
77
97
 
@@ -80,11 +100,7 @@ export function startNetworkErrorCollection(configuration, lifeCycle) {
80
100
  // than "text", the response data should be whatever `xhr.response` is. This is a bit confusing as
81
101
  // Logs event 'stack' is expected to be a string. This should be changed in a future major version
82
102
  // as it could be a breaking change.
83
- export function computeXhrResponseData(
84
- xhr,
85
- configuration,
86
- callback
87
- ) {
103
+ export function computeXhrResponseData(xhr, configuration, callback) {
88
104
  if (typeof xhr.response === 'string') {
89
105
  callback(truncateResponseText(xhr.response, configuration))
90
106
  } else {
@@ -92,20 +108,21 @@ export function computeXhrResponseData(
92
108
  }
93
109
  }
94
110
 
95
- export function computeFetchErrorText(
96
- error,
97
- configuration,
98
- callback
99
- ) {
100
- callback(truncateResponseText(toStackTraceString(computeStackTrace(error)), configuration))
111
+ export function computeFetchErrorText(error, configuration, callback) {
112
+ callback(
113
+ truncateResponseText(
114
+ toStackTraceString(computeStackTrace(error)),
115
+ configuration
116
+ )
117
+ )
101
118
  }
102
119
 
103
- export function computeFetchResponseText(
104
- response,
105
- configuration,
106
- callback
107
- ) {
108
- if (!window.TextDecoder) {
120
+ export function computeFetchResponseText(response, configuration, callback) {
121
+ var clonedResponse = tryToClone(response)
122
+ if (!clonedResponse || !clonedResponse.body) {
123
+ // if the clone failed or if the body is null, let's not try to read it.
124
+ callback()
125
+ } else if (!window.TextDecoder) {
109
126
  // If the browser doesn't support TextDecoder, let's read the whole response then truncate it.
110
127
  //
111
128
  // This should only be the case on early versions of Edge (before they migrated to Chromium).
@@ -133,20 +150,19 @@ export function computeFetchResponseText(
133
150
  // }
134
151
  // response.body.getReader().cancel()
135
152
  // })
136
- response
137
- .clone()
138
- .text()
139
- .then(
140
- function(text) { return callback(truncateResponseText(text, configuration)) },
141
- function(error) { return callback('Unable to retrieve response: ' + error ) }
142
- )
143
- } else if (!response.body) {
144
- callback()
153
+ clonedResponse.text().then(
154
+ function (text) {
155
+ return callback(truncateResponseText(text, configuration))
156
+ },
157
+ function (error) {
158
+ return callback('Unable to retrieve response: ' + error)
159
+ }
160
+ )
145
161
  } else {
146
162
  truncateResponseStream(
147
- response.clone().body,
163
+ clonedResponse.body,
148
164
  configuration.requestErrorResponseLengthLimit,
149
- function(error, responseText){
165
+ function (error, responseText) {
150
166
  if (error) {
151
167
  callback('Unable to retrieve response: ' + error)
152
168
  } else {
@@ -167,7 +183,10 @@ function isServerError(request) {
167
183
 
168
184
  function truncateResponseText(responseText, configuration) {
169
185
  if (responseText.length > configuration.requestErrorResponseLengthLimit) {
170
- return responseText.substring(0, configuration.requestErrorResponseLengthLimit) + '...'
186
+ return (
187
+ responseText.substring(0, configuration.requestErrorResponseLengthLimit) +
188
+ '...'
189
+ )
171
190
  }
172
191
  return responseText
173
192
  }
@@ -179,82 +198,23 @@ function format(type) {
179
198
  return 'Fetch'
180
199
  }
181
200
 
182
- function truncateResponseStream(
183
- stream,
184
- limit,
185
- callback
186
- ) {
187
- readLimitedAmountOfBytes(stream, limit, function(error, bytes, limitExceeded){
188
- if (error) {
189
- callback(error)
190
- } else {
191
- var responseText = new TextDecoder().decode(bytes)
192
- if (limitExceeded) {
193
- responseText += '...'
194
- }
195
- callback(undefined, responseText)
196
- }
197
- })
198
- }
199
-
200
- /**
201
- * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of
202
- * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit
203
- * has been exceeded if more bytes were available.
204
- */
205
- function readLimitedAmountOfBytes(
206
- stream,
207
- limit,
208
- callback
209
- ) {
210
- var reader = stream.getReader()
211
- var chunks = []
212
- var readBytesCount = 0
213
-
214
- readMore()
215
-
216
- function readMore() {
217
- reader.read().then(
218
- function(result){
219
- if (result.done) {
220
- onDone()
221
- return
222
- }
223
-
224
- chunks.push(result.value)
225
- readBytesCount += result.value.length
226
-
227
- if (readBytesCount > limit) {
228
- onDone()
229
- } else {
230
- readMore()
201
+ function truncateResponseStream(stream, bytesLimit, callback) {
202
+ readBytesFromStream(
203
+ stream,
204
+ function (error, bytes, limitExceeded) {
205
+ if (error) {
206
+ callback(error)
207
+ } else {
208
+ var responseText = new TextDecoder().decode(bytes)
209
+ if (limitExceeded) {
210
+ responseText += '...'
231
211
  }
232
- },
233
- function(error) { return callback(error) }
234
- )
235
- }
236
-
237
- function onDone() {
238
- reader.cancel().catch(
239
- // we don't care if cancel fails, but we still need to catch the error to avoid reporting it
240
- // as an unhandled rejection
241
- noop
242
- )
243
-
244
- var completeBuffer
245
- if (chunks.length === 1) {
246
- // optim: if the response is small enough to fit in a single buffer (provided by the browser), just
247
- // use it directly.
248
- completeBuffer = chunks[0]
249
- } else {
250
- // else, we need to copy buffers into a larger buffer to concatenate them.
251
- completeBuffer = new Uint8Array(readBytesCount)
252
- var offset = 0
253
- each(chunks, function(chunk) {
254
- completeBuffer.set(chunk, offset)
255
- offset += chunk.length
256
- })
212
+ callback(undefined, responseText)
213
+ }
214
+ },
215
+ {
216
+ bytesLimit: bytesLimit,
217
+ collectStreamBody: true
257
218
  }
258
- callback(undefined, completeBuffer.slice(0, limit), completeBuffer.length > limit)
259
- }
219
+ )
260
220
  }
@@ -1,17 +1,25 @@
1
- import { startBatchWithReplica, LifeCycleEventType } from '@cloudcare/browser-core'
1
+ import {
2
+ startBatchWithReplica,
3
+ LifeCycleEventType
4
+ } from '@cloudcare/browser-core'
2
5
 
3
6
  export function startLogsBatch(
4
7
  configuration,
5
8
  lifeCycle,
6
- reportError
9
+ reportError,
10
+ pageExitObservable
7
11
  ) {
8
12
  var batch = startBatchWithReplica(
9
13
  configuration,
10
14
  configuration.logsEndpoint,
11
- reportError
15
+ reportError,
16
+ pageExitObservable
12
17
  )
13
18
 
14
- lifeCycle.subscribe(LifeCycleEventType.LOG_COLLECTED, function(serverLogsEvent) {
15
- batch.add(serverLogsEvent)
16
- })
19
+ lifeCycle.subscribe(
20
+ LifeCycleEventType.LOG_COLLECTED,
21
+ function (serverLogsEvent) {
22
+ batch.add(serverLogsEvent)
23
+ }
24
+ )
17
25
  }