import{getCLS,getFID,getLCP,getTTFB,getFCP}from"./we-vi/we-vi.js";let excluded=[],buffer=[],sending=!1;function getRandomArbitrary(min,max){return Math.random()*(max-min)+min}function sendAnalytics(metrics){navigator.sendBeacon&&navigator.sendBeacon(analyticsSettings.restUrl,JSON.stringify(metrics))}function sendBuffer(){sending=!0,0<buffer.length&&(sendAnalytics({type:"multi",metrics:buffer}),buffer=[]),sending=!1}function bufferizeAnalytics(metrics){buffer.push(metrics)}function webVitalsReport({name,value:analytics}){analytics={type:"webvital",resource:location?location.href:"-",authenticated:analyticsSettings.authenticated,metrics:[{name:name,value:analytics}]};("0"===analyticsSettings.multiMetrics?sendAnalytics:bufferizeAnalytics)(analytics)}function performanceReport(timing,type){let start=0<timing.startTime?timing.startTime:0;start=0<timing.workerStart?timing.workerStart:start;let analytics={type:type,resource:timing.name,authenticated:analyticsSettings.authenticated,initiator:timing.initiatorType,metrics:[{name:"redirect",start:timing.redirectStart>start?timing.redirectStart-start:0,duration:timing.redirectEnd-timing.redirectStart},{name:"dns",start:timing.domainLookupStart>start?timing.domainLookupStart-start:0,duration:timing.domainLookupEnd-timing.domainLookupStart}]};0<timing.secureConnectionStart?analytics.metrics.push({name:"tcp",start:timing.connectStart>start?timing.connectStart-start:0,duration:timing.connectEnd-timing.connectStart},{name:"ssl",start:timing.secureConnectionStart>start?timing.secureConnectionStart-start:0,duration:timing.connectEnd-timing.secureConnectionStart}):analytics.metrics.push({name:"tcp",start:timing.connectStart>start?timing.connectStart-start:0,duration:timing.connectEnd-timing.connectStart}),analytics.metrics.push({name:"redirects",value:timing.redirectCount||0}),0<timing.transferSize?analytics.metrics.push({name:"wait",start:timing.requestStart>start?timing.requestStart-start:timing.requestStart,duration:timing.responseStart-timing.requestStart},{name:"download",start:timing.responseStart>start?timing.responseStart-start:timing.responseStart,duration:timing.responseEnd-timing.responseStart},{name:"load",value:timing.duration},{name:"size",value:timing.transferSize}):analytics.metrics.push({name:"wait",start:timing.connectEnd,duration:0},{name:"download",start:timing.connectEnd,duration:0},{name:"load",value:0},{name:"cache",value:1}),("0"===analyticsSettings.multiMetrics?sendAnalytics:bufferizeAnalytics)(analytics)}function webVitalsObserve(){getCLS(webVitalsReport),getFID(webVitalsReport),getLCP(webVitalsReport),getTTFB(webVitalsReport),getFCP(webVitalsReport)}function navigationObserve(list,observer){0<list.getEntriesByType("navigation").length&&performanceReport(list.getEntriesByType("navigation")[0],"navigation")}function resourceObserve(list,observer){0<list.getEntriesByType("resource").length&&list.getEntriesByType("resource").forEach(function(timing){("xmlhttprequest"!==timing.initiatorType&&"beacon"!==timing.initiatorType&&"other"!==timing.initiatorType||"1"!==analyticsSettings.smartFilter||!(0<timing.name.indexOf("/beacon")||0<timing.name.indexOf("/livelog")))&&!excluded.includes(timing.name)&&analyticsSettings.sampling>=getRandomArbitrary(1,1e3)&&(excluded.push(timing.name),performanceReport(timing,"resource"))})}try{webVitalsObserve();let navigationObserver=new PerformanceObserver(navigationObserve);navigationObserver.observe({entryTypes:["navigation"]});let resourceObserver=new PerformanceObserver(resourceObserve);resourceObserver.observe({entryTypes:["resource"]}),"1"===analyticsSettings.multiMetrics&&(document.addEventListener("visibilitychange",function(){"hidden"!==document.visibilityState||sending||sendBuffer()}),window.addEventListener("pagehide",event=>{sending||sendBuffer()},!1))}catch(error){console.error("Vibes analytics error: ",error.message)}