@embrace-io/web-sdk
Version:
3 lines (2 loc) • 3.14 kB
JavaScript
import{__extends as t,__spreadArray as e,__read as a,__assign as i}from"tslib";import{EMB_TYPES as n,KEY_EMB_TYPE as r}from"../../../constants/attributes.js";import{WEB_VITALS_ID_TO_LISTENER as o,CORE_WEB_VITALS as l,ALL_WEB_VITALS as u,EMB_WEB_VITALS_PREFIX as s}from"./constants.js";import{EmbraceInstrumentationBase as c}from"../../EmbraceInstrumentationBase/EmbraceInstrumentationBase.js";import{ATTR_URL_FULL as m}from"@opentelemetry/semantic-conventions";var v=function(c){function v(t){var i=void 0===t?{}:t,n=i.diag,r=i.perf,s=i.trackingLevel,m=void 0===s?"core":s,v=i.listeners,y=void 0===v?o:v,p=i.urlDocument,f=void 0===p?window.document:p,b=c.call(this,{instrumentationName:"WebVitalsInstrumentation",instrumentationVersion:"1.0.0",diag:n,perf:r,config:{}})||this;return b._listeners=y,b._urlDocument=f,b._metricsToTrack=e([],a("core"===m?l:u),!1),b._config.enabled&&b.enable(),b}return t(v,c),v.prototype.disable=function(){},v.prototype.enable=function(){var t=this;this._metricsToTrack.forEach((function(e){var a,o;null===(o=(a=t._listeners)[e])||void 0===o||o.call(a,(function(a){var o,l=t.sessionManager.getSessionSpan();if(l){var u=t._getTimeForMetric(a),c=i(((o={})[r]=n.WebVital,o[m]=t._urlDocument.URL,o["emb.web_vital.navigation_type"]=a.navigationType,o["emb.web_vital.name"]=a.name,o["emb.web_vital.rating"]=a.rating,o["emb.web_vital.id"]=a.id,o["emb.web_vital.delta"]=a.delta,o["emb.web_vital.value"]=a.value,o),function(t,e){var a={},i=[];if("CLS"===t){var n=e.attribution;i.push.apply(i,[{key:"largestShiftTarget",value:n.largestShiftTarget},{key:"largestShiftValue",value:n.largestShiftValue}])}else"INP"===t?(n=e.attribution,i.push.apply(i,[{key:"interactionTarget",value:n.interactionTarget},{key:"interactionType",value:n.interactionType},{key:"nextPaintTime",value:n.nextPaintTime},{key:"inputDelay",value:n.inputDelay},{key:"processingDuration",value:n.processingDuration},{key:"presentationDelay",value:n.presentationDelay},{key:"totalScriptDuration",value:n.totalScriptDuration},{key:"totalStyleAndLayoutDuration",value:n.totalStyleAndLayoutDuration},{key:"totalPaintDuration",value:n.totalPaintDuration},{key:"totalUnattributedDuration",value:n.totalUnattributedDuration},{key:"loadState",value:n.loadState}])):"LCP"===t&&(n=e.attribution,i.push.apply(i,[{key:"target",value:n.target},{key:"url",value:n.url},{key:"timeToFirstByte",value:n.timeToFirstByte},{key:"resourceLoadDelay",value:n.resourceLoadDelay},{key:"resourceLoadDuration",value:n.resourceLoadDuration},{key:"elementRenderDelay",value:n.elementRenderDelay}]));return i.forEach((function(t){void 0!==t.value&&(a["emb.web_vital.attribution.".concat(t.key)]=t.value)})),a}(e,a));l.addEvent("".concat(s,"-report-").concat(e),c,u)}}))}))},v.prototype._getTimeForMetric=function(t){return"CLS"===t.name&&t.attribution.largestShiftTime?this.perf.epochMillisFromOriginOffset(t.attribution.largestShiftTime):"INP"===t.name&&t.attribution.interactionTime?this.perf.epochMillisFromOriginOffset(t.attribution.interactionTime):this.perf.getNowMillis()},v}(c);export{v as WebVitalsInstrumentation};
//# sourceMappingURL=WebVitalsInstrumentation.js.map