UNPKG

@embrace-io/web-sdk

Version:
3 lines (2 loc) 1.36 kB
import{hrTimeToMilliseconds as s}from"@opentelemetry/core";import{EmbraceInstrumentationBase as e}from"../../EmbraceInstrumentationBase/EmbraceInstrumentationBase.js";import{TIMEOUT_TIME as i}from"./constants.js";class t extends e{constructor({diag:e,perf:t}={}){super({instrumentationName:"SpanSessionTimeoutInstrumentation",instrumentationVersion:"1.0.0",diag:e,perf:t,config:{}}),this.disable=()=>{this._sessionTimeout&&clearTimeout(this._sessionTimeout),this._sessionTimeout=null},this.enable=()=>{this._checkTimeout()},this._onTimeout=()=>{this._diag.debug("Timeout detected"),this._sessionTimeout&&clearTimeout(this._sessionTimeout),this.sessionManager.endSessionSpanInternal("timer"),this.sessionManager.startSessionSpan(),this._sessionTimeout=setTimeout(this._checkTimeout,i)},this._checkTimeout=()=>{const e=this.sessionManager.getSessionStartTime();if(e){const t=this.perf.getNowHRTime(),o=s(t),n=s(e),m=i-(o-n);return m<=0?void this._onTimeout():(this._sessionTimeout&&clearTimeout(this._sessionTimeout),void(this._sessionTimeout=setTimeout(this._checkTimeout,m)))}this._sessionTimeout&&clearTimeout(this._sessionTimeout),this._sessionTimeout=setTimeout(this._checkTimeout,i)},this._sessionTimeout=null,this._config.enabled&&this.enable()}}export{t as SpanSessionTimeoutInstrumentation}; //# sourceMappingURL=SpanSessionTimeoutInstrumentation.js.map