@groundcover/browser 1.0.8-rc.6 → 1.0.8-rc.7

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.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("error-stack-parser"),t=require("web-vitals"),n=require("rrweb"),r=require("@rrweb/packer"),i=require("fflate");function s(e){return e&&e.__esModule?e:{default:e}}var o=s(e),a=console.log.bind(console),l=class e{constructor(){this.isDebugEnabled=!1,this.prefix=""}static initialize(t){return e.instance||(e.instance=new e),t&&(e.instance.isDebugEnabled=t.debug??!1,e.instance.prefix=t.prefix??""),e.instance}static getInstance(t){return e?.instance||e.initialize(t)}formatMessage(e){return`[${(new Date).toISOString()}] ${this.prefix} ${e}`}log(e,...t){this.isDebugEnabled&&a(this.formatMessage(e),...t)}updateConfig(e){this.isDebugEnabled=e.debug??this.isDebugEnabled,this.prefix=e.prefix??this.prefix}},c=l.getInstance();function h(e){c.log("[error-handler.handleError] called",e,{groundcoverIgnore:!0})}var d=class{constructor(){this.generateTraceId=function(){for(let e=0;e<16;e++)u[e]=Math.floor(16*Math.random())+48,u[e]>=58&&(u[e]+=39);return p+String.fromCharCode.apply(null,u.slice(0,16))},this.generateSpanId=g(8),this.generateId=g(16)}},u=Array(32);function g(e){return function(){for(let t=0;t<2*e;t++)u[t]=Math.floor(16*Math.random())+48,u[t]>=58&&(u[t]+=39);return String.fromCharCode.apply(null,u.slice(0,2*e))}}var p="0000000000000000";function f({text:e,maxLength:t=1e4,ellipsis:n=""}){if(null==e)return"";const r="string"==typeof e?e:String(e);return r.length<=t?r:r.substring(0,t)+n}function m(e){return(e||"").replace(/\s+/g," ").trim()}var v=globalThis,y=1e6;function b(e){return e*y}function w(e){return e/y}function S(e){if(null==e||"object"!=typeof e)return!1;try{return"number"==typeof e.nodeType&&"string"==typeof e.nodeName&&"ownerDocument"in e}catch{return!1}}var E="[REDACTED]",k=["authorization","cookie","set-cookie"],T=/(token|key|secret|passwd|password|auth|bearer|credential)/i,I=/(token|secret|passwd|password|api[_-]?key|access[_-]?key|write[_-]?key|auth|bearer|credential|cvv|ssn|credit[_-]?card|card[_-]?number)/i,R=new Set(["code","state","session_state","id_token","access_token","refresh_token","token"]),L=1e5;function M(e,t){if(!e)return!1;if(I.test(e))return!0;if(t?.length){const n=e.toLowerCase();return t.some((e=>e&&n.includes(e.toLowerCase())))}return!1}function x(e,t){return R.has(e.toLowerCase())||M(e,t)}function q(e){return e.includes("-")&&T.test(e)}function A(e,t){return M(e,t)||q(e)}function N(e,t){const n=e.sensitive?E:e.value;if(!t)return n;try{const r=t(e);return void 0===r?n:r}catch(e){return h(e),n}}function C(e,t={}){if(!e)return e;try{return e.split("&").map((e=>{const n=e.indexOf("=");if(-1===n)return e;const r=e.slice(0,n),i=e.slice(n+1);let s=r;try{s=decodeURIComponent(r)}catch{}let o=i;try{o=decodeURIComponent(i)}catch{}const a=x(s,t.sensitiveKeys),l=N({key:s,value:o,path:[s],kind:t.kind??"query",sensitive:a},t.redact);return l===o?e:`${r}=${encodeURIComponent(null===l?"":String(l))}`})).join("&")}catch{return e}}function H(e,t){const n=e.indexOf("?");return-1===n?e:`${e.slice(0,n)}?${C(e.slice(n+1),t)}`}function _(e,t={}){if(!e)return e;const n={...t,kind:t.kind??"query"},r=e.indexOf("#"),i=-1===r?e:e.slice(0,r),s=-1===r?"":e.slice(r+1),o=H(function(e){return e.replace(/^([a-zA-Z][\w+.-]*:\/\/)[^/?#@]*@/,((e,t)=>`${t}${E}@`))}(i),n);return-1===r?o:`${o}#${H(s,n)}`}function z(e,t,n,r,i,s){const o=!!e&&M(e,r.sensitiveKeys);if(null!==t&&"object"==typeof t){if(o||i>8)return E;if(S(t))return E;if(s.has(t))return E;s.add(t);try{if(Array.isArray(t))return t.map((t=>z(e,t,n,r,i+1,s)));const o={};for(const[e,a]of Object.entries(t))o[e]=z(e,a,[...n,e],r,i+1,s);return o}catch(e){return h(e),E}finally{s.delete(t)}}return N({key:e,value:t,path:n,kind:r.kind??"log",sensitive:o},r.redact)}function P(e,t={}){if(!e)return e;if(e.length>L)return`${P(e.slice(0,L),t)}…`;let n=e;try{n=n.replace(/"([\w.-]{1,64})"\s*:\s*("(?:[^"\\]|\\.)*"|[^\s,}\]]+)/g,((e,n)=>A(n,t.sensitiveKeys)?`"${n}":"${E}"`:e)),n=n.replace(/([\w.-]{1,64})=([^\s&,;?]+)/g,((e,n)=>function(e,t){return x(e,t)||q(e)}(n,t.sensitiveKeys)?`${n}=${E}`:e)),n=n.replace(/([\w.-]{1,64}):[ \t]*([^\n,;&]{1,4096})/g,((e,n)=>A(n,t.sensitiveKeys)?`${n}: ${E}`:e))}catch(t){h(t),n=e}if(t.redact)try{const n=t.redact({key:"",value:e,path:[],kind:t.kind??"log",sensitive:!1});if(void 0!==n)return null===n?"":String(n)}catch(e){h(e)}return n}function D(e,t={}){try{const n=z("",e,[],t,0,new WeakSet);return null!==n&&"object"==typeof n?n:{}}catch(e){return h(e),{}}}function F(e,t,n){if(!e.shouldMaskLogs)return{message:t,attributes:n};const r={sensitiveKeys:e.sensitiveKeys,redact:e.redact,kind:"log"};return{message:P(t,r),attributes:n?D(n,r):n}}var O=class{constructor(e){this.logger=l.getInstance(),this.config=e.config,this.pool=e.pool,this.enricher=e.enricher}sendCustomEvent(e){this.logger.log("[manual-event-emitter.sendCustomEvent] called",e);try{const t=this.enricher.enrich({type:"custom",attributes:{custom_event_name:e?.event,custom_event_attributes:e?.attributes}});this.pool.addEvent(t)}catch(e){h(e)}}emitLog(e,t,n){this.logger.log("[manual-event-emitter.emitLog] called",{message:e,level:t,attributes:n});try{const r={...n||{}};delete r.message,delete r.level,delete r.location;const{message:i,attributes:s}=F(this.config.getPrivacy(),e,r),o=this.enricher.enrich({type:"log",attributes:{...s,message:f({text:i}),level:t}});this.pool.addEvent(o)}catch(e){h(e)}}},B=class{constructor(e){this.logger=l.getInstance(),this.config=e.config,this.eventsPool=e.eventsPool,this.enricher=e.enricher}};function j(e){return Array.isArray(e)?e.filter((e=>"string"==typeof e)).map((e=>e.trim())).filter((e=>e.length>0)):[]}function K(e){const t=e.getPrivacy(),n=e.getConfig()?.providedOptions?.privacy;return{...t,maskSelectors:j(n?.maskSelectors)}}var U="undefined"!=typeof Element?Object.getOwnPropertyDescriptor(Element.prototype,"tagName")?.get:void 0;function X(e,t){try{return e.getAttribute(t)||""}catch{return""}}function Y(e){try{const t=U?.call(e);return"string"==typeof t?t:""}catch{return""}}function $(e,t){try{return null!=e.closest?.(t)}catch{return!1}}function W(e,t){return!!e&&("password"===e.type||function(e){return["id","name","class","aria-label","placeholder"].map((t=>X(e,t))).filter(Boolean)}(e).some((e=>M(e,t))))}function Q(e,t){return"allow"!==t.level&&(!!e&&(!!$(e,"[data-private]")||(!(!t.maskSelectors.length||!t.maskSelectors.some((t=>$(e,t))))||("mask-all"===t.level||function(e){const t=Y(e).toLowerCase();return"input"===t||"textarea"===t||"select"===t}(e)&&W(e,t.sensitiveKeys)))))}var G={role:"",accessibleName:"",ariaLabel:"",title:"",alt:"",placeholder:"",name:"",inputType:"",href:""},V=["button","a","input","select","textarea","label","summary",'[role~="button"]','[role~="link"]','[role~="menuitem"]','[role~="menuitemcheckbox"]','[role~="menuitemradio"]','[role~="tab"]','[role~="checkbox"]','[role~="radio"]','[role~="switch"]','[role~="option"]','[role~="treeitem"]','[role~="slider"]','[role~="spinbutton"]','[role~="combobox"]','[role~="textbox"]','[role~="searchbox"]'].join(", "),J=[V,"li","option","tr","td","th",'[role~="listitem"]','[role~="row"]','[role~="gridcell"]','[role~="cell"]'].join(", ");function Z(e){return!!e&&1===e.nodeType}function ee(e){const t=Y(e).toLowerCase();return"body"===t||"html"===t}function te(e){return f({text:e,maxLength:255})}function ne(e){return f({text:e,maxLength:99,ellipsis:"…"})}function re(e){const t=m(X(e,"role"));return t?t.split(" ")[0]??t:function(e){switch(Y(e).toLowerCase()){case"a":return X(e,"href")?"link":"";case"button":return"button";case"input":switch(X(e,"type").toLowerCase()){case"checkbox":return"checkbox";case"radio":return"radio";case"submit":case"button":case"reset":return"button";case"range":return"slider";case"number":return"spinbutton";default:return"textbox"}case"textarea":return"textbox";case"select":return"combobox";case"img":return"img";case"nav":return"navigation";case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return"heading";default:return""}}(e)}function ie(e){if(!Z(e))return"";try{if(ee(e))return"";if(function(e){try{return e.querySelectorAll(J).length>=2}catch{return!1}}(e))return"";const t=m(e.textContent||"");return t?t.length>1e3?"":f({text:t,maxLength:255}):""}catch{return""}}function se(e){return X(e,"aria-labelledby").split(/\s+/).filter(Boolean).slice(0,5)}function oe(e,t){if(ee(e))return"";const n=function(e){const t=[];for(const n of se(e))try{const e=ie(document.getElementById(n));e&&t.push(e)}catch{}return m(t.join(" "))}(e);if(n)return ne(n);const r=m(X(e,"aria-label"));if(r)return ne(r);const i=m(X(e,"alt"));if(i)return ne(i);if(function(e){const t=Y(e).toLowerCase();if("button"===t)return!0;if("input"!==t)return!1;const n=X(e,"type").toLowerCase();return"submit"===n||"button"===n||"reset"===n}(e)){const t=m(X(e,"value"));if(t)return ne(t)}const s=t??ie(e);if(s)return ne(s);const o=m(X(e,"title"));if(o)return ne(o);const a=m(X(e,"placeholder"));return a?ne(a):""}function ae(e,t){if("allow"===t.level)return!1;try{return!!e.querySelector("[data-private]")||t.maskSelectors.some((t=>{try{return null!=e.querySelector(t)}catch{return!1}}))}catch{return!1}}var le=class extends B{constructor(){super(...arguments),this.eventHandlers=[],this.capturedEvents=["click","change","keydown","select","submit"],this.getShouldMaskText=e=>Q(e.target,K(this.config)),this.getKeyCode=(e,t)=>e instanceof KeyboardEvent&&e.code&&"Dead"!==e.key?t?"*":e.key:"",this.getCoordinates=e=>{if({mouseup:!0,mousedown:!0,mousemove:!0,mouseover:!0}[e.type]){const{clientX:t,clientY:n}=e||{};return{clientX:t,clientY:n}}return null}}initialize(){try{this.logger.log("[dom-events-listener.initialize] called"),this.capturedEvents?.forEach((e=>{const t=e=>{try{this.handleEvent(e)}catch(e){h(e)}};this.eventHandlers.push({type:e,handler:t}),v?.addEventListener(e,t)}))}catch(e){h(e)}}destroy(){this.eventHandlers.forEach((({type:e,handler:t})=>{global?.removeEventListener?.(e,t)})),this.eventHandlers=[]}handleEvent(e){try{if(!this.enricher.shouldSample())return;const t=this.buildEvent(e);this.queueEvent(t)}catch(e){h(e)}}buildEvent(e){const t=this.getCoordinates(e),n=e.target,r=function(e){if(!Z(e))return null;try{return e.closest(V)}catch{return null}}(n)??n,i=K(this.config),s=this.getShouldMaskText({target:n||null})||!!r&&(ae(r,i)||function(e,t){if("allow"===t.level)return!1;try{for(const n of se(e)){const e=document.getElementById(n);if(e&&ie(e)&&(Q(e,t)||ae(e,t)))return!0}}catch{}return!1}(r,i)),o=r?this.generateSelector(r,s?{priorityAttributes:["id","class","name","type"]}:{}):"",a=this.getKeyCode(e,s),l=ie(r),c=function(e,t){if(!Z(e))return{...G};try{return{role:te(re(e)),accessibleName:oe(e,t),ariaLabel:te(m(X(e,"aria-label"))),title:te(m(X(e,"title"))),alt:te(m(X(e,"alt"))),placeholder:te(m(X(e,"placeholder"))),name:te(X(e,"name")),inputType:te(X(e,"type")),href:te(X(e,"href"))}}catch{return{...G}}}(r,l),h=i.shouldMaskNetworkQueryParams?_(c.href,{sensitiveKeys:i.sensitiveKeys,redact:i.redact,kind:"query"}):c.href,d=e=>s&&e?"*":e;this.logger.log("[dom-events-listener.buildEvent] called");const u={dom_event_selector:o,dom_event_key_code:a,dom_event_type:e.type,dom_event_coordinates:t||{clientX:0,clientY:0},dom_event_target:{id:X(r,"id"),tagName:Y(r),className:X(r,"class"),text:s?"*":l,role:c.role,accessibleName:d(c.accessibleName),ariaLabel:d(c.ariaLabel),title:d(c.title),alt:d(c.alt),placeholder:d(c.placeholder),name:c.name,inputType:c.inputType,href:d(h)}};return this.enricher.enrich({type:"dom.event",attributes:u})}queueEvent(e){try{this.logger.log("[dom-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){h(e)}}generateSelector(e,t={}){if(!e||!e.nodeType||e.nodeType!==Node.ELEMENT_NODE)return"";const n=t.root||document.body||document.documentElement,r=t.maxAttempts||10,i=t.priorityAttributes||["id","class","name","aria-label","type","title","alt"];if("html"===Y(e).toLowerCase())return"html";let s="",o=0,a=e;const l=[];for(;a&&a!==n&&a!==document.documentElement&&o<r;){let e=Y(a).toLowerCase();try{const t=a.getAttribute("id");if(t&&/^[a-zA-Z][\w-]*$/.test(t))return`#${t}`;if(a.classList?.length){const t=Array.from(a.classList).filter((e=>e&&"string"==typeof e)).map((e=>`.${e}`));t.length&&(e+=t.join(""))}for(const t of i)if("id"!==t&&"class"!==t)try{const n=a.getAttribute(t);n&&(e+=`[${t}="${n.replace(/"/g,'\\"')}"]`)}catch(e){}}catch(t){e=Y(a).toLowerCase()||"*"}l.unshift(e||"*"),s=l.join(" > ");try{if(1===n.querySelectorAll(s).length)return s}catch(e){l.shift(),s=l.join(" > ")}try{a=a.parentElement}catch(e){break}o++}return s||"*"}},ce=["log","info","warn","error","debug","assert","trace"],he=class extends B{constructor(){super(...arguments),this.originalConsole=null,this.patchedConsole=null,this.isInitialized=!1}initialize(){if(!this.isInitialized)try{this.originalConsole=this.captureConsoleMethods();const e={};ce.forEach((t=>{if(!(t in console))return;const n=(...e)=>{try{this.handleEvent(e,t)}catch(e){h(e)}finally{this.originalConsole?.[t]&&this.originalConsole[t](...e)}};console[t]=n,e[t]=n})),this.patchedConsole=e,this.isInitialized=!0}catch(e){h(e)}}destroy(){try{if(!this.isInitialized)return;ce.forEach((e=>{this.originalConsole?.[e]&&this.patchedConsole?.[e]&&console[e]===this.patchedConsole[e]&&(console[e]=this.originalConsole[e])})),this.patchedConsole=null,this.isInitialized=!1}catch(e){h(e)}}handleEvent(e,t){try{if(!this.enricher.shouldSample())return;const n=Array.isArray(e)?e:[e],r=this.formatMessage(n,t);if(!r||r?.includes("groundcoverIgnore"))return;const i=this.extractAttributes(n),s=this.buildEvent({message:r,level:t,attributes:i});this.queueEvent(s)}catch(e){h(e)}}buildEvent({message:e,level:t,attributes:n}){const{message:r,attributes:i}=F(this.config.getPrivacy(),e,n);return this.enricher.enrich({type:"log",attributes:{...i,message:f({text:r}),level:t}})}queueEvent(e){try{this.logger.log("[logs-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){h(e)}}extractAttributes(e){if(Array.isArray(e)&&0!==e.length)try{const t={};for(const n of e)null!==n&&"object"==typeof n&&"[object Object]"===Object.prototype.toString.call(n)&&Object.assign(t,n);return delete t.message,delete t.level,delete t.location,t}catch(e){return void h(e)}}formatMessage(e,t){if(!Array.isArray(e))return String(e);try{return e.map((e=>{if(void 0===e)return"undefined";if(null===e)return"null";if("object"==typeof e){if(e instanceof Error)try{return"error"===t&&e.stack||e.toString()}catch{try{const t={name:e.name,message:e.message,stack:e.stack};return JSON.stringify(t)}catch{return Object.prototype.toString.call(e)}}try{return JSON.stringify(e)}catch{return Object.prototype.toString.call(e)}}return String(e)})).join(" ")}catch(e){return h(e),"[Error formatting console message]"}}captureConsoleMethods(){const e={};try{ce.forEach((t=>{console&&"function"==typeof console[t]&&(e[t]=console[t].bind(console))}))}catch(e){h(e)}return e}};function de(e){try{if(null==e)return"";if("string"==typeof e)return e;if("undefined"!=typeof FormData&&e instanceof FormData)return"[form data]";if("undefined"!=typeof Blob&&e instanceof Blob)return"[blob data]";if(e instanceof ArrayBuffer)return"[arraybuffer data]";if(ArrayBuffer.isView(e))return"[arraybuffer data]";if("undefined"!=typeof ReadableStream&&e instanceof ReadableStream)return"[stream data]";if(9===e?.nodeType)return"[document data]";if("undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams)try{return e.toString()}catch{return"[unreadable body]"}return Array.isArray(e)||"object"==typeof e?JSON.stringify(e):String(e)}catch(e){return h(`Failed to format body: ${e}`),"[unreadable body]"}}var ue="[request body too large]",ge="[request body unavailable]",pe="[response body too large]",fe="[response body unavailable]",me="[unreadable response body]",ve="[form data]",ye="[binary data]",be=class extends B{constructor(){super(...arguments),this.maxBodyLength=5e3,this.requestBodyReadTimeoutMs=3e3,this.responseBodyReadTimeoutMs=3e3,this.idGenerator=new d,this.patched=null,this.active=!1,this.handleEvent=e=>{try{if(this.shouldIgnoreRequest(e.url))return;if(!this.enricher.shouldSample())return;const t=this.buildEvent(e);this.queueEvent(t)}catch(e){h(e)}},this.buildEvent=e=>{let t=e.url,n=e.url;this.logger.log("[network-events-listener.buildEvent] called",{event:e});const r=this.config.getPrivacy(),i={sensitiveKeys:r.sensitiveKeys,redact:r.redact,kind:"query"};try{t=new URL(e.url).pathname}catch(s){n=new URL(e.url,globalThis.location.href).href,r.shouldMaskNetworkQueryParams&&(t=_(t,i))}r.shouldMaskNetworkQueryParams&&(n=_(n,i)),this.logger.log("[network-events-listener.buildEvent] fullUrl",{fullUrl:n});const s=this.formatHeaders(e.request.headers),o=this.formatHeaders(e.response.headers),a=e.method?.toUpperCase()||"UNKNOWN",{traceId:l,spanId:c}=this.extractTraceIds(e.request.headers),h=(e,t)=>r.shouldMaskNetworkBodies?function(e,t={}){if(!e)return e;const n=e.trim();if(n.length<=L&&(n.startsWith("{")||n.startsWith("[")))try{const e=JSON.parse(n);return JSON.stringify(z("",e,[],t,0,new WeakSet))}catch{}return e.includes("=")&&!e.includes("{")?C(e,t):P(e,t)}(e,{sensitiveKeys:r.sensitiveKeys,redact:r.redact,kind:t}):e,d=f({text:h(e.request.body,"request-body"),maxLength:this.maxBodyLength}),u=f({text:h(e.response.body,"response-body"),maxLength:this.maxBodyLength}),g={type:"HTTP",operation:{name:a},resource_name:t,status:e.status?.toString(),subType:a,url:{full:n},http:{route:t,path:t,method:e.method,status:e.status?.toString(),request:{headers:s,method:e.method},response:{headers:o,status_code:e.status?.toString()}},error:e?.error?.type?{type:e.error?.type||"Unknown error"}:void 0,gc:{request:{body:d},response:{body:u}}},p={type:"network",timestamp:e?.timestamp&&!Number.isNaN(e.timestamp)?b(e.timestamp):void 0,end_timestamp:e?.end_time&&!Number.isNaN(e.end_time)?b(e.end_time):void 0,span_name:`${e.method} ${t}`,attributes:g};return l&&(p.traceId=l),c&&(p.spanId=c),this.enricher.enrich(p)}}async readBodyStreamCapped(e,t={}){if(!e)return"";const{timeoutMs:n,overflowPlaceholder:r,timeoutPlaceholder:i}=t,s=e.getReader(),o=new TextDecoder;let a,l="",c=0,h=!1,d=!1;const u=null!=n?new Promise((e=>{a=setTimeout((()=>e({timedOut:!0})),n)})):void 0;try{for(;;){const e=u?await Promise.race([s.read(),u]):await s.read();if("timedOut"in e){d=!0;break}const{done:t,value:n}=e;if(t)break;if(c+n.byteLength>=this.maxBodyLength){const e=n.subarray(0,this.maxBodyLength-c);l+=o.decode(e,{stream:!0}),h=!0;break}c+=n.byteLength,l+=o.decode(n,{stream:!0})}return l+=o.decode(),d&&null!=i?i:h&&null!=r?r:l}finally{clearTimeout(a);try{s.cancel()?.catch((()=>{}))}catch{}}}mimeEssence(e){return(e.split(";")[0]||"").trim().toLowerCase()}isTextualContentType(e){const t=this.mimeEssence(e);return!!t&&(!!t.startsWith("text/")||("application/x-www-form-urlencoded"===t||"application/javascript"===t||"application/ecmascript"===t||"application/graphql"===t||/^application\/([\w.-]+\+)?(json|xml)$/.test(t)))}binaryLabel(e){const t=this.mimeEssence(e);return t.startsWith("image/")?"[image data]":t.startsWith("audio/")?"[audio data]":t.startsWith("video/")?"[video data]":t.startsWith("font/")||t.startsWith("application/font")||"application/vnd.ms-fontobject"===t?"[font data]":"application/pdf"===t?"[pdf data]":"application/zip"===t||"application/gzip"===t||"application/x-gzip"===t||"application/x-tar"===t||"application/x-7z-compressed"===t||"application/x-rar-compressed"===t?"[archive data]":"application/wasm"===t?"[wasm data]":t.includes("protobuf")||t.startsWith("application/grpc")?"[protobuf data]":ye}classifyByContentType(e){const t=(e||"").toLowerCase();return t.includes("multipart/form-data")?ve:this.isTextualContentType(t)?null:this.binaryLabel(t)}capBodyText(e,t){return e&&(e.length>=this.maxBodyLength||(new TextEncoder).encode(e).length>=this.maxBodyLength)?t:e}async getRequestBody(e,t){try{if(!e.body)return"";const n=this.classifyByContentType(t);return null!=n?n:await this.readBodyStreamCapped(e.clone().body,{timeoutMs:this.requestBodyReadTimeoutMs,overflowPlaceholder:ue,timeoutPlaceholder:ge})}catch{return ge}}async getResponseBody(e){if(!e.body)return"";const t=e.headers?.get?.("content-type")??"";if("text/event-stream"===this.mimeEssence(t))return me;const n=this.classifyByContentType(t);return null!=n?n:await this.readBodyStreamCapped(e.clone().body,{timeoutMs:this.responseBodyReadTimeoutMs,overflowPlaceholder:pe,timeoutPlaceholder:fe})}initialize(){this.logger.log("[network-events-listener.initialize] called");const e=globalThis.fetch,t=globalThis.XMLHttpRequest.prototype.open,n=globalThis.XMLHttpRequest.prototype.send,r=globalThis.XMLHttpRequest.prototype.setRequestHeader;try{this.patchXHR(),this.patchFetch()}catch(i){return globalThis.fetch=e,globalThis.XMLHttpRequest.prototype.open=t,globalThis.XMLHttpRequest.prototype.send=n,globalThis.XMLHttpRequest.prototype.setRequestHeader=r,this.patched=null,void h(i)}this.patched={originalFetch:e,wrappedFetch:globalThis.fetch,originalXHROpen:t,wrappedXHROpen:globalThis.XMLHttpRequest.prototype.open,originalXHRSend:n,wrappedXHRSend:globalThis.XMLHttpRequest.prototype.send,originalXHRSetRequestHeader:r,wrappedXHRSetRequestHeader:globalThis.XMLHttpRequest.prototype.setRequestHeader},this.active=!0}destroy(){this.active=!1;const e=this.patched;e&&(globalThis.fetch===e.wrappedFetch&&(globalThis.fetch=e.originalFetch),globalThis.XMLHttpRequest.prototype.open===e.wrappedXHROpen&&(globalThis.XMLHttpRequest.prototype.open=e.originalXHROpen),globalThis.XMLHttpRequest.prototype.send===e.wrappedXHRSend&&(globalThis.XMLHttpRequest.prototype.send=e.originalXHRSend),globalThis.XMLHttpRequest.prototype.setRequestHeader===e.wrappedXHRSetRequestHeader&&(globalThis.XMLHttpRequest.prototype.setRequestHeader=e.originalXHRSetRequestHeader),this.patched=null)}shouldIgnoreRequest(e){try{const t=this.config.getConfig()?.getEndpoint();if(t&&e.includes(t))return!0;if([".tsx",".jsx",".css"].some((t=>e.toLowerCase().endsWith(t))))return!0;return(this.config.getConfig()?.options?.excludedUrls||[]).some((t=>{if(t instanceof RegExp)return t.test(e);if("string"==typeof t&&(t.includes("*")||t.includes("?"))){const n=t.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(n).test(e)}return e===t}))}catch(e){return h(e),!1}}queueEvent(e){try{this.logger.log("[network-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){h(e)}}patchXHR(){const e=this,t=globalThis.XMLHttpRequest.prototype.open,n=globalThis.XMLHttpRequest.prototype.send,r=globalThis.XMLHttpRequest.prototype.setRequestHeader;let i;globalThis.XMLHttpRequest.prototype.open=function(n,r,s=!0,o,a){if(!e.active)return t.apply(this,[n,r,s,o,a]);if(i=Date.now(),e.shouldIgnoreRequest(r.toString()))return t.apply(this,[n,r,s,o,a]);const l=new URL(r.toString(),globalThis.location.href).href;return this._requestMethod=n,this._requestUrl=l,this._requestHeaders={},t.apply(this,[n,r,s,o,a])},globalThis.XMLHttpRequest.prototype.setRequestHeader=function(t,n){return e.active?(this._requestHeaders&&(this._requestHeaders[t]=n),r.apply(this,[t,n])):r.apply(this,[t,n])},globalThis.XMLHttpRequest.prototype.send=function(...t){if(!e.active)return n.apply(this,t);const r=this._requestUrl?.toString();if(!r||e.shouldIgnoreRequest(r))return n.apply(this,t);if(e.shouldAddTraceHeader(r)){const t=e.config.getConfig(),n=e.getTraceIds();t?.options?.tracing?.origin?.name&&e.addHeaderToXhrRequest({request:this,headerName:t.options.tracing.origin.name,headerValue:t.options.tracing.origin.value}),n&&(t?.options?.tracing?.traceIdHeaderName&&e.addHeaderToXhrRequest({request:this,headerName:t.options.tracing.traceIdHeaderName,headerValue:n.decimalTraceId}),t?.options?.tracing?.spanIdHeaderName&&e.addHeaderToXhrRequest({request:this,headerName:t.options.tracing.spanIdHeaderName,headerValue:n.decimalSpanId}),Boolean(t?.options?.tracing?.propagationHeaders)&&t?.options?.tracing?.propagationHeaders?.forEach((t=>{e.addHeaderToXhrRequest({request:this,headerName:t,headerValue:n.traceparent})})),t?.options?.tracing?.propagationHeaders?.length||e.addHeaderToXhrRequest({request:this,headerName:"traceparent",headerValue:n.traceparent}))}return this._requestBody=t[0]||"",this.addEventListener("load",(()=>{const t=Date.now(),n={};this.getAllResponseHeaders().split(/\r?\n/).forEach((e=>{const[t,r]=e.split(": ");t&&r&&(n[t.trim()]=r.trim())}));const r=e.capBodyText(de(this._requestBody),ue),s=""===this.responseType||"text"===this.responseType,o=s?this.responseText:this.response,a=(s?e.classifyByContentType(n["content-type"]||""):null)??e.capBodyText(de(o),pe),l={timestamp:i,end_time:t,method:this._requestMethod,url:this._requestUrl,body:r,status:this.status,request:{headers:this._requestHeaders||{},body:r},response:{headers:n,body:a}};e.handleEvent(l)})),n.apply(this,t)}}normalizeHeaders(e,t){try{const n=e?new Headers(e):new Headers;return t?(t instanceof Headers?t.forEach(((e,t)=>n.set(t,e))):Array.isArray(t)?new Headers(t).forEach(((e,t)=>n.set(t,e))):"object"==typeof t&&Object.entries(t).forEach((([e,t])=>n.set(e,t))),n):n}catch{return new Headers}}addTraceHeaders(e){const t=this.config.getConfig(),n=this.getTraceIds();if(t?.options?.tracing?.origin?.name&&this.addHeaderToFetchRequest({init:e,headerName:t.options.tracing.origin.name,headerValue:t.options.tracing.origin.value}),!n)return;t?.options?.tracing?.traceIdHeaderName&&this.addHeaderToFetchRequest({init:e,headerName:t.options.tracing.traceIdHeaderName,headerValue:n.decimalTraceId}),t?.options?.tracing?.spanIdHeaderName&&this.addHeaderToFetchRequest({init:e,headerName:t.options.tracing.spanIdHeaderName,headerValue:n.decimalSpanId});const r=t?.options?.tracing?.propagationHeaders;(r?.length?r:["traceparent"]).forEach((t=>{this.addHeaderToFetchRequest({init:e,headerName:t,headerValue:n.traceparent})}))}extractHeadersRecord(e){const t={};return e instanceof Headers&&e.forEach(((e,n)=>{t[n]=e})),t}patchFetch(){const e=globalThis.fetch;globalThis.fetch=(...t)=>{if(!this.active)return e.apply(globalThis,t);const n=Date.now();let[r,i]=t;i={...i||{}},t[1]=i;const s=r instanceof Request,o=i?.method||(s?r.method:"GET"),a=r instanceof Request?r.url:r.toString();if(this.shouldIgnoreRequest(a))return e.apply(globalThis,t);const l=this.shouldAddTraceHeader(a);i.headers=this.normalizeHeaders(s?r.headers:void 0,i.headers),l&&this.addTraceHeaders(i);const c=this.extractHeadersRecord(i.headers),h=null!=i?.body?this.capBodyText(de(i.body),ue):"",d=null!=i?.body?Promise.resolve(h):s?this.getRequestBody(r,"content-type"in c?c["content-type"]:r.headers.get("content-type")??""):Promise.resolve("");let u;return d.then((e=>{u=e})).catch((()=>{})),e.apply(globalThis,t).then((e=>{const t=Date.now(),r={};e.headers.forEach(((e,t)=>{r[t]=e}));const i={method:o,url:a,timestamp:n,body:"",status:e.status,end_time:t,request:{headers:c,body:""},response:{headers:r,body:""}},s=()=>{d.then((e=>{i.body=e,i.request.body=e,this.handleEvent(i)}))};return this.getResponseBody(e).then((e=>{i.response.body=e,s()})).catch((e=>{i.response.body=me,s(),this.logger.log("[network-events-listener.patchFetch] error",{error:e})})),e})).catch((e=>{const t=Date.now();let r="NetworkError";const i=e.message||"Unknown network error";e instanceof TypeError&&i.includes("Failed to fetch")?r="ERR_NETWORK_FAILURE":i.includes("Name not resolved")?r="ERR_NAME_NOT_RESOLVED":i.includes("Connection refused")&&(r="ERR_CONNECTION_REFUSED");const s=u??h,l={method:o,url:a,timestamp:n,body:s,status:0,end_time:t,request:{headers:c,body:s},response:{headers:{},body:""},error:{type:r}};throw this.handleEvent(l),e}))}}formatHeaders(e){const t=this.config.getPrivacy(),n="allow"===t.level,r=function(e,t={}){return e?Object.entries(e).reduce(((e,[n,r])=>{const i=n.toLowerCase(),s=N({key:n,value:r,path:[n],kind:"header",sensitive:k.includes(i)||T.test(i)||M(n,t.sensitiveKeys)},t.redact);return e[n]=null===s?"":String(s),e}),{}):e}(e,{sensitiveKeys:n?void 0:t.sensitiveKeys,redact:n?void 0:t.redact});return Object.entries(r)?.reduce(((e,[t,n])=>(e[t]=f({text:n}),e)),{})}extractTraceIds(e){const t=this.config.getConfig();let n="",r="";if(t?.options?.tracing?.traceIdHeaderName){const r=e[t.options.tracing.traceIdHeaderName];r&&"string"==typeof r&&(n=r)}if(t?.options?.tracing?.spanIdHeaderName){const n=e[t.options.tracing.spanIdHeaderName];n&&"string"==typeof n&&(r=n)}if(!n||!r){const t=this.extractTraceparentHeader(e);if(t){const e=t.split("-");4===e.length&&"00"===e[0]&&(!n&&e[1]&&32===e[1].length&&(n=e[1]),!r&&e[2]&&16===e[2].length&&(r=e[2]))}}return{traceId:n,spanId:r}}extractTraceparentHeader(e){const t=this.config.getConfig();if(t?.options?.tracing?.propagationHeaders?.length)for(const n of t.options.tracing.propagationHeaders){const t=e[n];if(t&&"string"==typeof t)return t}const n=e.traceparent;return n&&"string"==typeof n?n:""}getTraceIds(){const e=this.idGenerator.generateSpanId(),t=this.idGenerator.generateTraceId();let n,r;try{n=BigInt("0x"+t).toString(10),r=BigInt("0x"+e).toString(10)}catch(i){this.logger.log("[network-events-listener.getTraceIds] error",{error:i}),n=t,r=e}return{traceparent:`00-${t}-${e}-01`,traceId:t,spanId:e,decimalTraceId:n,decimalSpanId:r}}addHeaderToXhrRequest({request:e,headerName:t,headerValue:n}){if(this.logger.log("[network-events-listener.addHeaderToXhrRequest] called",{request:e,headerName:t,headerValue:n}),this.isValidHeaderName(t))try{e.setRequestHeader(t,n),e._requestHeaders[t]=n}catch(e){this.logger.log("[network-events-listener.addHeaderToXhrRequest] Error setting header",{error:e,headerName:t,headerValue:n})}else this.logger.log("[network-events-listener.addHeaderToXhrRequest] Invalid header name",{headerName:t})}addHeaderToFetchRequest({init:e,headerName:t,headerValue:n}){if(this.logger.log("[network-events-listener.addHeaderToFetchRequest] called",{init:e,headerName:t,headerValue:n}),this.isValidHeaderName(t))try{e.headers instanceof Headers?e.headers.set(t,n):e.headers={...e.headers,[t]:n}}catch(e){this.logger.log("[network-events-listener.addHeaderToFetchRequest] Error setting header",{error:e,headerName:t,headerValue:n})}else this.logger.log("[network-events-listener.addHeaderToFetchRequest] Invalid header name",{headerName:t})}isValidHeaderName(e){if(!e||"string"!=typeof e)return!1;return/^[a-zA-Z0-9!#$&'*+\-.^_`|~]+$/.test(e)}shouldAddTraceHeader(e){const t=this.config.getConfig();if(this.logger.log("[network-events-listener.shouldAddTraceHeader] called",{url:e,config:t}),!t?.options?.tracing?.propagationUrls?.length)return!1;const n=t.options.tracing.propagationUrls?.some((t=>{const n=t.replace(/\*/g,".*"),r=new RegExp(`^${n}$`),i=e.startsWith("/")?new URL(e,globalThis.location.href).pathname:e;return r.test(i)}));return this.logger.log("[network-events-listener.shouldAddTraceHeader] result",{url:e,result:n}),n}},we=class extends B{constructor(){super(...arguments),this.handleEvent=(e,t)=>{this.logger.log("[errors-events-listener.handleEvent] called");try{let n;if(e instanceof Error)n=e,this.enhanceError(n);else if(e instanceof ErrorEvent){if(n=e.error||new Error(e.message||"Unknown error"),/Script error\.?/.test(n.message))return;this.enhanceError(n,e)}else{if(!(e instanceof PromiseRejectionEvent))return;n=this.createUnhandledRejectionError(e)}const r=this.buildEvent(n,t);this.queueEvent(r)}catch(e){h(e)}}}initialize(){v?.addEventListener("error",this.handleEvent),v?.addEventListener("unhandledrejection",this.handleEvent)}destroy(){v?.removeEventListener("error",this.handleEvent),v?.removeEventListener("unhandledrejection",this.handleEvent)}buildEvent(e,t){const n=this.config.getPrivacy(),r=n.shouldMaskErrors,i={sensitiveKeys:n.sensitiveKeys,redact:n.redact,kind:"error"},s=e.message||"Unknown error",o=r?P(s,i):s,a=r&&t?.metadata?D(t.metadata,i):t?.metadata,l={error_type:e.name||"Error",error_message:o,error_stacktrace:this.buildStackTrace(e),error_fingerprint:`${e.name}:${f({text:o,maxLength:400})}`,error_handled:t?.handled||!1,error_metadata:a};return this.enricher.enrich({type:"exception",attributes:l})}queueEvent(e){try{this.logger.log("[errors-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){h(e)}}enhanceError(e,t){const{filename:n,lineno:r,colno:i}=t||{};n&&!e.fileName&&Object.defineProperty(e,"fileName",{value:n}),r&&!e.lineNumber&&Object.defineProperty(e,"lineNumber",{value:r}),i&&!e.columnNumber&&Object.defineProperty(e,"columnNumber",{value:i})}createUnhandledRejectionError(e){let t;if(e.reason instanceof Error)t=e.reason;else{const n="object"==typeof e.reason?JSON.stringify(e.reason,null,2):String(e.reason);t=new Error(n),t.name="UnhandledRejection",Object.defineProperty(t,"originalReason",{value:e.reason,enumerable:!1})}return t}buildStackTrace(e){if(!e)return[];try{return o.default.parse(e).map((e=>({filename:e.fileName||"unknown",function:e.functionName||"anonymous",lineno:e.lineNumber||0,colno:e.columnNumber||0})))}catch(e){return[]}}},Se=class extends B{constructor(e,{isEnabled:t}){if(super(e),this.currentUrl="",this.originalPushState=null,this.originalReplaceState=null,this.patchedPushState=null,this.patchedReplaceState=null,this.isInitialized=!1,this.isAutomaticNavigationEnabled=!1,this.activeNavigation=null,this.popStateHandler=()=>{this.handleLocationChange()},this.hashChangeHandler=()=>{this.handleLocationChange()},this.isInBrowserEnvironment()&&t)try{this.isAutomaticNavigationEnabled=t,this.currentUrl=v.location.href,this.originalPushState=history.pushState,this.originalReplaceState=history.replaceState}catch(e){h(e)}}isInBrowserEnvironment(){try{return void 0!==v&&void 0!==v.location&&void 0!==v.history&&"function"==typeof v.addEventListener}catch(e){return h(e),!1}}initialize(){try{if(this.logger.log("[navigation-listener.initialize] called"),!this.isInBrowserEnvironment()||!this.originalPushState||!this.originalReplaceState)return void this.logger.log("[navigation-listener.initialize] Browser environment not available, skipping initialization");if(!this.isAutomaticNavigationEnabled)return void this.logger.log("[navigation-listener.initialize] Automatic navigation is disabled, skipping initialization");const e=this.originalPushState,t=this.originalReplaceState,n=(...t)=>{const n=e.apply(history,t);return this.handleLocationChange(),n},r=(...e)=>{const n=t.apply(history,e);return this.handleLocationChange(),n};history.pushState=n,history.replaceState=r,this.patchedPushState=n,this.patchedReplaceState=r,v&&"function"==typeof v.addEventListener&&(v.addEventListener("popstate",this.popStateHandler),v.addEventListener("hashchange",this.hashChangeHandler)),this.isInitialized=!0}catch(e){h(e)}}destroy(){try{this.logger.log("[navigation-listener.destroy] called"),this.isInitialized&&this.originalPushState&&this.originalReplaceState&&(history.pushState===this.patchedPushState&&(history.pushState=this.originalPushState),history.replaceState===this.patchedReplaceState&&(history.replaceState=this.originalReplaceState)),this.patchedPushState=null,this.patchedReplaceState=null,v&&"function"==typeof v.removeEventListener&&(v.removeEventListener("popstate",this.popStateHandler),v.removeEventListener("hashchange",this.hashChangeHandler)),this.isInitialized=!1}catch(e){h(e)}}handleEvent(){try{this.logger.log("[navigation-listener.handleEvent] called");const e=this.buildEvent();this.queueEvent(e)}catch(e){h(e)}}buildEvent(){this.logger.log("[navigation-listener.buildEvent] called",v.location.href);const e=this.config.getPrivacy(),t="allow"===e.level,n=v.location.href,r=this.activeNavigation?.metadata,i={page_url:e.shouldMaskNetworkQueryParams?_(n,{sensitiveKeys:e.sensitiveKeys,redact:e.redact,kind:"query"}):n,metadata:!t&&r?D(r,{sensitiveKeys:e.sensitiveKeys,redact:e.redact}):r,duration_ms:this.activeNavigation?.duration_ms||0,start_timestamp:this.activeNavigation?.startTime||0,end_timestamp:this.activeNavigation?.endTime||0};return this.enricher.enrich({type:"navigation",attributes:i})}queueEvent(e){try{this.logger.log("[navigation-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){h(e)}}startNavigation(e){try{this.logger.log("[navigation-listener.startNavigation] called",e),this.activeNavigation={page_url:v?.location?.href||"",metadata:e,startTime:Date.now(),endTime:0,duration_ms:0}}catch(e){h(e)}}endNavigation(e){try{if(this.logger.log("[navigation-listener.endNavigation] called",e),!this.activeNavigation)return void this.logger.log("[navigation-listener.endNavigation] no active navigation found");this.logger.log("[navigation-listener.endNavigation] active navigation",this.activeNavigation),this.activeNavigation.endTime=Date.now(),this.activeNavigation.duration_ms=this.activeNavigation.endTime-this.activeNavigation.startTime,this.handleEvent()}catch(e){h(e)}}handleLocationChange(){try{if(!this.isInitialized)return;if(this.logger.log("[navigation-listener.handleLocationChange] called"),this.currentUrl===v.location.href)return;let e,t;try{e=new URL(v.location.href),t=new URL(this.currentUrl)}catch(e){return void h(e)}const n=e=>e.startsWith("#/"),r=n(e.hash)||n(t.hash);(e.pathname!==t.pathname||r&&e.hash!==t.hash)&&(this.currentUrl=v.location.href,this.handleEvent())}catch(e){h(e)}}},Ee=class extends B{constructor(e){super(e),this.loadEventHandler=()=>{this.logger.log("load event"),this.handleEvent()}}initialize(){try{this.logger.log("[page-load-listener.initialize] called"),this.logger.log("globalThis",v),"complete"===v?.document?.readyState?(this.logger.log("Page already loaded, triggering event immediately"),this.handleEvent()):v?.addEventListener("load",this.loadEventHandler)}catch(e){this.logger.log("[page-load-listener.initialize] error",e),h(e)}}destroy(){v?.removeEventListener("load",this.loadEventHandler)}handleEvent(){try{this.logger.log("[page-load-listener.handleEvent] called");const e=this.buildEvent();this.queueEvent(e)}catch(e){h(e)}}buildEvent(){const e=performance.getEntriesByType("navigation")[0],t=e?e.loadEventEnd-e.startTime:0,n=performance.getEntriesByType("resource"),r={count:n.length,totalSize:0,totalDuration:0,byType:{}};n.forEach((e=>{const t=e,n=t.transferSize||0,i=t.duration,s=t.initiatorType;r.totalSize+=n,r.totalDuration+=i,r.byType[s]||(r.byType[s]={count:0,size:0,duration:0}),r.byType[s].count++,r.byType[s].size+=n,r.byType[s].duration+=i}));const i=this.config.getPrivacy(),s=i.shouldMaskNetworkQueryParams,o={sensitiveKeys:i.sensitiveKeys,redact:i.redact,kind:"query"},a=v?.location?.href||"",l=v?.document?.referrer||"",c={page_url:s?_(a,o):a,page_load_time:t,page_referrer:s?_(l,o):l,page_resources:r};return this.enricher.enrich({type:"pageload",attributes:c})}queueEvent(e){try{this.logger.log("[page-load-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){h(e)}}},ke=class extends B{constructor(){super(...arguments),this.handleEvent=e=>{try{if(!this.enricher.shouldSample())return;const t=this.buildEvent(e);this.queueEvent(t)}catch(e){h(e)}}}initialize(){t.onCLS(this.handleEvent),t.onLCP(this.handleEvent),t.onFCP(this.handleEvent),t.onTTFB(this.handleEvent),t.onINP(this.handleEvent)}destroy(){}buildEvent(e){const t={performance_metric_name:e.name,performance_metric_value:e.value,performance_metric_id:e.id,performance_metric_navigation_type:e.navigationType||""};return this.enricher.enrich({type:"performance",attributes:t})}queueEvent(e){try{this.logger.log("[performance-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){h(e)}}},Te=class e{constructor(){if(this.worker=null,this.pending=new Map,this.nextId=0,this.consecutiveTimeouts=0,this.isAvailable=!1,this.logger=l.getInstance(),"undefined"==typeof Worker||"undefined"==typeof URL||"undefined"==typeof Blob)return;const e=new Blob(['!function(){"use strict";var r=Uint8Array,n=Uint16Array,e=Int32Array,t=new r([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),f=new r([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),o=new r([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),a=function(r,t){for(var f=new n(31),o=0;o<31;++o)f[o]=t+=1<<r[o-1];var a=new e(f[30]);for(o=1;o<30;++o)for(var i=f[o];i<f[o+1];++i)a[i]=i-f[o]<<5|o;return{b:f,r:a}},i=a(t,2),u=i.b,v=i.r;u[28]=258,v[258]=28;var s=a(f,0).r,l=new n(32768);for(Y=0;Y<32768;++Y)Q=(61680&(Q=(52428&(Q=(43690&Y)>>1|(21845&Y)<<1))>>2|(13107&Q)<<2))>>4|(3855&Q)<<4,l[Y]=((65280&Q)>>8|(255&Q)<<8)>>1;var c=function(r,e,t){for(var f=r.length,o=0,a=new n(e);o<f;++o)r[o]&&++a[r[o]-1];var i,u=new n(e);for(o=1;o<e;++o)u[o]=u[o-1]+a[o-1]<<1;for(i=new n(f),o=0;o<f;++o)r[o]&&(i[o]=l[u[r[o]-1]++]>>15-r[o]);return i},h=new r(288);for(Y=0;Y<144;++Y)h[Y]=8;for(Y=144;Y<256;++Y)h[Y]=9;for(Y=256;Y<280;++Y)h[Y]=7;for(Y=280;Y<288;++Y)h[Y]=8;var w=new r(32);for(Y=0;Y<32;++Y)w[Y]=5;var g=c(h,9),d=c(w,5),m=function(r){return(r+7)/8|0},p=function(n,e,t){return(null==t||t>n.length)&&(t=n.length),new r(n.subarray(e,t))},y=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>8},M=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>8,r[t+2]|=e>>16},b=function(e,t){for(var f=[],o=0;o<e.length;++o)e[o]&&f.push({s:o,f:e[o]});var a=f.length,i=f.slice();if(!a)return{t:U,l:0};if(1==a){var u=new r(f[0].s+1);return u[f[0].s]=1,{t:u,l:1}}f.sort((function(r,n){return r.f-n.f})),f.push({s:-1,f:25001});var v=f[0],s=f[1],l=0,c=1,h=2;for(f[0]={s:-1,f:v.f+s.f,l:v,r:s};c!=a-1;)v=f[f[l].f<f[h].f?l++:h++],s=f[l!=c&&f[l].f<f[h].f?l++:h++],f[c++]={s:-1,f:v.f+s.f,l:v,r:s};var w=i[0].s;for(o=1;o<a;++o)i[o].s>w&&(w=i[o].s);var g=new n(w+1),d=k(f[c-1],g,0);if(d>t){o=0;var m=0,p=d-t,y=1<<p;for(i.sort((function(r,n){return g[n.s]-g[r.s]||r.f-n.f}));o<a;++o){var M=i[o].s;if(!(g[M]>t))break;m+=y-(1<<d-g[M]),g[M]=t}for(m>>=p;m>0;){var b=i[o].s;g[b]<t?m-=1<<t-g[b]++-1:++o}for(;o>=0&&m;--o){var x=i[o].s;g[x]==t&&(--g[x],++m)}d=t}return{t:new r(g),l:d}},k=function(r,n,e){return-1==r.s?Math.max(k(r.l,n,e+1),k(r.r,n,e+1)):n[r.s]=e},x=function(r){for(var e=r.length;e&&!r[--e];);for(var t=new n(++e),f=0,o=r[0],a=1,i=function(r){t[f++]=r},u=1;u<=e;++u)if(r[u]==o&&u!=e)++a;else{if(!o&&a>2){for(;a>138;a-=138)i(32754);a>2&&(i(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(i(o),--a;a>6;a-=6)i(8304);a>2&&(i(a-3<<5|8208),a=0)}for(;a--;)i(o);a=1,o=r[u]}return{c:t.subarray(0,f),n:e}},A=function(r,n){for(var e=0,t=0;t<n.length;++t)e+=r[t]*n[t];return e},C=function(r,n,e){var t=e.length,f=m(n+2);r[f]=255&t,r[f+1]=t>>8,r[f+2]=255^r[f],r[f+3]=255^r[f+1];for(var o=0;o<t;++o)r[f+o+4]=e[o];return 8*(f+4+t)},T=function(r,e,a,i,u,v,s,l,m,p,k){y(e,k++,a),++u[256];for(var T=b(u,15),E=T.t,U=T.l,D=b(v,15),S=D.t,I=D.l,j=x(E),z=j.c,J=j.n,N=x(S),O=N.c,q=N.n,B=new n(19),F=0;F<z.length;++F)++B[31&z[F]];for(F=0;F<O.length;++F)++B[31&O[F]];for(var G=b(B,7),H=G.t,K=G.l,L=19;L>4&&!H[o[L-1]];--L);var P,Q,R,V,W=p+5<<3,X=A(u,h)+A(v,w)+s,Y=A(u,E)+A(v,S)+s+14+3*L+A(B,H)+2*B[16]+3*B[17]+7*B[18];if(m>=0&&W<=X&&W<=Y)return C(e,k,r.subarray(m,m+p));if(y(e,k,1+(Y<X)),k+=2,Y<X){P=c(E,U),Q=E,R=c(S,I),V=S;var Z=c(H,K);y(e,k,J-257),y(e,k+5,q-1),y(e,k+10,L-4),k+=14;for(F=0;F<L;++F)y(e,k+3*F,H[o[F]]);k+=3*L;for(var $=[z,O],_=0;_<2;++_){var rr=$[_];for(F=0;F<rr.length;++F){var nr=31&rr[F];y(e,k,Z[nr]),k+=H[nr],nr>15&&(y(e,k,rr[F]>>5&127),k+=rr[F]>>12)}}}else P=g,Q=h,R=d,V=w;for(F=0;F<l;++F){var er=i[F];if(er>255){M(e,k,P[(nr=er>>18&31)+257]),k+=Q[nr+257],nr>7&&(y(e,k,er>>23&31),k+=t[nr]);var tr=31&er;M(e,k,R[tr]),k+=V[tr],tr>3&&(M(e,k,er>>5&8191),k+=f[tr])}else M(e,k,P[er]),k+=Q[er]}return M(e,k,P[256]),k+Q[256]},E=new e([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),U=new r(0),D=function(){for(var r=new Int32Array(256),n=0;n<256;++n){for(var e=n,t=9;--t;)e=(1&e&&-306674912)^e>>>1;r[n]=e}return r}(),S=function(o,a,i,u,l){if(!l&&(l={l:1},a.dictionary)){var c=a.dictionary.subarray(-32768),h=new r(c.length+o.length);h.set(c),h.set(o,c.length),o=h,l.w=c.length}return function(o,a,i,u,l,c){var h=c.z||o.length,w=new r(u+h+5*(1+Math.ceil(h/7e3))+l),g=w.subarray(u,w.length-l),d=c.l,y=7&(c.r||0);if(a){y&&(g[0]=c.r>>3);for(var M=E[a-1],b=M>>13,k=8191&M,x=(1<<i)-1,A=c.p||new n(32768),U=c.h||new n(x+1),D=Math.ceil(i/3),S=2*D,I=function(r){return(o[r]^o[r+1]<<D^o[r+2]<<S)&x},j=new e(25e3),z=new n(288),J=new n(32),N=0,O=0,q=c.i||0,B=0,F=c.w||0,G=0;q+2<h;++q){var H=I(q),K=32767&q,L=U[H];if(A[K]=L,U[H]=K,F<=q){var P=h-q;if((N>7e3||B>24576)&&(P>423||!d)){y=T(o,g,0,j,z,J,O,B,G,q-G,y),B=N=O=0,G=q;for(var Q=0;Q<286;++Q)z[Q]=0;for(Q=0;Q<30;++Q)J[Q]=0}var R=2,V=0,W=k,X=K-L&32767;if(P>2&&H==I(q-X))for(var Y=Math.min(b,P)-1,Z=Math.min(32767,q),$=Math.min(258,P);X<=Z&&--W&&K!=L;){if(o[q+R]==o[q+R-X]){for(var _=0;_<$&&o[q+_]==o[q+_-X];++_);if(_>R){if(R=_,V=X,_>Y)break;var rr=Math.min(X,_-2),nr=0;for(Q=0;Q<rr;++Q){var er=q-X+Q&32767,tr=er-A[er]&32767;tr>nr&&(nr=tr,L=er)}}}X+=(K=L)-(L=A[K])&32767}if(V){j[B++]=268435456|v[R]<<18|s[V];var fr=31&v[R],or=31&s[V];O+=t[fr]+f[or],++z[257+fr],++J[or],F=q+R,++N}else j[B++]=o[q],++z[o[q]]}}for(q=Math.max(q,F);q<h;++q)j[B++]=o[q],++z[o[q]];y=T(o,g,d,j,z,J,O,B,G,q-G,y),d||(c.r=7&y|g[y/8|0]<<3,y-=7,c.h=U,c.p=A,c.i=q,c.w=F)}else{for(q=c.w||0;q<h+d;q+=65535){var ar=q+65535;ar>=h&&(g[y/8|0]=d,ar=h),y=C(g,y+1,o.subarray(q,ar))}c.i=h}return p(w,0,u+m(y)+l)}(o,null==a.level?6:a.level,null==a.mem?l.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(o.length)))):20:12+a.mem,i,u,l)},I=function(r,n,e){for(;e;++n)r[n]=e,e>>>=8};function j(r,n){n||(n={});var e=function(){var r=-1;return{p:function(n){for(var e=r,t=0;t<n.length;++t)e=D[255&e^n[t]]^e>>>8;r=e},d:function(){return~r}}}(),t=r.length;e.p(r);var f,o=S(r,n,10+((f=n).filename?f.filename.length+1:0),8),a=o.length;return function(r,n){var e=n.filename;if(r[0]=31,r[1]=139,r[2]=8,r[8]=n.level<2?4:9==n.level?2:0,r[9]=3,0!=n.mtime&&I(r,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),e){r[3]=8;for(var t=0;t<=e.length;++t)r[t+10]=e.charCodeAt(t)}}(o,n),I(o,a-8,e.d()),I(o,a-4,t),o}var z="undefined"!=typeof TextEncoder&&new TextEncoder,J="undefined"!=typeof TextDecoder&&new TextDecoder;try{J.decode(U,{stream:!0})}catch(r){}var N=Uint8Array,O=Uint16Array,q=Uint32Array,B=new N([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),F=new N([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),G=new N([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),H=function(r,n){for(var e=new O(31),t=0;t<31;++t)e[t]=n+=1<<r[t-1];var f=new q(e[30]);for(t=1;t<30;++t)for(var o=e[t];o<e[t+1];++o)f[o]=o-e[t]<<5|t;return[e,f]},K=H(B,2),L=K[0],P=K[1];L[28]=258,P[258]=28;var Q,R=H(F,0)[1],V=new O(32768);for(Y=0;Y<32768;++Y)Q=(61680&(Q=(52428&(Q=(43690&Y)>>>1|(21845&Y)<<1))>>>2|(13107&Q)<<2))>>>4|(3855&Q)<<4,V[Y]=((65280&Q)>>>8|(255&Q)<<8)>>>1;var W=function(r,n,e){for(var t=r.length,f=0,o=new O(n);f<t;++f)++o[r[f]-1];var a,i=new O(n);for(f=0;f<n;++f)i[f]=i[f-1]+o[f-1]<<1;for(a=new O(t),f=0;f<t;++f)a[f]=V[i[r[f]-1]++]>>>15-r[f];return a},X=new N(288);for(Y=0;Y<144;++Y)X[Y]=8;for(Y=144;Y<256;++Y)X[Y]=9;for(Y=256;Y<280;++Y)X[Y]=7;for(Y=280;Y<288;++Y)X[Y]=8;var Y,Z=new N(32);for(Y=0;Y<32;++Y)Z[Y]=5;var $=W(X,9),_=W(Z,5),rr=function(r){return(r/8|0)+(7&r&&1)},nr=function(r,n,e){(null==e||e>r.length)&&(e=r.length);var t=new(r instanceof O?O:r instanceof q?q:N)(e-n);return t.set(r.subarray(n,e)),t},er=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>>8},tr=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>>8,r[t+2]|=e>>>16},fr=function(r,n){for(var e=[],t=0;t<r.length;++t)r[t]&&e.push({s:t,f:r[t]});var f=e.length,o=e.slice();if(!f)return[new N(0),0];if(1==f){var a=new N(e[0].s+1);return a[e[0].s]=1,[a,1]}e.sort((function(r,n){return r.f-n.f})),e.push({s:-1,f:25001});var i=e[0],u=e[1],v=0,s=1,l=2;for(e[0]={s:-1,f:i.f+u.f,l:i,r:u};s!=f-1;)i=e[e[v].f<e[l].f?v++:l++],u=e[v!=s&&e[v].f<e[l].f?v++:l++],e[s++]={s:-1,f:i.f+u.f,l:i,r:u};var c=o[0].s;for(t=1;t<f;++t)o[t].s>c&&(c=o[t].s);var h=new O(c+1),w=or(e[s-1],h,0);if(w>n){t=0;var g=0,d=w-n,m=1<<d;for(o.sort((function(r,n){return h[n.s]-h[r.s]||r.f-n.f}));t<f;++t){var p=o[t].s;if(!(h[p]>n))break;g+=m-(1<<w-h[p]),h[p]=n}for(g>>>=d;g>0;){var y=o[t].s;h[y]<n?g-=1<<n-h[y]++-1:++t}for(;t>=0&&g;--t){var M=o[t].s;h[M]==n&&(--h[M],++g)}w=n}return[new N(h),w]},or=function(r,n,e){return-1==r.s?Math.max(or(r.l,n,e+1),or(r.r,n,e+1)):n[r.s]=e},ar=function(r){for(var n=r.length;n&&!r[--n];);for(var e=new O(++n),t=0,f=r[0],o=1,a=function(r){e[t++]=r},i=1;i<=n;++i)if(r[i]==f&&i!=n)++o;else{if(!f&&o>2){for(;o>138;o-=138)a(32754);o>2&&(a(o>10?o-11<<5|28690:o-3<<5|12305),o=0)}else if(o>3){for(a(f),--o;o>6;o-=6)a(8304);o>2&&(a(o-3<<5|8208),o=0)}for(;o--;)a(f);o=1,f=r[i]}return[e.subarray(0,t),n]},ir=function(r,n){for(var e=0,t=0;t<n.length;++t)e+=r[t]*n[t];return e},ur=function(r,n,e){var t=e.length,f=rr(n+2);r[f]=255&t,r[f+1]=t>>>8,r[f+2]=255^r[f],r[f+3]=255^r[f+1];for(var o=0;o<t;++o)r[f+o+4]=e[o];return 8*(f+4+t)},vr=function(r,n,e,t,f,o,a,i,u,v,s){er(n,s++,e),++f[256];for(var l=fr(f,15),c=l[0],h=l[1],w=fr(o,15),g=w[0],d=w[1],m=ar(c),p=m[0],y=m[1],M=ar(g),b=M[0],k=M[1],x=new O(19),A=0;A<p.length;++A)x[31&p[A]]++;for(A=0;A<b.length;++A)x[31&b[A]]++;for(var C=fr(x,7),T=C[0],E=C[1],U=19;U>4&&!T[G[U-1]];--U);var D,S,I,j,z=v+5<<3,J=ir(f,X)+ir(o,Z)+a,N=ir(f,c)+ir(o,g)+a+14+3*U+ir(x,T)+(2*x[16]+3*x[17]+7*x[18]);if(z<=J&&z<=N)return ur(n,s,r.subarray(u,u+v));if(er(n,s,1+(N<J)),s+=2,N<J){D=W(c,h),S=c,I=W(g,d),j=g;var q=W(T,E);er(n,s,y-257),er(n,s+5,k-1),er(n,s+10,U-4),s+=14;for(A=0;A<U;++A)er(n,s+3*A,T[G[A]]);s+=3*U;for(var H=[p,b],K=0;K<2;++K){var L=H[K];for(A=0;A<L.length;++A){var P=31&L[A];er(n,s,q[P]),s+=T[P],P>15&&(er(n,s,L[A]>>>5&127),s+=L[A]>>>12)}}}else D=$,S=X,I=_,j=Z;for(A=0;A<i;++A)if(t[A]>255){P=t[A]>>>18&31;tr(n,s,D[P+257]),s+=S[P+257],P>7&&(er(n,s,t[A]>>>23&31),s+=B[P]);var Q=31&t[A];tr(n,s,I[Q]),s+=j[Q],Q>3&&(tr(n,s,t[A]>>>5&8191),s+=F[Q])}else tr(n,s,D[t[A]]),s+=S[t[A]];return tr(n,s,D[256]),s+S[256]},sr=new q([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),lr=function(r,n,e,t,f){return function(r,n,e,t,f,o){var a=r.length,i=new N(t+a+5*(1+Math.floor(a/7e3))+f),u=i.subarray(t,i.length-f),v=0;if(!n||a<8)for(var s=0;s<=a;s+=65535){var l=s+65535;l<a?v=ur(u,v,r.subarray(s,l)):(u[s]=o,v=ur(u,v,r.subarray(s,a)))}else{for(var c=sr[n-1],h=c>>>13,w=8191&c,g=(1<<e)-1,d=new O(32768),m=new O(g+1),p=Math.ceil(e/3),y=2*p,M=function(n){return(r[n]^r[n+1]<<p^r[n+2]<<y)&g},b=new q(25e3),k=new O(288),x=new O(32),A=0,C=0,T=(s=0,0),E=0,U=0;s<a;++s){var D=M(s),S=32767&s,I=m[D];if(d[S]=I,m[D]=S,E<=s){var j=a-s;if((A>7e3||T>24576)&&j>423){v=vr(r,u,0,b,k,x,C,T,U,s-U,v),T=A=C=0,U=s;for(var z=0;z<286;++z)k[z]=0;for(z=0;z<30;++z)x[z]=0}var J=2,G=0,H=w,K=S-I&32767;if(j>2&&D==M(s-K))for(var L=Math.min(h,j)-1,Q=Math.min(32767,s),V=Math.min(258,j);K<=Q&&--H&&S!=I;){if(r[s+J]==r[s+J-K]){for(var W=0;W<V&&r[s+W]==r[s+W-K];++W);if(W>J){if(J=W,G=K,W>L)break;var X=Math.min(K,W-2),Y=0;for(z=0;z<X;++z){var Z=s-K+z+32768&32767,$=Z-d[Z]+32768&32767;$>Y&&(Y=$,I=Z)}}}K+=(S=I)-(I=d[S])+32768&32767}if(G){b[T++]=268435456|P[J]<<18|R[G];var _=31&P[J],er=31&R[G];C+=B[_]+F[er],++k[257+_],++x[er],E=s+J,++A}else b[T++]=r[s],++k[r[s]]}}v=vr(r,u,o,b,k,x,C,T,U,s-U,v)}return nr(i,0,t+rr(v)+f)}(r,null==n.level?6:n.level,null==n.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(r.length)))):12+n.mem,e,t,!0)};function cr(r,n){void 0===n&&(n={});var e=function(){var r=1,n=0;return{p:function(e){for(var t=r,f=n,o=e.length,a=0;a!=o;){for(var i=Math.min(a+5552,o);a<i;++a)f+=t+=e[a];t%=65521,f%=65521}r=t,n=f},d:function(){return(r>>>8<<16|(255&n)<<8|n>>>8)+2*((255&r)<<23)}}}();e.p(r);var t,f,o,a=lr(r,n,2,4);return t=a,f=n.level,o=0==f?0:f<6?1:9==f?3:2,t[0]=120,t[1]=o<<6|(o?32-2*o:1),function(r,n,e){for(;e;++n)r[n]=e,e>>>=8}(a,a.length-4,e.d()),a}var hr=r=>{const n={...r,v:"v1"};return function(r){for(var n="",e=0;e<r.length;){var t=r[e++];n+=String.fromCharCode(t)}return n}(cr(function(r,n){var e=r.length;if("undefined"!=typeof TextEncoder)return(new TextEncoder).encode(r);for(var t=new N(r.length+(r.length>>>1)),f=0,o=function(r){t[f++]=r},a=0;a<e;++a){if(f+5>t.length){var i=new N(f+8+(e-a<<1));i.set(t),t=i}var u=r.charCodeAt(a);u<128||n?o(u):u<2048?(o(192|u>>>6),o(128|63&u)):u>55295&&u<57344?(o(240|(u=65536+(1047552&u)|1023&r.charCodeAt(++a))>>>18),o(128|u>>>12&63),o(128|u>>>6&63),o(128|63&u)):(o(224|u>>>12),o(128|u>>>6&63),o(128|63&u))}return nr(t,0,f)}(JSON.stringify(n))))},wr=self;wr.onmessage=n=>{const e=n.data;if(!e||"number"!=typeof e.id||"pack-replay"!==e.op&&"encode-batch"!==e.op)return void(e&&"number"==typeof e.id&&wr.postMessage({id:e.id,ok:!1,error:"malformed message"}));const{id:t,op:f,payload:o}=e;try{if("pack-replay"===f){const r=o.events.map((r=>hr(r)));return void wr.postMessage({id:t,ok:!0,result:{packed:r}})}if("encode-batch"===f){const{json:n,compress:e}=o;if(!e){const r=(new TextEncoder).encode(n);return void wr.postMessage({id:t,ok:!0,result:{bytes:r,isCompressed:!1}},[r.buffer])}try{const e=j(function(n,e){if(z)return z.encode(n);for(var t=n.length,f=new r(n.length+(n.length>>1)),o=0,a=function(r){f[o++]=r},i=0;i<t;++i){if(o+5>f.length){var u=new r(o+8+(t-i<<1));u.set(f),f=u}var v=n.charCodeAt(i);v<128||e?a(v):v<2048?(a(192|v>>6),a(128|63&v)):v>55295&&v<57344?(a(240|(v=65536+(1047552&v)|1023&n.charCodeAt(++i))>>18),a(128|v>>12&63),a(128|v>>6&63),a(128|63&v)):(a(224|v>>12),a(128|v>>6&63),a(128|63&v))}return p(f,0,o)}(n));return void wr.postMessage({id:t,ok:!0,result:{bytes:e,isCompressed:!0}},[e.buffer])}catch{const r=(new TextEncoder).encode(n);return void wr.postMessage({id:t,ok:!0,result:{bytes:r,isCompressed:!1}},[r.buffer])}}wr.postMessage({id:t,ok:!1,error:"unknown op"})}catch(r){wr.postMessage({id:t,ok:!1,error:r instanceof Error?r.message:String(r)})}}}();'],{type:"application/javascript"}),t=URL.createObjectURL(e);try{this.worker=new Worker(t),Promise.resolve().then((()=>URL.revokeObjectURL(t))),this.worker.onmessage=e=>this.handleMessage(e.data),this.worker.onerror=e=>this.handleFatalFailure("worker onerror",e.message),this.worker.onmessageerror=()=>this.logger.log("[worker-client] worker onmessageerror — single message dropped, worker still alive"),this.isAvailable=!0,this.logger.log("[worker-client] worker spawned")}catch(e){URL.revokeObjectURL(t),this.logger.log("[worker-client] failed to spawn worker, falling back to main thread:",e),this.worker=null,this.isAvailable=!1}}static getInstance(){return e.instance||(e.instance=new e),e.instance}static __resetForTests(){e.instance&&e.instance.terminate(),e.instance=null}static async withFallback(t,n,r){const i=e.getInstance();if(!i.isAvailable)return n();try{return await t(i)}catch(e){return l.getInstance().log(`[${r}] worker call failed, using inline fallback:`,e),n()}}packReplay(e){return this.dispatch("pack-replay",{events:e}).then((e=>e.packed))}encodeBatch(e,t){return this.dispatch("encode-batch",{json:e,compress:t}).then((e=>({data:e.bytes,isCompressed:e.isCompressed})))}terminate(){if(this.worker){try{this.worker.terminate()}catch(e){this.logger.log("[worker-client] failed to terminate worker:",e)}this.worker=null}this.isAvailable=!1,this.rejectAllPending(new Error("worker terminated")),e.instance===this&&(e.instance=null)}dispatch(e,t){if(!this.worker||!this.isAvailable)return Promise.reject(new Error("worker not available"));const n=this.nextId++,r=this.worker;return new Promise(((i,s)=>{const o=setTimeout((()=>{this.pending.has(n)&&(this.pending.delete(n),this.consecutiveTimeouts+=1,this.consecutiveTimeouts>=3&&this.handleFatalFailure("worker latched after 3 consecutive timeouts"),s(new Error("worker request timed out")))}),1500);this.pending.set(n,{resolve:i,reject:s,timeoutId:o});try{r.postMessage({id:n,op:e,payload:t})}catch(e){clearTimeout(o),this.pending.delete(n),s(e instanceof Error?e:new Error(String(e)))}}))}handleMessage(e){const t=this.pending.get(e.id);t&&(clearTimeout(t.timeoutId),this.pending.delete(e.id),this.consecutiveTimeouts=0,e.ok?t.resolve(e.result):t.reject(new Error(e.error)))}handleFatalFailure(e,t){if(this.logger.log(`[worker-client] ${e}${t?": "+t:""}`),this.isAvailable=!1,this.rejectAllPending(new Error(e)),this.worker){try{this.worker.terminate()}catch{}this.worker=null}}rejectAllPending(e){for(const t of this.pending.values())clearTimeout(t.timeoutId),t.reject(e);this.pending.clear()}};Te.instance=null;var Ie=Te;var Re=class{constructor(e){this.logger=l.getInstance(),this.stopFn=null,this.isRecording=!1,this.events=[],this.startTime=0,this.batchSize=3,this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0,this.sendTimerId=null,this.configManager=e.config,this.session=e.session,this.eventsPool=e.eventsPool,this.enricher=e.enricher}initialize(){this.logger.log("[session-replay-listener] initialize called"),this.isRecording?this.logger.log("[session-replay-listener] already recording"):this.startRecording()}startRecording(){try{this.startTime=Date.now(),this.events=[],this.isRecording=!0,this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0;const e=this.configManager.getConfig()?.options?.replay,t=e?.blockedSelectors?.filter(Boolean),r=t?.length?t.join(", "):void 0,i=K(this.configManager),s=function(e){const t=e?.privacy,n=function(e){return"mask-sensitive"===e||"mask-all"===e||"allow"===e?e:void 0}(t?.level)??"mask-sensitive",r="allow"===n,i=j(t?.maskSelectors),s=t?.replay,o="function"==typeof s?.maskTextFn?s.maskTextFn:void 0,a="function"==typeof s?.maskInputFn?s.maskInputFn:void 0;let l;return l="mask-all"===n||!r&&void 0!==o?["*",...i].join(", "):"mask-sensitive"===n?["[data-private]",...i].join(", "):void 0,{maskTextSelector:l,maskAllInputs:!r,maskTextFn:o,maskInputFn:a}}(this.configManager.getConfig()?.providedOptions),o=s.maskInputFn??("allow"===i.level?void 0:(e,t)=>Q(t,i)?"*".repeat(e.length):e);this.stopFn=n.record({...r?{blockSelector:r}:{},...s.maskTextSelector?{maskTextSelector:s.maskTextSelector}:{},maskAllInputs:s.maskAllInputs,...s.maskTextFn?{maskTextFn:s.maskTextFn}:{},...o?{maskInputFn:o}:{},slimDOMOptions:{script:!1,comment:!1,headWhitespace:!1},sampling:{mousemove:100,input:"last",scroll:150},checkoutEveryNms:3e4,emit:(e,t)=>{if(this.isRecording)try{this.events.push(e),t&&(this.batchContainsFullSnapshot=!0,this.fullSnapshotTimestamp=Date.now(),this.logger.log("[session-replay-listener] full snapshot captured at",this.fullSnapshotTimestamp)),this.events.length>=this.batchSize&&this.scheduleSendBatch()}catch(e){h(e),this.logger.log("[session-replay-listener] failed to process event in emit callback:",e)}}})||null,this.logger.log("[session-replay-listener] started recording with full snapshot interval:",3e4,"ms")}catch(e){h(e),this.logger.log("[session-replay-listener] failed to start recording:",e),this.isRecording=!1}}scheduleSendBatch(){null===this.sendTimerId&&(this.sendTimerId=v.setTimeout((()=>{this.sendTimerId=null,this.isRecording&&this.sendBatchAsync().catch((e=>{h(e),this.logger.log("[session-replay-listener] failed to send deferred batch:",e)}))}),0))}clearScheduledSend(){null!==this.sendTimerId&&(v.clearTimeout(this.sendTimerId),this.sendTimerId=null)}flushPendingSync(){this.clearScheduledSend(),0!==this.events.length&&this.sendBatchSync()}async sendBatchAsync(){if(0===this.events.length)return;const e=this.drainBatch(),t=this.session.getSessionId(),n=Ie.getInstance();let i;if(n.isAvailable)try{i=await n.packReplay(e.events)}catch(t){h(t),this.logger.log("[session-replay-listener] worker pack failed, using inline fallback:",t),i=e.events.map((e=>r.pack(e)))}else i=e.events.map((e=>r.pack(e)));this.session.getSessionId()===t?this.enqueueReplayEvent(i,e.containsFullSnapshot,e.snapshotTimestamp):this.logger.log("[session-replay-listener] dropping packed batch: session rotated during pack",{drained:i.length})}sendBatchSync(){if(0===this.events.length)return;const e=this.drainBatch(),t=e.events.map((e=>r.pack(e)));this.enqueueReplayEvent(t,e.containsFullSnapshot,e.snapshotTimestamp)}drainBatch(){const e=this.events,t=this.batchContainsFullSnapshot,n=this.fullSnapshotTimestamp;return this.events=[],this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0,{events:e,containsFullSnapshot:t,snapshotTimestamp:n}}enqueueReplayEvent(e,t,n){try{const r={_gc_replay_data:{events:e}};t&&(r.replay_is_full_snapshot=!0,r.replay_full_snapshot_timestamp=n);const i=this.enricher.enrich({type:"replay",attributes:r});this.eventsPool.addEvent(i),this.logger.log("[session-replay-listener] sent batch with",e.length,"events",t?"(includes full snapshot)":"")}catch(e){h(e),this.logger.log("[session-replay-listener] failed to send batch:",e)}}stopRecording(){if(this.isRecording)try{this.clearScheduledSend(),this.stopFn?.(),this.isRecording=!1,this.events.length>0&&this.sendBatchSync(),this.stopFn=null,this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0}catch(e){h(e),this.logger.log("[session-replay-listener] failed to stop recording:",e)}}destroy(){this.stopRecording()}},Le=144e5,Me=288e5,xe=18e5,qe="gcSample",Ae={eventSampleRate:1,sessionSampleRate:1,debug:!1,privacy:{level:"mask-sensitive"},enabledEvents:[],tracing:{propagationUrls:[],propagationHeaders:[],traceIdHeaderName:"",spanIdHeaderName:"",origin:{name:"",value:""}},transport:{batchSize:10,batchTimeout:1e4,compression:!0},replay:{},sessionMaxDuration:Le},Ne=["pointerdown","keydown","scroll","touchstart","mousemove"],Ce=class{constructor(e){this.logger=l.getInstance(),this.lastSignalMs=0,this.idleTimer=null,this.installed=!1,this.handleInput=()=>{const e=Date.now();if(!(e-this.lastSignalMs<3e4)){this.notePresence(e);try{this.callbacks.onPresence(e)}catch(e){h(e)}}},this.callbacks=e}initialize(){this.installed||(this.installed=!0,Ne.forEach((e=>{try{v.addEventListener?.(e,this.handleInput,{capture:!0,passive:!0})}catch(e){h(e)}})),this.armIdleTimer(),this.logger.log("[user-presence-monitor] installed"))}notePresence(e){this.lastSignalMs=e,this.armIdleTimer()}resetIdleTimer(){this.armIdleTimer()}armIdleTimer(){try{this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=null,this.idleTimer=setTimeout((()=>{this.idleTimer=null,this.logger.log("[user-presence-monitor] user idle for",xe,"ms");try{this.callbacks.onIdle()}catch(e){h(e)}}),xe)}catch(e){h(e)}}destroy(){if(this.installed){this.installed=!1,Ne.forEach((e=>{try{v.removeEventListener?.(e,this.handleInput,{capture:!0})}catch(e){h(e)}}));try{this.idleTimer&&clearTimeout(this.idleTimer)}catch(e){h(e)}finally{this.idleTimer=null}}}},He=class{constructor(e){this.logger=l.getInstance(),this.rotating=!1,this.session=e.session,this.pool=e.pool,this.idGenerator=e.idGenerator,this.activityEventTypes=e.activityEventTypes,this.ignoredEventTypes=e.ignoredEventTypes,this.hooks=e.hooks??{}}get isRotating(){return this.rotating}install(){this.pool.setBeforeEnqueueHook((e=>this.reconcileOnEnqueue(e))),this.pool.setFlushGate((()=>this.session.hasUserActivity()))}uninstall(e){this.pool.setBeforeEnqueueHook(null);try{e?.()}catch(e){h(e)}this.pool.setFlushGate(null)}reconcile(e,t){if(this.rotating)return;t&&this.session.isSessionInactive(e)&&this.rotate({reason:"inactivity gap"});const n=this.session.getSessionElapsedMs(e),r=this.session.getSessionMaxDuration(),i=n>=r;this.logger.log("[session-lifecycle] session reconcile",{userPresent:t,elapsedMs:n,maxDurationMs:r,expired:i}),i&&this.rotate({reason:"max session duration"}),this.hooks.onReconcile?.(t),t&&(this.session.setLastActivityMs(e),this.hooks.onPresenceStamped?.(e))}reconcileOnEnqueue(e){this.rotating||(this.ignoredEventTypes.has(e.type)?this.logger.log("[session-lifecycle] enqueue rotation check: ignoring heartbeat-style event",e.type):this.reconcile(Date.now(),this.activityEventTypes.has(e.type)))}rotateIfStale(e,t){(this.session.isSessionInactive(e)||this.session.isSessionExpired(e))&&this.rotate({reason:t})}rotate(e){if(this.rotating)return;this.rotating=!0;const t=(e,t)=>{try{this.logger.log(`[session-lifecycle] session rotation: ${e}`),t()}catch(t){h(t),this.logger.log(`[session-lifecycle] failed to ${e} during session rotation:`,t)}};try{const n=this.session.getSessionId();let r;t("capture host rotation context",(()=>{r=this.hooks.captureRotationContext?.()}));const i=this.session.hasUserActivity();this.logger.log("[session-lifecycle] session rotation start",{reason:e.reason,previousId:n,wasConfirmed:i}),t("host beforeRotate",(()=>this.hooks.beforeRotate?.())),t(i?"flush events":"discard unconfirmed events",(()=>i?this.pool.flush():this.pool.discardBuffer())),t("rotate session ids",(()=>{const e=this.idGenerator.generateId();this.session.setSessionId(e),this.session.setSessionStartTime(b(Date.now())),this.session.clearSamplingDecision(),this.logger.log("[session-lifecycle] session id rotated",{from:n,to:e})})),t("host afterRotate",(()=>this.hooks.afterRotate?.(r)))}finally{this.rotating=!1,this.logger.log("[session-lifecycle] session rotation complete",{reason:e.reason})}}},_e=new Set(["dom.event"]),ze=new Set(["replay"]),Pe=class{constructor(e){this.logger=l.getInstance(),this.idGenerator=new d,this.logEventsListener=null,this.domEventsListener=null,this.errorsEventsListener=null,this.networkEventsListener=null,this.navigationListener=null,this.performanceListener=null,this.pageLoadListener=null,this.sessionReplayListener=null,this.replayDesired=!1,this.presenceMonitor=null,this.configManager=e.config,this.session=e.session,this.eventsPool=e.eventsPool,this.enricher=e.enricher,this.manualEvents=new O({config:this.configManager,pool:this.eventsPool,enricher:this.enricher}),this.lifecycle=new He({session:this.session,pool:this.eventsPool,idGenerator:this.idGenerator,activityEventTypes:_e,ignoredEventTypes:ze,hooks:{captureRotationContext:()=>this.isReplayRecording(),beforeRotate:()=>this.stopReplayListener(),afterRotate:e=>this.syncReplayState(e),onReconcile:e=>this.syncReplayState(e),onPresenceStamped:e=>this.presenceMonitor?.notePresence(e)}})}listenerDeps(){return{config:this.configManager,eventsPool:this.eventsPool,enricher:this.enricher}}instrument(){this.logger.log("[instrumentation-manager.instrument] called"),this.lifecycle.install(),this.presenceMonitor?.destroy(),this.presenceMonitor=new Ce({onPresence:e=>this.lifecycle.reconcile(e,!0),onIdle:()=>this.pauseReplayOnIdle()}),this.presenceMonitor.initialize();const e=this.configManager.getConfig(),t=e?.options?.enabledEvents,n=!t||0===t.length,r=[];(n||t?.includes("pageload"))&&(this.pageLoadListener=new Ee(this.listenerDeps()),this.pageLoadListener.initialize(),r.push("pageload")),(n||t?.includes("dom"))&&(this.domEventsListener=new le(this.listenerDeps()),this.domEventsListener.initialize(),r.push("dom")),(n||t?.includes("logs"))&&(this.logEventsListener=new he(this.listenerDeps()),this.logEventsListener.initialize(),r.push("logs")),(n||t?.includes("exceptions"))&&(this.errorsEventsListener=new we(this.listenerDeps()),this.errorsEventsListener.initialize(),r.push("exceptions")),(n||t?.includes("network"))&&(this.networkEventsListener=new be(this.listenerDeps()),this.networkEventsListener.initialize(),r.push("network")),(n||t?.includes("performance"))&&(this.performanceListener=new ke(this.listenerDeps()),this.performanceListener.initialize(),r.push("performance")),this.navigationListener=new Se(this.listenerDeps(),{isEnabled:n||t?.includes("navigation")}),this.navigationListener.initialize(),r.push("navigation"),this.logger.log("[instrumentation-manager.instrument] initialized listeners based on config:",r)}sendCustomEvent(e){this.manualEvents.sendCustomEvent(e)}emitLog(e,t,n){this.logEventsListener&&this.manualEvents.emitLog(e,t,n)}captureException(e,t){try{this.logger.log("[instrumentation-manager.captureException] called",e),this.errorsEventsListener?.handleEvent(e,{handled:!0,metadata:t})}catch(e){h(e)}}isNavigationTrackingEnabled(){const e=this.configManager.getConfig();return e?.options?.enabledEvents?.includes("navigation")||0===e?.options?.enabledEvents?.length}startNavigation(e){this.logger.log("[instrumentation-manager.startNavigation] called",e),this.isNavigationTrackingEnabled()?this.logger.log("[instrumentation-manager.startNavigation] startNavigation called while navigation tracking is enabled. Ignoring. If you wish to track navigations manually, please disable navigation tracking via the enabledEvents array in the config."):this.navigationListener?.startNavigation(e)}endNavigation(e){this.logger.log("[instrumentation-manager.endNavigation] called",e),this.isNavigationTrackingEnabled()?this.logger.log("[instrumentation-manager.endNavigation] endNavigation called while navigation tracking is enabled. Ignoring. If you wish to track navigations manually, please disable navigation tracking via the enabledEvents array in the config."):this.navigationListener?.endNavigation(e)}isReplayRecording(){return null!==this.sessionReplayListener}restartReplayForConfigChange(){this.isReplayRecording()&&(this.logger.log("[instrumentation-manager] restarting replay to apply config change"),this.stopReplayListener(),this.startReplayListener())}startReplayRecording(){this.replayDesired=!0,this.isReplayRecording()?this.logger.log("[instrumentation-manager] replay recording already started"):(this.lifecycle.rotateIfStale(Date.now(),"replay start into stale session"),this.startReplayListener(),this.presenceMonitor?.resetIdleTimer())}stopReplayRecording(){this.replayDesired=!1,this.stopReplayListener()}flushPendingReplay(){this.sessionReplayListener?.flushPendingSync()}syncReplayState(e){this.replayDesired&&e&&!this.isReplayRecording()&&(this.logger.log("[instrumentation-manager] user present and replay desired — starting replay"),this.startReplayListener())}pauseReplayOnIdle(){this.isReplayRecording()&&(this.logger.log("[instrumentation-manager] pausing replay: user idle window elapsed"),this.stopReplayListener())}startReplayListener(){if(this.sessionReplayListener)this.logger.log("[instrumentation-manager] replay recording already started");else try{const e=new Re({...this.listenerDeps(),session:this.session});e.initialize(),this.sessionReplayListener=e,this.logger.log("[instrumentation-manager] started replay recording")}catch(e){h(e),this.logger.log("[instrumentation-manager] failed to start replay recording:",e)}}stopReplayListener(){this.sessionReplayListener?(this.sessionReplayListener.stopRecording(),this.sessionReplayListener=null):this.logger.log("[instrumentation-manager] cannot stop replay recording: replay listener not initialized")}uninstrument(){this.lifecycle.uninstall((()=>{this.presenceMonitor?.destroy(),this.presenceMonitor=null,this.domEventsListener?.destroy(),this.logEventsListener?.destroy(),this.errorsEventsListener?.destroy(),this.networkEventsListener?.destroy(),this.navigationListener?.destroy(),this.performanceListener?.destroy(),this.pageLoadListener?.destroy(),this.sessionReplayListener?.destroy(),this.sessionReplayListener=null,this.replayDesired=!1}))}};function De(e){try{console.warn(e)}catch{}}function Fe(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}var Oe=["privacy","tracing","transport","replay"],Be={tracing:"origin",privacy:"replay"};function je(e,t){if(!Fe(e))return e;const n={...e};return t&&Fe(n[t])&&(n[t]={...n[t]}),n}function Ke(e,t,n){const r={...e,...t};if(n){const i=e?.[n],s=t[n];Fe(i)&&Fe(s)?r[n]={...i,...s}:Object.hasOwn(t,n)&&!Fe(s)?r[n]=Fe(i)?{...i}:i:Fe(r[n])&&(r[n]={...r[n]})}return r}function Ue(e,t){const n={...e,...t},r=t,i=e;for(const e of Oe){if(!Object.hasOwn(r,e)){Fe(i[e])&&(n[e]=je(i[e],Be[e]));continue}const t=r[e];Fe(t)?n[e]=Ke(i[e],t,Be[e]):n[e]=je(i[e],Be[e])}return n}var Xe=class e{constructor(t){this.dsn=t?.dsn||"",this.appId=t?.appId||"",this.cluster=t?.cluster||"",this.apiKey=t?.apiKey||"",this.environment=t?.environment||"",this.namespace=t?.namespace||"",this.releaseId=t?.releaseId,this.user=t?.user||null,this.providedOptions={...t?.options||{}},this.options=Ue(Ae,t?.options||{}),this.options.sessionMaxDuration=e.normalizeSessionMaxDuration(t?.options?.sessionMaxDuration),e.warnRemovedOptions(t?.options),e.stripRemovedOptions(this.providedOptions),e.stripRemovedOptions(this.options)}static stripRemovedOptions(t){const n=t;for(const t of e.REMOVED_OPTION_KEYS)Object.hasOwn(n,t)&&delete n[t]}static warnRemovedOptions(t){if(!t||"object"!=typeof t)return;const n=t;for(const t of e.REMOVED_OPTION_KEYS)Object.hasOwn(n,t)&&De(`[groundcover] \`options.${t}\` was removed in 1.0.0 and is ignored. Configure masking via \`options.privacy\` instead — see the migration guide: https://github.com/groundcover-com/rum/tree/main/packages/browser#migrating-to-100`)}static normalizeSessionMaxDuration(e){return void 0===e?Le:"number"!=typeof e||!Number.isFinite(e)||e<6e4||e>Me?(De("[groundcover] sessionMaxDuration must be a finite number between 60000 ms (1 minute) and 28800000 ms (8 hours); falling back to the 4-hour default"),Le):e}getEndpoint(){return this.dsn?.startsWith("http")?this.dsn:`https://${this.dsn}`}updateConfig(t){t.options&&(e.warnRemovedOptions(t.options),this.providedOptions=Ue(this.providedOptions||{},t.options),this.options=Ue(this.options,t.options),void 0!==t.options.sessionMaxDuration&&(this.options.sessionMaxDuration=e.normalizeSessionMaxDuration(t.options.sessionMaxDuration)),e.stripRemovedOptions(this.providedOptions),e.stripRemovedOptions(this.options)),void 0!==t.user&&(this.user=null===t.user?null:{...this.user,...t.user}),t.appId&&(this.appId=t.appId),t.dsn&&(this.dsn=t.dsn),t.apiKey&&(this.apiKey=t.apiKey),t.cluster&&(this.cluster=t.cluster),t.environment&&(this.environment=t.environment),t.namespace&&(this.namespace=t.namespace),t.releaseId&&(this.releaseId=t.releaseId)}};Xe.REMOVED_OPTION_KEYS=["enableMasking","maskFields"];var Ye=Xe,$e=class{constructor(){this.config=null,this.logger=l.getInstance(),this.privacyCache=null}initialize(e){this.config||(this.config=new Ye(e))}getConfig(){return this.config?this.config:(this.logger.log("[config-manager] configuration not initialized"),null)}getPrivacy(){return this.privacyCache||(this.privacyCache=function(e){const t=e?.privacy,n=function(e){return"mask-sensitive"===e||"mask-all"===e||"allow"===e?e:void 0}(t?.level)??"mask-sensitive",r="allow"===n,i=e=>!r&&(e??!0),s=i(t?.maskNetworkBodies),o=i(t?.maskNetworkQueryParams),a=i(t?.maskLogs),l=i(t?.maskErrors);return{level:n,maskNetworkBodies:s,maskNetworkQueryParams:o,maskLogs:a,maskErrors:l,shouldMaskNetworkBodies:!r&&s,shouldMaskNetworkQueryParams:!r&&o,shouldMaskLogs:!r&&a,shouldMaskErrors:!r&&l,sensitiveKeys:j(t?.sensitiveKeys),redact:"function"==typeof t?.redact?t.redact:void 0}}(this.config?.providedOptions)),this.privacyCache}updateConfig(e){this.logger.log("[config-manager] updateConfig called"),this.config?e&&(this.logger.log("[config-manager] updating options"),this.config.updateConfig(e),this.privacyCache=null):this.logger.log("[config-manager] configuration not initialized")}},We=Ae.transport?.batchSize??10,Qe=Ae.transport?.batchTimeout??1e4;var Ge=class{constructor(e){this.events=[],this.timeoutId=null,this.logger=l.getInstance(),this.initialized=!1,this.noClusterWarned=!1,this.onBeforeEnqueue=null,this.flushGate=null,this.config=e.config,this.session=e.session,this.transporter=e.transporter,this.getDeviceAttributes=e.getDeviceAttributes,this.eventsToSkipFlush=e.eventsToSkipFlush}initialize(){try{if(this.initialized)return;this.scheduleFlush(),this.initialized=!0}catch(e){h(e)}}destroy(){try{null!==this.timeoutId&&(v.clearTimeout(this.timeoutId),this.timeoutId=null),this.events=[],this.initialized=!1}catch(e){h(e)}}setBeforeEnqueueHook(e){this.onBeforeEnqueue=e}setFlushGate(e){this.flushGate=e}discardBuffer(){this.events=[]}isFlushAllowed(){if(null===this.flushGate)return!0;try{return this.flushGate()}catch(e){return h(e),!0}}addEvent(e){var t;if(e&&this.initialized)try{const n=this.config.getConfig()?.options?.beforeSend,r=this.config.getConfig()?.options?.enrichEvent;let i=e;if(n&&!n(i))return;if(this.onBeforeEnqueue)try{this.onBeforeEnqueue(i)}catch(e){h(e)}if(r&&(i=r(i)),!this.isFlushAllowed()&&this.events.length>=500)return;this.events.push(i);const s=(t=this.config.getConfig()?.options?.transport?.batchSize,"number"==typeof t&&Number.isFinite(t)&&t>=0?t:We);this.events.length>=s&&!this.eventsToSkipFlush.includes(i.type)&&this.flush()}catch(e){h(e)}}flush({lifecycle:e=!1}={}){try{if(!this.initialized)return;if(!this.isFlushAllowed())return void this.scheduleFlush();if(!this.events?.length)return void this.scheduleFlush();if(!this.config.getConfig()?.cluster)return this.noClusterWarned||(this.noClusterWarned=!0,this.logger.log("[events-pool.flush] skipping flush: no cluster")),void this.scheduleFlush();this.noClusterWarned=!1;const t={sessionAttributes:this.getSessionAttributes(),events:this.events};e?this.transporter.send(t,{lifecycle:!0}):this.transporter.send(t),this.events=[],this.scheduleFlush()}catch(e){h(e)}}async flushSync(){try{if(!this.events?.length||!this.initialized)return;if(!this.isFlushAllowed())return void this.discardBuffer();if(!this.config.getConfig()?.cluster)return void this.logger.log("[events-pool.flush] skipping flush: no cluster");await this.transporter.send({sessionAttributes:this.getSessionAttributes(),events:this.events}),this.events=[]}catch(e){h(e)}}scheduleFlush(){try{null!==this.timeoutId&&(v.clearTimeout(this.timeoutId),this.timeoutId=null);const t=(e=this.config.getConfig()?.options?.transport?.batchTimeout,"number"==typeof e&&Number.isFinite(e)&&e>0?e:Qe);this.timeoutId=v.setTimeout((()=>{this.timeoutId=null,this.flush()}),t)}catch(e){h(e)}var e}getSessionAttributes(){const e=this.config.getConfig();return{...this.getDeviceAttributes(),cluster:e?.cluster||"",env:e?.environment||"",namespace:e?.namespace||"",releaseId:e?.releaseId||"",session_id:this.session.getSessionId(),session_start_time:this.session.getSessionStartTime(),user:e?.user||{},"service.name":e?.appId}}},Ve=class{constructor(e){this.logger=l.getInstance(),this.config=e.config,this.enrichAttributes=e.enrichAttributes??null,this.idGenerator=e.idGenerator??new d}getPlatformAttributes(){if(!this.enrichAttributes)return{};try{return this.enrichAttributes()??{}}catch(e){return this.logger.log("[event-enricher] platform attribute contributor threw; continuing without it",e),{}}}shouldSample(){const e=this.config.getConfig()?.options?.eventSampleRate;return!(void 0!==e&&!Number.isNaN(e))||Math.random()<=e}formatEventObject(e,t="",n=new WeakSet,r=0){try{return r>=10?{[t||"depth_limit"]:"[Depth Limit]"}:S(e)?{[t||"dom_node"]:`[${e?.constructor?.name||"DomNode"}]`}:n.has(e)?{[t||"circular_reference"]:"[Circular]"}:(n.add(e),Object.entries(e).reduce(((e,[i,s])=>{const o=t?`${t}.${i}`:i;return"object"==typeof s&&null!==s?Array.isArray(s)?e[o]=s.map(((e,t)=>"object"==typeof e&&null!==e?this.formatEventObject(e,`${o}[${t}]`,n,r+1):e)):Object.assign(e,this.formatEventObject(s,o,n,r+1)):e[o]=s,e}),{}))}catch(e){return this.logger.log("[event-enricher.formatEventObject] Error formatting event object",e),{[t||"format_error"]:"[Error formatting object]"}}finally{n.delete(e)}}enrich(e){const t=b(Date.now()),n=this.idGenerator.generateId(),r=e.spanId||this.idGenerator.generateSpanId(),i=e.traceId||this.idGenerator.generateTraceId(),s=e.parentSpanId||"",o=this.formatEventObject(e.attributes||{}),a=this.getPlatformAttributes(),l={type:e.type,id:n,spanId:r,parentSpanId:s,traceId:i,attributes:{...o,...a}};return e.span_name&&(l.span_name=e.span_name),"network"===e.type?(l.start_timestamp=e.timestamp||t,l.end_timestamp=e?.end_timestamp):l.timestamp=t,l}};function Je(e,t){if(!t)return{data:(new TextEncoder).encode(e),isCompressed:!1};try{const t=i.strToU8(e);return{data:i.gzipSync(t),isCompressed:!0}}catch(t){return{data:(new TextEncoder).encode(e),isCompressed:!1}}}var Ze=class{constructor(e){this.logger=l.getInstance(),this.config=e.config,this.sendBatch=e.sendBatch,this.encodeAsync=e.encodeAsync??null}compressAsync(e,t){if(!this.encodeAsync)return Promise.resolve(Je(e,t));try{return this.encodeAsync(e,t).catch((()=>Je(e,t)))}catch{return Promise.resolve(Je(e,t))}}async send(e,{lifecycle:t=!1}={}){const n=this.config.getConfig();if(n)try{n?.options?.debug&&this.logger.log("Sending batch:",e,{groundcoverIgnore:!0});const r=n.apiKey,i=this.buildEndpoint();if(!r)return void this.logger.log("No API key found");const s=JSON.stringify(e),o=!!n?.options?.transport?.compression,{data:a,isCompressed:l}=t?Je(s,o):await this.compressAsync(s,o),c={"Content-Type":"application/json",apikey:r,"Content-Encoding":l?"gzip":""};this.sendBatch(i,{method:"POST",headers:c,body:a}).catch((e=>{this.logger.log("Network error while sending batch:",e,{groundcoverIgnore:!0})}))}catch(e){n?.options?.debug&&this.logger.log("Failed to send batch:",e,{groundcoverIgnore:!0})}}buildEndpoint(){const e=this.config.getConfig();return e?`${e.getEndpoint()}/json/rum`:""}},et=class{constructor(e){this.storage=e}getItem(e){try{return this.storage?.getItem(e)??null}catch(e){return h(e),null}}setItem(e,t){try{this.storage?.setItem(e,t)}catch(e){h(e)}}removeItem(e){try{this.storage?.removeItem(e)}catch(e){h(e)}}getNumericItem(e,t=0){const n=this.getItem(e);if(null===n)return t;const r=Number(n);return Number.isFinite(r)?r:t}},tt=class{constructor(e){this.sessionId=null,this.sessionStartTime=null,this.lastActivityMs=null,this.lastPersistedActivityMs=0,this.storage=e.storage,this.getMaxDurationMs=e.getMaxDurationMs??null}getSessionId(){if(this.sessionId)return this.sessionId;return this.storage.getItem("gcId")||""}setSessionId(e){this.sessionId=e,this.storage.setItem("gcId",e)}getSessionStartTime(){return this.sessionStartTime?this.sessionStartTime:this.storage.getNumericItem("gcStartTime",0)}setSessionStartTime(e){this.sessionStartTime=e,this.storage.setItem("gcStartTime",String(e)),this.lastActivityMs=null,this.lastPersistedActivityMs=0,this.storage.removeItem("gcLastActivity")}getLastActivityMs(){return null!==this.lastActivityMs?this.lastActivityMs:this.storage.getNumericItem("gcLastActivity",0)}setLastActivityMs(e){this.lastActivityMs=e,e-this.lastPersistedActivityMs>=6e4&&this.persistLastActivity()}persistLastActivity(){null!==this.lastActivityMs&&(this.lastPersistedActivityMs=this.lastActivityMs,this.storage.setItem("gcLastActivity",String(this.lastActivityMs)))}isSessionInactive(e=Date.now()){const t=this.getLastActivityMs(),n=t>0?t:w(this.getSessionStartTime());return n>0&&e-n>=xe}hasUserActivity(){return this.getLastActivityMs()>0}clearSamplingDecision(){this.storage.removeItem(qe)}clearSessionState(){this.sessionId=null,this.sessionStartTime=null,this.lastActivityMs=null,this.lastPersistedActivityMs=0,this.storage.removeItem("gcId"),this.storage.removeItem("gcStartTime"),this.storage.removeItem("gcLastActivity"),this.clearSamplingDecision()}getSessionMaxDuration(){return this.getMaxDurationMs?.()??Le}getSessionElapsedMs(e=Date.now()){const t=this.getSessionStartTime();return t?e-w(t):0}isSessionExpired(e=Date.now()){return this.getSessionElapsedMs(e)>=this.getSessionMaxDuration()}};function nt(){const e=navigator.userAgent;let t="unknown",n="unknown";const r=navigator.platform||"unknown",i=/Mobile|Android|iPhone|iPad|iPod/i.test(e);return/Edg/.test(e)?(t="Edge",n=e.match(/Edg\/([\d.]+)/)?.[1]||n):/Chrome/.test(e)&&!/Chromium/.test(e)?(t="Chrome",n=e.match(/Chrome\/([\d.]+)/)?.[1]||n):/Firefox/.test(e)?(t="Firefox",n=e.match(/Firefox\/([\d.]+)/)?.[1]||n):/Safari/.test(e)&&!/Chrome/.test(e)?(t="Safari",n=e.match(/Version\/([\d.]+)/)?.[1]||n):/Trident/.test(e)?(t="Internet Explorer",n=/rv:([^)]+)\)/i.test(e)?e.match(/rv:([^)]+)\)/i)?.[1]||n:e.match(/MSIE ([^;]+)/)?.[1]||n):/OPR/.test(e)&&(t="Opera",n=e.match(/OPR\/([\d.]+)/)?.[1]||n),{userAgent:e,browser:{name:t,version:n,platform:r,language:navigator.language,mobile:i}}}var rt,it=["navigation","dom.event"],st=class{constructor(e){this.core=null,this.hideWired=!1,this.hideHandler=()=>{try{if("undefined"==typeof document||"hidden"!==document.visibilityState)return;this.core?.session.persistLastActivity(),this.core?.pool.flush({lifecycle:!0})}catch(e){h(e)}},this.logger=l.initialize({debug:e.options?.debug||!1,prefix:"[groundcover]"}),this.logger.log("[session-manager] initialize called"),this.storage=new et(function(){try{return void 0!==globalThis.sessionStorage?globalThis.sessionStorage:null}catch{return null}}()),this.idGenerator=new d;const t=new $e;t.initialize(e);const n=new tt({storage:this.storage,getMaxDurationMs:()=>t.getConfig()?.options?.sessionMaxDuration});!function({session:e,idGenerator:t,providedSessionId:n}){const r=l.getInstance();try{const i=e.getSessionId();n&&n!==i?(e.setSessionId(n),e.setSessionStartTime(b(Date.now())),e.clearSamplingDecision(),r.log("[session-bootstrap] using provided sessionId:",n)):n?(e.setSessionId(n),r.log("[session-bootstrap] continuing provided sessionId:",n)):i||e.setSessionId(t.generateId());const s=6e4,o=Date.now(),a=w(e.getSessionStartTime());if(a>0&&o-a>=-s){if(e.isSessionExpired(o)||e.isSessionInactive(o)){const n=e.isSessionExpired(o)?"persisted session past cap":"inactivity gap across reload",i=e.getSessionId(),s=t.generateId();e.setSessionId(s),e.setSessionStartTime(b(o)),e.clearSamplingDecision(),r.log(`[session-bootstrap] init-time rotation: ${n}`,{from:i,to:s})}}else e.setSessionStartTime(b(o))}catch(e){r.log("[session-bootstrap] session bootstrap failed:",e)}}({session:n,idGenerator:this.idGenerator,providedSessionId:e.sessionId});if(!function({storage:e,sessionSampleRate:t}){const n=l.getInstance();if(void 0===t||!Number.isFinite(t)||1===t)return!0;const r=t;try{const t=e.getItem(qe);if(t){const e="1"===t;return n.log("[session-bootstrap] using stored sampling decision:",e),e}const i=Math.random()<r;return e.setItem(qe,i?"1":"0"),n.log("[session-bootstrap] stored new sampling decision:",i),i}catch(e){n.log("[session-bootstrap] storage access failed:",e);const t=Math.random()<r;return n.log("[session-bootstrap] using fallback sampling decision:",t),t}}({storage:this.storage,sessionSampleRate:e.options?.sessionSampleRate}))return void this.logger.log("[session-manager] session is not sampled");const r=new Ze({config:t,sendBatch:(e,t)=>fetch(e,t),encodeAsync:(e,t)=>Ie.withFallback((n=>n.encodeBatch(e,t)),(()=>Je(e,t)),"transporter")}),i=new Ge({config:t,session:n,transporter:r,getDeviceAttributes:nt,eventsToSkipFlush:it}),s=function(e){return()=>{let t="";try{t=v?.document?.title||""}catch(e){h(e)}try{const n=v?.location;if(!n)return{path:"",url:"",title:t};const r=n.hash&&!n.hash.match(/^#[a-z0-9-]+$/i)&&n.hash.startsWith("#/"),i=r?n.hash:n.pathname,s=e.getPrivacy(),o=s.shouldMaskNetworkQueryParams,a={sensitiveKeys:s.sensitiveKeys,redact:s.redact,kind:"query"};return{path:o&&r?_(i,a):i,url:o?_(n.href,a):n.href,title:t}}catch(e){return h(e),{path:"",url:"",title:t}}}}(t),o=new Ve({config:t,enrichAttributes:()=>({location:s()}),idGenerator:this.idGenerator}),a=new Pe({config:t,session:n,eventsPool:i,enricher:o});try{i.initialize(),Ie.getInstance(),this.wireHideHandler(),a.instrument(),this.core={config:t,session:n,pool:i,instrumentation:a}}catch(e){this.logger.log("[session-manager] initialization failed — tearing down partial startup:",e);try{a.uninstrument()}catch(e){h(e)}throw i.destroy(),this.unwireHideHandler(),this.core=null,e}}wireHideHandler(){if(!this.hideWired&&"undefined"!=typeof document){this.hideWired=!0;try{document.addEventListener("visibilitychange",this.hideHandler)}catch(e){h(e)}}}unwireHideHandler(){if(this.hideWired&&"undefined"!=typeof document){this.hideWired=!1;try{document.removeEventListener("visibilitychange",this.hideHandler)}catch(e){h(e)}}}identifyUser(e){this.logger.log("[session-manager] identifyUser called"),this.core?this.core.config.updateConfig({user:e}):this.logger.log("[session-manager] cannot identify user: SDK not initialized")}updateConfig(e){if(!this.core)return void this.logger.log("[session-manager] cannot update config: SDK not initialized");this.core.config.updateConfig(e);const t=e.options,n=!!t&&"privacy"in t,r=!!t&&"object"==typeof t.replay&&null!==t.replay&&"blockedSelectors"in t.replay;(n||r)&&this.core.instrumentation.restartReplayForConfigChange()}sendCustomEvent(e){this.core?this.core.instrumentation.sendCustomEvent(e):this.logger.log("[session-manager] cannot send custom event: SDK not initialized")}startNavigation(e){this.core?this.core.instrumentation.startNavigation(e):this.logger.log("[session-manager] cannot start navigation: SDK not initialized")}endNavigation(e){this.core?this.core.instrumentation.endNavigation(e):this.logger.log("[session-manager] cannot end navigation: SDK not initialized")}captureException(e,t){this.core?this.core.instrumentation.captureException(e,t):this.logger.log("[session-manager] Cannot capture exception: SDK not initialized")}emitLog(e,t,n){this.core?this.core.instrumentation.emitLog(e,t,n):this.logger.log("[session-manager] Cannot emit log: SDK not initialized")}getSessionId(){return this.core?this.core.session.getSessionId():(this.logger.log("[session-manager] cannot get session ID: SDK not initialized"),"")}async setSessionId(e){if(this.logger.log("[session-manager] setSessionId called"),this.core)try{this.core.instrumentation.flushPendingReplay(),await this.core.pool.flushSync();const t=e||this.idGenerator.generateId();this.core.session.setSessionId(t),this.core.session.setSessionStartTime(b(Date.now())),this.logger.log("[session-manager] session ID set successfully:",t)}catch(e){this.logger.log("[session-manager] failed to set session ID:",e)}else this.logger.log("[session-manager] cannot set session ID: SDK not initialized")}startReplayRecording(){this.core?this.core.instrumentation.startReplayRecording():this.logger.log("[session-manager] cannot start replay recording: SDK not initialized")}stopReplayRecording(){this.core?this.core.instrumentation.stopReplayRecording():this.logger.log("[session-manager] cannot stop replay recording: SDK not initialized")}handoffForReinit(){const e=this.core;if(!e)return;const t=e.session.hasUserActivity();e.instrumentation.uninstrument(),t&&e.pool.flush({lifecycle:!0}),e.pool.destroy(),this.unwireHideHandler(),this.core=null}destroy(){const e=this.core;e&&(e.instrumentation.uninstrument(),e.pool.destroy(),this.unwireHideHandler(),Ie.getInstance().terminate(),e.session.clearSessionState(),this.core=null)}},ot=new class{constructor(e){this.manager=e}emit(e,t,n){this.manager&&this.manager.emitLog(t,e,n)}log(e,t){this.emit("log",e,t)}info(e,t){this.emit("info",e,t)}warn(e,t){this.emit("warn",e,t)}error(e,t){this.emit("error",e,t)}debug(e,t){this.emit("debug",e,t)}trace(e,t){this.emit("trace",e,t)}};var at={init:function(e){try{rt?.handoffForReinit(),rt=new st({cluster:e?.cluster||"",environment:e?.environment||"",namespace:e?.namespace,releaseId:e?.releaseId,dsn:e?.dsn||"",appId:e?.appId||"",user:e?.user,apiKey:e?.apiKey||"",options:e?.options,sessionId:e?.sessionId}),ot.manager=rt}catch(e){h(e)}},identifyUser:function(e){rt?rt.identifyUser(e):console.warn("[groundcover] identifyUser: groundcover is not initialized. please call init() first")},sendCustomEvent:function(e){rt&&rt.sendCustomEvent(e)},captureException:function(e,t){rt&&rt.captureException(e,t)},logger:ot,updateConfig:function(e){if(rt)try{rt.updateConfig(e)}catch(e){h(e)}},startNavigation:function(e){rt?rt.startNavigation(e):console.warn("[groundcover] startNavigation: groundcover is not initialized. please call init() first")},endNavigation:function(e){rt?rt.endNavigation(e):console.warn("[groundcover] endNavigation: groundcover is not initialized. please call init() first")},getSessionId:function(){return rt?rt.getSessionId():(console.warn("[groundcover] getSessionId: groundcover is not initialized. please call init() first"),"")},setSessionId:async function(e){if(rt)try{await rt.setSessionId(e)}catch(e){console.error("[groundcover] setSessionId: failed to set session ID:",e)}else console.warn("[groundcover] setSessionId: groundcover is not initialized. please call init() first")},startReplayRecording:function(){rt?rt.startReplayRecording():console.warn("[groundcover] startReplayRecording: groundcover is not initialized. please call init() first")},stopReplayRecording:function(){rt?rt.stopReplayRecording():console.warn("[groundcover] stopReplayRecording: groundcover is not initialized. please call init() first")}};if("undefined"!=typeof window&&!window.groundcover)try{window.groundcover=at}catch(e){console.warn("[groundcover] Failed to expose groundcover on window:",e)}var lt=at;module.exports=lt;
1
+ "use strict";var e=require("error-stack-parser"),t=require("web-vitals"),n=require("rrweb"),r=require("@rrweb/packer"),i=require("fflate");function s(e){return e&&e.__esModule?e:{default:e}}var o=s(e),a=console.log.bind(console),l=class e{constructor(){this.isDebugEnabled=!1,this.prefix=""}static initialize(t){return e.instance||(e.instance=new e),t&&(e.instance.isDebugEnabled=t.debug??!1,e.instance.prefix=t.prefix??""),e.instance}static getInstance(t){return e?.instance||e.initialize(t)}formatMessage(e){return`[${(new Date).toISOString()}] ${this.prefix} ${e}`}log(e,...t){this.isDebugEnabled&&a(this.formatMessage(e),...t)}updateConfig(e){this.isDebugEnabled=e.debug??this.isDebugEnabled,this.prefix=e.prefix??this.prefix}},c=l.getInstance();function h(e){c.log("[error-handler.handleError] called",e,{groundcoverIgnore:!0})}var d=class{constructor(){this.generateTraceId=function(){for(let e=0;e<16;e++)u[e]=Math.floor(16*Math.random())+48,u[e]>=58&&(u[e]+=39);return p+String.fromCharCode.apply(null,u.slice(0,16))},this.generateSpanId=g(8),this.generateId=g(16)}},u=Array(32);function g(e){return function(){for(let t=0;t<2*e;t++)u[t]=Math.floor(16*Math.random())+48,u[t]>=58&&(u[t]+=39);return String.fromCharCode.apply(null,u.slice(0,2*e))}}var p="0000000000000000";function f({text:e,maxLength:t=1e4,ellipsis:n=""}){if(null==e)return"";const r="string"==typeof e?e:String(e);return r.length<=t?r:r.substring(0,t)+n}function m(e){return(e||"").replace(/\s+/g," ").trim()}var v=globalThis,y=1e6;function b(e){return e*y}function w(e){return e/y}function S(e){if(null==e||"object"!=typeof e)return!1;try{return"number"==typeof e.nodeType&&"string"==typeof e.nodeName&&"ownerDocument"in e}catch{return!1}}var E="[REDACTED]",k=["authorization","cookie","set-cookie"],T=/(token|key|secret|passwd|password|auth|bearer|credential)/i,I=/(token|secret|passwd|password|api[_-]?key|access[_-]?key|write[_-]?key|auth|bearer|credential|cvv|ssn|credit[_-]?card|card[_-]?number)/i,R=new Set(["code","state","session_state","id_token","access_token","refresh_token","token"]),L=1e5;function M(e,t){if(!e)return!1;if(I.test(e))return!0;if(t?.length){const n=e.toLowerCase();return t.some((e=>e&&n.includes(e.toLowerCase())))}return!1}function x(e,t){return R.has(e.toLowerCase())||M(e,t)}function q(e){return e.includes("-")&&T.test(e)}function A(e,t){return M(e,t)||q(e)}function N(e,t){const n=e.sensitive?E:e.value;if(!t)return n;try{const r=t(e);return void 0===r?n:r}catch(e){return h(e),n}}function C(e,t={}){if(!e)return e;try{return e.split("&").map((e=>{const n=e.indexOf("=");if(-1===n)return e;const r=e.slice(0,n),i=e.slice(n+1);let s=r;try{s=decodeURIComponent(r)}catch{}let o=i;try{o=decodeURIComponent(i)}catch{}const a=x(s,t.sensitiveKeys),l=N({key:s,value:o,path:[s],kind:t.kind??"query",sensitive:a},t.redact);return l===o?e:`${r}=${encodeURIComponent(null===l?"":String(l))}`})).join("&")}catch{return e}}function H(e,t){const n=e.indexOf("?");return-1===n?e:`${e.slice(0,n)}?${C(e.slice(n+1),t)}`}function z(e,t={}){if(!e)return e;const n={...t,kind:t.kind??"query"},r=e.indexOf("#"),i=-1===r?e:e.slice(0,r),s=-1===r?"":e.slice(r+1),o=H(function(e){return e.replace(/^([a-zA-Z][\w+.-]*:\/\/)[^/?#@]*@/,((e,t)=>`${t}${E}@`))}(i),n);return-1===r?o:`${o}#${H(s,n)}`}function _(e,t,n,r,i,s){const o=!!e&&M(e,r.sensitiveKeys);if(null!==t&&"object"==typeof t){if(o||i>8)return E;if(S(t))return E;if(s.has(t))return E;s.add(t);try{if(Array.isArray(t))return t.map((t=>_(e,t,n,r,i+1,s)));const o={};for(const[e,a]of Object.entries(t))o[e]=_(e,a,[...n,e],r,i+1,s);return o}catch(e){return h(e),E}finally{s.delete(t)}}return N({key:e,value:t,path:n,kind:r.kind??"log",sensitive:o},r.redact)}function P(e,t={}){if(!e)return e;if(e.length>L)return`${P(e.slice(0,L),t)}…`;let n=e;try{n=n.replace(/"([\w.-]{1,64})"\s*:\s*("(?:[^"\\]|\\.)*"|[^\s,}\]]+)/g,((e,n)=>A(n,t.sensitiveKeys)?`"${n}":"${E}"`:e)),n=n.replace(/([\w.-]{1,64})=([^\s&,;?]+)/g,((e,n)=>function(e,t){return x(e,t)||q(e)}(n,t.sensitiveKeys)?`${n}=${E}`:e)),n=n.replace(/([\w.-]{1,64}):[ \t]*([^\n,;&]{1,4096})/g,((e,n)=>A(n,t.sensitiveKeys)?`${n}: ${E}`:e))}catch(t){h(t),n=e}if(t.redact)try{const n=t.redact({key:"",value:e,path:[],kind:t.kind??"log",sensitive:!1});if(void 0!==n)return null===n?"":String(n)}catch(e){h(e)}return n}function D(e,t={}){try{const n=_("",e,[],t,0,new WeakSet);return null!==n&&"object"==typeof n?n:{}}catch(e){return h(e),{}}}function F(e,t,n){if(!e.shouldMaskLogs)return{message:t,attributes:n};const r={sensitiveKeys:e.sensitiveKeys,redact:e.redact,kind:"log"};return{message:P(t,r),attributes:n?D(n,r):n}}var O=class{constructor(e){this.logger=l.getInstance(),this.config=e.config,this.pool=e.pool,this.enricher=e.enricher}sendCustomEvent(e){this.logger.log("[manual-event-emitter.sendCustomEvent] called",e);try{const t=this.enricher.enrich({type:"custom",attributes:{custom_event_name:e?.event,custom_event_attributes:e?.attributes}});this.pool.addEvent(t)}catch(e){h(e)}}emitLog(e,t,n){this.logger.log("[manual-event-emitter.emitLog] called",{message:e,level:t,attributes:n});try{const r={...n||{}};delete r.message,delete r.level,delete r.location;const{message:i,attributes:s}=F(this.config.getPrivacy(),e,r),o=this.enricher.enrich({type:"log",attributes:{...s,message:f({text:i}),level:t}});this.pool.addEvent(o)}catch(e){h(e)}}},B=class{constructor(e){this.logger=l.getInstance(),this.config=e.config,this.eventsPool=e.eventsPool,this.enricher=e.enricher}};function j(e){return Array.isArray(e)?e.filter((e=>"string"==typeof e)).map((e=>e.trim())).filter((e=>e.length>0)):[]}function K(e){const t=e.getPrivacy(),n=e.getConfig()?.providedOptions?.privacy;return{...t,maskSelectors:j(n?.maskSelectors)}}var U="undefined"!=typeof Element?Object.getOwnPropertyDescriptor(Element.prototype,"tagName")?.get:void 0;function X(e,t){try{return e.getAttribute(t)||""}catch{return""}}function Y(e){try{const t=U?.call(e);return"string"==typeof t?t:""}catch{return""}}function $(e,t){try{return null!=e.closest?.(t)}catch{return!1}}function W(e,t){return!!e&&("password"===e.type||function(e){return["id","name","class","aria-label","placeholder"].map((t=>X(e,t))).filter(Boolean)}(e).some((e=>M(e,t))))}function Q(e,t){return"allow"!==t.level&&(!!e&&(!!$(e,"[data-private]")||(!(!t.maskSelectors.length||!t.maskSelectors.some((t=>$(e,t))))||("mask-all"===t.level||function(e){const t=Y(e).toLowerCase();return"input"===t||"textarea"===t||"select"===t}(e)&&W(e,t.sensitiveKeys)))))}var G={role:"",accessibleName:"",ariaLabel:"",title:"",alt:"",placeholder:"",name:"",inputType:"",href:""},V=["button","a","input","select","textarea","label","summary",'[role~="button"]','[role~="link"]','[role~="menuitem"]','[role~="menuitemcheckbox"]','[role~="menuitemradio"]','[role~="tab"]','[role~="checkbox"]','[role~="radio"]','[role~="switch"]','[role~="option"]','[role~="treeitem"]','[role~="slider"]','[role~="spinbutton"]','[role~="combobox"]','[role~="textbox"]','[role~="searchbox"]'].join(", "),J=[V,"li","option","tr","td","th",'[role~="listitem"]','[role~="row"]','[role~="gridcell"]','[role~="cell"]'].join(", ");function Z(e){return!!e&&1===e.nodeType}function ee(e){const t=Y(e).toLowerCase();return"body"===t||"html"===t}function te(e){return f({text:e,maxLength:255})}function ne(e){return f({text:e,maxLength:99,ellipsis:"…"})}function re(e){const t=m(X(e,"role"));return t?t.split(" ")[0]??t:function(e){switch(Y(e).toLowerCase()){case"a":return X(e,"href")?"link":"";case"button":return"button";case"input":switch(X(e,"type").toLowerCase()){case"checkbox":return"checkbox";case"radio":return"radio";case"submit":case"button":case"reset":return"button";case"range":return"slider";case"number":return"spinbutton";default:return"textbox"}case"textarea":return"textbox";case"select":return"combobox";case"img":return"img";case"nav":return"navigation";case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return"heading";default:return""}}(e)}function ie(e){if(!Z(e))return"";try{if(ee(e))return"";if(function(e){try{return e.querySelectorAll(J).length>=2}catch{return!1}}(e))return"";const t=m(e.textContent||"");return t?t.length>1e3?"":f({text:t,maxLength:255}):""}catch{return""}}function se(e){return X(e,"aria-labelledby").split(/\s+/).filter(Boolean).slice(0,5)}function oe(e,t){if(ee(e))return"";const n=function(e){const t=[];for(const n of se(e))try{const e=ie(document.getElementById(n));e&&t.push(e)}catch{}return m(t.join(" "))}(e);if(n)return ne(n);const r=m(X(e,"aria-label"));if(r)return ne(r);const i=m(X(e,"alt"));if(i)return ne(i);if(function(e){const t=Y(e).toLowerCase();if("button"===t)return!0;if("input"!==t)return!1;const n=X(e,"type").toLowerCase();return"submit"===n||"button"===n||"reset"===n}(e)){const t=m(X(e,"value"));if(t)return ne(t)}const s=t??ie(e);if(s)return ne(s);const o=m(X(e,"title"));if(o)return ne(o);const a=m(X(e,"placeholder"));return a?ne(a):""}function ae(e,t){if("allow"===t.level)return!1;try{return!!e.querySelector("[data-private]")||t.maskSelectors.some((t=>{try{return null!=e.querySelector(t)}catch{return!1}}))}catch{return!1}}var le=class extends B{constructor(){super(...arguments),this.eventHandlers=[],this.capturedEvents=["click","change","keydown","select","submit"],this.getShouldMaskText=e=>Q(e.target,K(this.config)),this.getKeyCode=(e,t)=>e instanceof KeyboardEvent&&e.code&&"Dead"!==e.key?t?"*":e.key:"",this.getCoordinates=e=>{if({mouseup:!0,mousedown:!0,mousemove:!0,mouseover:!0}[e.type]){const{clientX:t,clientY:n}=e||{};return{clientX:t,clientY:n}}return null}}initialize(){try{this.logger.log("[dom-events-listener.initialize] called"),this.capturedEvents?.forEach((e=>{const t=e=>{try{this.handleEvent(e)}catch(e){h(e)}};this.eventHandlers.push({type:e,handler:t}),v?.addEventListener(e,t)}))}catch(e){h(e)}}destroy(){this.eventHandlers.forEach((({type:e,handler:t})=>{global?.removeEventListener?.(e,t)})),this.eventHandlers=[]}handleEvent(e){try{if(!this.enricher.shouldSample())return;const t=this.buildEvent(e);this.queueEvent(t)}catch(e){h(e)}}buildEvent(e){const t=this.getCoordinates(e),n=e.target,r=function(e){if(!Z(e))return null;try{return e.closest(V)}catch{return null}}(n)??n,i=K(this.config),s=this.getShouldMaskText({target:n||null})||!!r&&(ae(r,i)||function(e,t){if("allow"===t.level)return!1;try{for(const n of se(e)){const e=document.getElementById(n);if(e&&ie(e)&&(Q(e,t)||ae(e,t)))return!0}}catch{}return!1}(r,i)),o=r?this.generateSelector(r,s?{priorityAttributes:["id","class","name","type"]}:{}):"",a=this.getKeyCode(e,s),l=ie(r),c=function(e,t){if(!Z(e))return{...G};try{return{role:te(re(e)),accessibleName:oe(e,t),ariaLabel:te(m(X(e,"aria-label"))),title:te(m(X(e,"title"))),alt:te(m(X(e,"alt"))),placeholder:te(m(X(e,"placeholder"))),name:te(X(e,"name")),inputType:te(X(e,"type")),href:te(X(e,"href"))}}catch{return{...G}}}(r,l),h=i.shouldMaskNetworkQueryParams?z(c.href,{sensitiveKeys:i.sensitiveKeys,redact:i.redact,kind:"query"}):c.href,d=e=>s&&e?"*":e;this.logger.log("[dom-events-listener.buildEvent] called");const u={dom_event_selector:o,dom_event_key_code:a,dom_event_type:e.type,dom_event_coordinates:t||{clientX:0,clientY:0},dom_event_target:{id:X(r,"id"),tagName:Y(r),className:X(r,"class"),text:s?"*":l,role:c.role,accessibleName:d(c.accessibleName),ariaLabel:d(c.ariaLabel),title:d(c.title),alt:d(c.alt),placeholder:d(c.placeholder),name:c.name,inputType:c.inputType,href:d(h)}};return this.enricher.enrich({type:"dom.event",attributes:u})}queueEvent(e){try{this.logger.log("[dom-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){h(e)}}generateSelector(e,t={}){if(!e||!e.nodeType||e.nodeType!==Node.ELEMENT_NODE)return"";const n=t.root||document.body||document.documentElement,r=t.maxAttempts||10,i=t.priorityAttributes||["id","class","name","aria-label","type","title","alt"];if("html"===Y(e).toLowerCase())return"html";let s="",o=0,a=e;const l=[];for(;a&&a!==n&&a!==document.documentElement&&o<r;){let e=Y(a).toLowerCase();try{const t=a.getAttribute("id");if(t&&/^[a-zA-Z][\w-]*$/.test(t))return`#${t}`;if(a.classList?.length){const t=Array.from(a.classList).filter((e=>e&&"string"==typeof e)).map((e=>`.${e}`));t.length&&(e+=t.join(""))}for(const t of i)if("id"!==t&&"class"!==t)try{const n=a.getAttribute(t);n&&(e+=`[${t}="${n.replace(/"/g,'\\"')}"]`)}catch(e){}}catch(t){e=Y(a).toLowerCase()||"*"}l.unshift(e||"*"),s=l.join(" > ");try{if(1===n.querySelectorAll(s).length)return s}catch(e){l.shift(),s=l.join(" > ")}try{a=a.parentElement}catch(e){break}o++}return s||"*"}},ce=["log","info","warn","error","debug","assert","trace"],he=class extends B{constructor(){super(...arguments),this.originalConsole=null,this.patchedConsole=null,this.isInitialized=!1}initialize(){if(!this.isInitialized)try{this.originalConsole=this.captureConsoleMethods();const e={};ce.forEach((t=>{if(!(t in console))return;const n=(...e)=>{try{this.isInitialized&&this.handleEvent(e,t)}catch(e){h(e)}finally{this.originalConsole?.[t]&&this.originalConsole[t](...e)}};console[t]=n,e[t]=n})),this.patchedConsole=e,this.isInitialized=!0}catch(e){h(e)}}destroy(){try{if(!this.isInitialized)return;ce.forEach((e=>{this.originalConsole?.[e]&&this.patchedConsole?.[e]&&console[e]===this.patchedConsole[e]&&(console[e]=this.originalConsole[e])})),this.patchedConsole=null,this.isInitialized=!1}catch(e){h(e)}}handleEvent(e,t){try{if(!this.enricher.shouldSample())return;const n=Array.isArray(e)?e:[e],r=this.formatMessage(n,t);if(!r||r?.includes("groundcoverIgnore"))return;const i=this.extractAttributes(n),s=this.buildEvent({message:r,level:t,attributes:i});this.queueEvent(s)}catch(e){h(e)}}buildEvent({message:e,level:t,attributes:n}){const{message:r,attributes:i}=F(this.config.getPrivacy(),e,n);return this.enricher.enrich({type:"log",attributes:{...i,message:f({text:r}),level:t}})}queueEvent(e){try{this.logger.log("[logs-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){h(e)}}extractAttributes(e){if(Array.isArray(e)&&0!==e.length)try{const t={};for(const n of e)null!==n&&"object"==typeof n&&"[object Object]"===Object.prototype.toString.call(n)&&Object.assign(t,n);return delete t.message,delete t.level,delete t.location,t}catch(e){return void h(e)}}formatMessage(e,t){if(!Array.isArray(e))return String(e);try{return e.map((e=>{if(void 0===e)return"undefined";if(null===e)return"null";if("object"==typeof e){if(e instanceof Error)try{return"error"===t&&e.stack||e.toString()}catch{try{const t={name:e.name,message:e.message,stack:e.stack};return JSON.stringify(t)}catch{return Object.prototype.toString.call(e)}}try{return JSON.stringify(e)}catch{return Object.prototype.toString.call(e)}}return String(e)})).join(" ")}catch(e){return h(e),"[Error formatting console message]"}}captureConsoleMethods(){const e={};try{ce.forEach((t=>{console&&"function"==typeof console[t]&&(e[t]=console[t].bind(console))}))}catch(e){h(e)}return e}};function de(e){try{if(null==e)return"";if("string"==typeof e)return e;if("undefined"!=typeof FormData&&e instanceof FormData)return"[form data]";if("undefined"!=typeof Blob&&e instanceof Blob)return"[blob data]";if(e instanceof ArrayBuffer)return"[arraybuffer data]";if(ArrayBuffer.isView(e))return"[arraybuffer data]";if("undefined"!=typeof ReadableStream&&e instanceof ReadableStream)return"[stream data]";if(9===e?.nodeType)return"[document data]";if("undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams)try{return e.toString()}catch{return"[unreadable body]"}return Array.isArray(e)||"object"==typeof e?JSON.stringify(e):String(e)}catch(e){return h(`Failed to format body: ${e}`),"[unreadable body]"}}var ue="[request body too large]",ge="[request body unavailable]",pe="[response body too large]",fe="[response body unavailable]",me="[unreadable response body]",ve="[form data]",ye="[binary data]",be=class extends B{constructor(){super(...arguments),this.maxBodyLength=5e3,this.requestBodyReadTimeoutMs=3e3,this.responseBodyReadTimeoutMs=3e3,this.idGenerator=new d,this.patched=null,this.active=!1,this.handleEvent=e=>{try{if(!this.active)return;if(this.shouldIgnoreRequest(e.url))return;if(!this.enricher.shouldSample())return;const t=this.buildEvent(e);this.queueEvent(t)}catch(e){h(e)}},this.buildEvent=e=>{let t=e.url,n=e.url;this.logger.log("[network-events-listener.buildEvent] called",{event:e});const r=this.config.getPrivacy(),i={sensitiveKeys:r.sensitiveKeys,redact:r.redact,kind:"query"};try{t=new URL(e.url).pathname}catch(s){n=new URL(e.url,globalThis.location.href).href,r.shouldMaskNetworkQueryParams&&(t=z(t,i))}r.shouldMaskNetworkQueryParams&&(n=z(n,i)),this.logger.log("[network-events-listener.buildEvent] fullUrl",{fullUrl:n});const s=this.formatHeaders(e.request.headers),o=this.formatHeaders(e.response.headers),a=e.method?.toUpperCase()||"UNKNOWN",{traceId:l,spanId:c}=this.extractTraceIds(e.request.headers),h=(e,t)=>r.shouldMaskNetworkBodies?function(e,t={}){if(!e)return e;const n=e.trim();if(n.length<=L&&(n.startsWith("{")||n.startsWith("[")))try{const e=JSON.parse(n);return JSON.stringify(_("",e,[],t,0,new WeakSet))}catch{}return e.includes("=")&&!e.includes("{")?C(e,t):P(e,t)}(e,{sensitiveKeys:r.sensitiveKeys,redact:r.redact,kind:t}):e,d=f({text:h(e.request.body,"request-body"),maxLength:this.maxBodyLength}),u=f({text:h(e.response.body,"response-body"),maxLength:this.maxBodyLength}),g={type:"HTTP",operation:{name:a},resource_name:t,status:e.status?.toString(),subType:a,url:{full:n},http:{route:t,path:t,method:e.method,status:e.status?.toString(),request:{headers:s,method:e.method},response:{headers:o,status_code:e.status?.toString()}},error:e?.error?.type?{type:e.error?.type||"Unknown error"}:void 0,gc:{request:{body:d},response:{body:u}}},p={type:"network",timestamp:e?.timestamp&&!Number.isNaN(e.timestamp)?b(e.timestamp):void 0,end_timestamp:e?.end_time&&!Number.isNaN(e.end_time)?b(e.end_time):void 0,span_name:`${e.method} ${t}`,attributes:g};return l&&(p.traceId=l),c&&(p.spanId=c),this.enricher.enrich(p)}}async readBodyStreamCapped(e,t={}){if(!e)return"";const{timeoutMs:n,overflowPlaceholder:r,timeoutPlaceholder:i}=t,s=e.getReader(),o=new TextDecoder;let a,l="",c=0,h=!1,d=!1;const u=null!=n?new Promise((e=>{a=setTimeout((()=>e({timedOut:!0})),n)})):void 0;try{for(;;){const e=u?await Promise.race([s.read(),u]):await s.read();if("timedOut"in e){d=!0;break}const{done:t,value:n}=e;if(t)break;if(c+n.byteLength>=this.maxBodyLength){const e=n.subarray(0,this.maxBodyLength-c);l+=o.decode(e,{stream:!0}),h=!0;break}c+=n.byteLength,l+=o.decode(n,{stream:!0})}return l+=o.decode(),d&&null!=i?i:h&&null!=r?r:l}finally{clearTimeout(a);try{s.cancel()?.catch((()=>{}))}catch{}}}mimeEssence(e){return(e.split(";")[0]||"").trim().toLowerCase()}isTextualContentType(e){const t=this.mimeEssence(e);return!!t&&(!!t.startsWith("text/")||("application/x-www-form-urlencoded"===t||"application/javascript"===t||"application/ecmascript"===t||"application/graphql"===t||/^application\/([\w.-]+\+)?(json|xml)$/.test(t)))}binaryLabel(e){const t=this.mimeEssence(e);return t.startsWith("image/")?"[image data]":t.startsWith("audio/")?"[audio data]":t.startsWith("video/")?"[video data]":t.startsWith("font/")||t.startsWith("application/font")||"application/vnd.ms-fontobject"===t?"[font data]":"application/pdf"===t?"[pdf data]":"application/zip"===t||"application/gzip"===t||"application/x-gzip"===t||"application/x-tar"===t||"application/x-7z-compressed"===t||"application/x-rar-compressed"===t?"[archive data]":"application/wasm"===t?"[wasm data]":t.includes("protobuf")||t.startsWith("application/grpc")?"[protobuf data]":ye}classifyByContentType(e){const t=(e||"").toLowerCase();return t.includes("multipart/form-data")?ve:this.isTextualContentType(t)?null:this.binaryLabel(t)}capBodyText(e,t){return e&&(e.length>=this.maxBodyLength||(new TextEncoder).encode(e).length>=this.maxBodyLength)?t:e}async getRequestBody(e,t){try{if(!e.body)return"";const n=this.classifyByContentType(t);return null!=n?n:await this.readBodyStreamCapped(e.clone().body,{timeoutMs:this.requestBodyReadTimeoutMs,overflowPlaceholder:ue,timeoutPlaceholder:ge})}catch{return ge}}async getResponseBody(e){if(!e.body)return"";const t=e.headers?.get?.("content-type")??"";if("text/event-stream"===this.mimeEssence(t))return me;const n=this.classifyByContentType(t);return null!=n?n:await this.readBodyStreamCapped(e.clone().body,{timeoutMs:this.responseBodyReadTimeoutMs,overflowPlaceholder:pe,timeoutPlaceholder:fe})}initialize(){this.logger.log("[network-events-listener.initialize] called");const e=globalThis.fetch,t=globalThis.XMLHttpRequest.prototype.open,n=globalThis.XMLHttpRequest.prototype.send,r=globalThis.XMLHttpRequest.prototype.setRequestHeader;try{this.patchXHR(),this.patchFetch()}catch(i){return globalThis.fetch=e,globalThis.XMLHttpRequest.prototype.open=t,globalThis.XMLHttpRequest.prototype.send=n,globalThis.XMLHttpRequest.prototype.setRequestHeader=r,this.patched=null,void h(i)}this.patched={originalFetch:e,wrappedFetch:globalThis.fetch,originalXHROpen:t,wrappedXHROpen:globalThis.XMLHttpRequest.prototype.open,originalXHRSend:n,wrappedXHRSend:globalThis.XMLHttpRequest.prototype.send,originalXHRSetRequestHeader:r,wrappedXHRSetRequestHeader:globalThis.XMLHttpRequest.prototype.setRequestHeader},this.active=!0}destroy(){this.active=!1;const e=this.patched;e&&(globalThis.fetch===e.wrappedFetch&&(globalThis.fetch=e.originalFetch),globalThis.XMLHttpRequest.prototype.open===e.wrappedXHROpen&&(globalThis.XMLHttpRequest.prototype.open=e.originalXHROpen),globalThis.XMLHttpRequest.prototype.send===e.wrappedXHRSend&&(globalThis.XMLHttpRequest.prototype.send=e.originalXHRSend),globalThis.XMLHttpRequest.prototype.setRequestHeader===e.wrappedXHRSetRequestHeader&&(globalThis.XMLHttpRequest.prototype.setRequestHeader=e.originalXHRSetRequestHeader),this.patched=null)}shouldIgnoreRequest(e){try{const t=this.config.getConfig()?.getEndpoint();if(t&&e.includes(t))return!0;if([".tsx",".jsx",".css"].some((t=>e.toLowerCase().endsWith(t))))return!0;return(this.config.getConfig()?.options?.excludedUrls||[]).some((t=>{if(t instanceof RegExp)return t.test(e);if("string"==typeof t&&(t.includes("*")||t.includes("?"))){const n=t.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(n).test(e)}return e===t}))}catch(e){return h(e),!1}}queueEvent(e){try{this.logger.log("[network-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){h(e)}}patchXHR(){const e=this,t=globalThis.XMLHttpRequest.prototype.open,n=globalThis.XMLHttpRequest.prototype.send,r=globalThis.XMLHttpRequest.prototype.setRequestHeader;let i;globalThis.XMLHttpRequest.prototype.open=function(n,r,s=!0,o,a){if(!e.active)return t.apply(this,[n,r,s,o,a]);if(i=Date.now(),e.shouldIgnoreRequest(r.toString()))return t.apply(this,[n,r,s,o,a]);const l=new URL(r.toString(),globalThis.location.href).href;return this._requestMethod=n,this._requestUrl=l,this._requestHeaders={},t.apply(this,[n,r,s,o,a])},globalThis.XMLHttpRequest.prototype.setRequestHeader=function(t,n){return e.active?(this._requestHeaders&&(this._requestHeaders[t]=n),r.apply(this,[t,n])):r.apply(this,[t,n])},globalThis.XMLHttpRequest.prototype.send=function(...t){if(!e.active)return n.apply(this,t);const r=this._requestUrl?.toString();if(!r||e.shouldIgnoreRequest(r))return n.apply(this,t);if(e.shouldAddTraceHeader(r)){const t=e.config.getConfig(),n=e.getTraceIds();t?.options?.tracing?.origin?.name&&e.addHeaderToXhrRequest({request:this,headerName:t.options.tracing.origin.name,headerValue:t.options.tracing.origin.value}),n&&(t?.options?.tracing?.traceIdHeaderName&&e.addHeaderToXhrRequest({request:this,headerName:t.options.tracing.traceIdHeaderName,headerValue:n.decimalTraceId}),t?.options?.tracing?.spanIdHeaderName&&e.addHeaderToXhrRequest({request:this,headerName:t.options.tracing.spanIdHeaderName,headerValue:n.decimalSpanId}),Boolean(t?.options?.tracing?.propagationHeaders)&&t?.options?.tracing?.propagationHeaders?.forEach((t=>{e.addHeaderToXhrRequest({request:this,headerName:t,headerValue:n.traceparent})})),t?.options?.tracing?.propagationHeaders?.length||e.addHeaderToXhrRequest({request:this,headerName:"traceparent",headerValue:n.traceparent}))}return this._requestBody=t[0]||"",this.addEventListener("load",(()=>{const t=Date.now(),n={};this.getAllResponseHeaders().split(/\r?\n/).forEach((e=>{const[t,r]=e.split(": ");t&&r&&(n[t.trim()]=r.trim())}));const r=e.capBodyText(de(this._requestBody),ue),s=""===this.responseType||"text"===this.responseType,o=s?this.responseText:this.response,a=(s?e.classifyByContentType(n["content-type"]||""):null)??e.capBodyText(de(o),pe),l={timestamp:i,end_time:t,method:this._requestMethod,url:this._requestUrl,body:r,status:this.status,request:{headers:this._requestHeaders||{},body:r},response:{headers:n,body:a}};e.handleEvent(l)})),n.apply(this,t)}}normalizeHeaders(e,t){try{const n=e?new Headers(e):new Headers;return t?(t instanceof Headers?t.forEach(((e,t)=>n.set(t,e))):Array.isArray(t)?new Headers(t).forEach(((e,t)=>n.set(t,e))):"object"==typeof t&&Object.entries(t).forEach((([e,t])=>n.set(e,t))),n):n}catch{return new Headers}}addTraceHeaders(e){const t=this.config.getConfig(),n=this.getTraceIds();if(t?.options?.tracing?.origin?.name&&this.addHeaderToFetchRequest({init:e,headerName:t.options.tracing.origin.name,headerValue:t.options.tracing.origin.value}),!n)return;t?.options?.tracing?.traceIdHeaderName&&this.addHeaderToFetchRequest({init:e,headerName:t.options.tracing.traceIdHeaderName,headerValue:n.decimalTraceId}),t?.options?.tracing?.spanIdHeaderName&&this.addHeaderToFetchRequest({init:e,headerName:t.options.tracing.spanIdHeaderName,headerValue:n.decimalSpanId});const r=t?.options?.tracing?.propagationHeaders;(r?.length?r:["traceparent"]).forEach((t=>{this.addHeaderToFetchRequest({init:e,headerName:t,headerValue:n.traceparent})}))}extractHeadersRecord(e){const t={};return e instanceof Headers&&e.forEach(((e,n)=>{t[n]=e})),t}patchFetch(){const e=globalThis.fetch;globalThis.fetch=(...t)=>{if(!this.active)return e.apply(globalThis,t);const n=Date.now();let[r,i]=t;i={...i||{}},t[1]=i;const s=r instanceof Request,o=i?.method||(s?r.method:"GET"),a=r instanceof Request?r.url:r.toString();if(this.shouldIgnoreRequest(a))return e.apply(globalThis,t);const l=this.shouldAddTraceHeader(a);i.headers=this.normalizeHeaders(s?r.headers:void 0,i.headers),l&&this.addTraceHeaders(i);const c=this.extractHeadersRecord(i.headers),h=null!=i?.body?this.capBodyText(de(i.body),ue):"",d=null!=i?.body?Promise.resolve(h):s?this.getRequestBody(r,"content-type"in c?c["content-type"]:r.headers.get("content-type")??""):Promise.resolve("");let u;return d.then((e=>{u=e})).catch((()=>{})),e.apply(globalThis,t).then((e=>{const t=Date.now(),r={};e.headers.forEach(((e,t)=>{r[t]=e}));const i={method:o,url:a,timestamp:n,body:"",status:e.status,end_time:t,request:{headers:c,body:""},response:{headers:r,body:""}},s=()=>{d.then((e=>{i.body=e,i.request.body=e,this.handleEvent(i)}))};return this.getResponseBody(e).then((e=>{i.response.body=e,s()})).catch((e=>{i.response.body=me,s(),this.logger.log("[network-events-listener.patchFetch] error",{error:e})})),e})).catch((e=>{const t=Date.now();let r="NetworkError";const i=e.message||"Unknown network error";e instanceof TypeError&&i.includes("Failed to fetch")?r="ERR_NETWORK_FAILURE":i.includes("Name not resolved")?r="ERR_NAME_NOT_RESOLVED":i.includes("Connection refused")&&(r="ERR_CONNECTION_REFUSED");const s=u??h,l={method:o,url:a,timestamp:n,body:s,status:0,end_time:t,request:{headers:c,body:s},response:{headers:{},body:""},error:{type:r}};throw this.handleEvent(l),e}))}}formatHeaders(e){const t=this.config.getPrivacy(),n="allow"===t.level,r=function(e,t={}){return e?Object.entries(e).reduce(((e,[n,r])=>{const i=n.toLowerCase(),s=N({key:n,value:r,path:[n],kind:"header",sensitive:k.includes(i)||T.test(i)||M(n,t.sensitiveKeys)},t.redact);return e[n]=null===s?"":String(s),e}),{}):e}(e,{sensitiveKeys:n?void 0:t.sensitiveKeys,redact:n?void 0:t.redact});return Object.entries(r)?.reduce(((e,[t,n])=>(e[t]=f({text:n}),e)),{})}extractTraceIds(e){const t=this.config.getConfig();let n="",r="";if(t?.options?.tracing?.traceIdHeaderName){const r=e[t.options.tracing.traceIdHeaderName];r&&"string"==typeof r&&(n=r)}if(t?.options?.tracing?.spanIdHeaderName){const n=e[t.options.tracing.spanIdHeaderName];n&&"string"==typeof n&&(r=n)}if(!n||!r){const t=this.extractTraceparentHeader(e);if(t){const e=t.split("-");4===e.length&&"00"===e[0]&&(!n&&e[1]&&32===e[1].length&&(n=e[1]),!r&&e[2]&&16===e[2].length&&(r=e[2]))}}return{traceId:n,spanId:r}}extractTraceparentHeader(e){const t=this.config.getConfig();if(t?.options?.tracing?.propagationHeaders?.length)for(const n of t.options.tracing.propagationHeaders){const t=e[n];if(t&&"string"==typeof t)return t}const n=e.traceparent;return n&&"string"==typeof n?n:""}getTraceIds(){const e=this.idGenerator.generateSpanId(),t=this.idGenerator.generateTraceId();let n,r;try{n=BigInt("0x"+t).toString(10),r=BigInt("0x"+e).toString(10)}catch(i){this.logger.log("[network-events-listener.getTraceIds] error",{error:i}),n=t,r=e}return{traceparent:`00-${t}-${e}-01`,traceId:t,spanId:e,decimalTraceId:n,decimalSpanId:r}}addHeaderToXhrRequest({request:e,headerName:t,headerValue:n}){if(this.logger.log("[network-events-listener.addHeaderToXhrRequest] called",{request:e,headerName:t,headerValue:n}),this.isValidHeaderName(t))try{e.setRequestHeader(t,n),e._requestHeaders[t]=n}catch(e){this.logger.log("[network-events-listener.addHeaderToXhrRequest] Error setting header",{error:e,headerName:t,headerValue:n})}else this.logger.log("[network-events-listener.addHeaderToXhrRequest] Invalid header name",{headerName:t})}addHeaderToFetchRequest({init:e,headerName:t,headerValue:n}){if(this.logger.log("[network-events-listener.addHeaderToFetchRequest] called",{init:e,headerName:t,headerValue:n}),this.isValidHeaderName(t))try{e.headers instanceof Headers?e.headers.set(t,n):e.headers={...e.headers,[t]:n}}catch(e){this.logger.log("[network-events-listener.addHeaderToFetchRequest] Error setting header",{error:e,headerName:t,headerValue:n})}else this.logger.log("[network-events-listener.addHeaderToFetchRequest] Invalid header name",{headerName:t})}isValidHeaderName(e){if(!e||"string"!=typeof e)return!1;return/^[a-zA-Z0-9!#$&'*+\-.^_`|~]+$/.test(e)}shouldAddTraceHeader(e){const t=this.config.getConfig();if(this.logger.log("[network-events-listener.shouldAddTraceHeader] called",{url:e,config:t}),!t?.options?.tracing?.propagationUrls?.length)return!1;const n=t.options.tracing.propagationUrls?.some((t=>{const n=t.replace(/\*/g,".*"),r=new RegExp(`^${n}$`),i=e.startsWith("/")?new URL(e,globalThis.location.href).pathname:e;return r.test(i)}));return this.logger.log("[network-events-listener.shouldAddTraceHeader] result",{url:e,result:n}),n}},we=class extends B{constructor(){super(...arguments),this.handleEvent=(e,t)=>{this.logger.log("[errors-events-listener.handleEvent] called");try{let n;if(e instanceof Error)n=e,this.enhanceError(n);else if(e instanceof ErrorEvent){if(n=e.error||new Error(e.message||"Unknown error"),/Script error\.?/.test(n.message))return;this.enhanceError(n,e)}else{if(!(e instanceof PromiseRejectionEvent))return;n=this.createUnhandledRejectionError(e)}const r=this.buildEvent(n,t);this.queueEvent(r)}catch(e){h(e)}}}initialize(){v?.addEventListener("error",this.handleEvent),v?.addEventListener("unhandledrejection",this.handleEvent)}destroy(){v?.removeEventListener("error",this.handleEvent),v?.removeEventListener("unhandledrejection",this.handleEvent)}buildEvent(e,t){const n=this.config.getPrivacy(),r=n.shouldMaskErrors,i={sensitiveKeys:n.sensitiveKeys,redact:n.redact,kind:"error"},s=e.message||"Unknown error",o=r?P(s,i):s,a=r&&t?.metadata?D(t.metadata,i):t?.metadata,l={error_type:e.name||"Error",error_message:o,error_stacktrace:this.buildStackTrace(e),error_fingerprint:`${e.name}:${f({text:o,maxLength:400})}`,error_handled:t?.handled||!1,error_metadata:a};return this.enricher.enrich({type:"exception",attributes:l})}queueEvent(e){try{this.logger.log("[errors-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){h(e)}}enhanceError(e,t){const{filename:n,lineno:r,colno:i}=t||{};n&&!e.fileName&&Object.defineProperty(e,"fileName",{value:n}),r&&!e.lineNumber&&Object.defineProperty(e,"lineNumber",{value:r}),i&&!e.columnNumber&&Object.defineProperty(e,"columnNumber",{value:i})}createUnhandledRejectionError(e){let t;if(e.reason instanceof Error)t=e.reason;else{const n="object"==typeof e.reason?JSON.stringify(e.reason,null,2):String(e.reason);t=new Error(n),t.name="UnhandledRejection",Object.defineProperty(t,"originalReason",{value:e.reason,enumerable:!1})}return t}buildStackTrace(e){if(!e)return[];try{return o.default.parse(e).map((e=>({filename:e.fileName||"unknown",function:e.functionName||"anonymous",lineno:e.lineNumber||0,colno:e.columnNumber||0})))}catch(e){return[]}}},Se=class extends B{constructor(e,{isEnabled:t}){if(super(e),this.currentUrl="",this.originalPushState=null,this.originalReplaceState=null,this.patchedPushState=null,this.patchedReplaceState=null,this.isInitialized=!1,this.isAutomaticNavigationEnabled=!1,this.activeNavigation=null,this.popStateHandler=()=>{this.handleLocationChange()},this.hashChangeHandler=()=>{this.handleLocationChange()},this.isInBrowserEnvironment()&&t)try{this.isAutomaticNavigationEnabled=t,this.currentUrl=v.location.href,this.originalPushState=history.pushState,this.originalReplaceState=history.replaceState}catch(e){h(e)}}isInBrowserEnvironment(){try{return void 0!==v&&void 0!==v.location&&void 0!==v.history&&"function"==typeof v.addEventListener}catch(e){return h(e),!1}}initialize(){try{if(this.logger.log("[navigation-listener.initialize] called"),!this.isInBrowserEnvironment()||!this.originalPushState||!this.originalReplaceState)return void this.logger.log("[navigation-listener.initialize] Browser environment not available, skipping initialization");if(!this.isAutomaticNavigationEnabled)return void this.logger.log("[navigation-listener.initialize] Automatic navigation is disabled, skipping initialization");const e=this.originalPushState,t=this.originalReplaceState,n=(...t)=>{const n=e.apply(history,t);return this.handleLocationChange(),n},r=(...e)=>{const n=t.apply(history,e);return this.handleLocationChange(),n};history.pushState=n,history.replaceState=r,this.patchedPushState=n,this.patchedReplaceState=r,v&&"function"==typeof v.addEventListener&&(v.addEventListener("popstate",this.popStateHandler),v.addEventListener("hashchange",this.hashChangeHandler)),this.isInitialized=!0}catch(e){h(e)}}destroy(){try{this.logger.log("[navigation-listener.destroy] called"),this.isInitialized&&this.originalPushState&&this.originalReplaceState&&(history.pushState===this.patchedPushState&&(history.pushState=this.originalPushState),history.replaceState===this.patchedReplaceState&&(history.replaceState=this.originalReplaceState)),this.patchedPushState=null,this.patchedReplaceState=null,v&&"function"==typeof v.removeEventListener&&(v.removeEventListener("popstate",this.popStateHandler),v.removeEventListener("hashchange",this.hashChangeHandler)),this.isInitialized=!1}catch(e){h(e)}}handleEvent(){try{this.logger.log("[navigation-listener.handleEvent] called");const e=this.buildEvent();this.queueEvent(e)}catch(e){h(e)}}buildEvent(){this.logger.log("[navigation-listener.buildEvent] called",v.location.href);const e=this.config.getPrivacy(),t="allow"===e.level,n=v.location.href,r=this.activeNavigation?.metadata,i={page_url:e.shouldMaskNetworkQueryParams?z(n,{sensitiveKeys:e.sensitiveKeys,redact:e.redact,kind:"query"}):n,metadata:!t&&r?D(r,{sensitiveKeys:e.sensitiveKeys,redact:e.redact}):r,duration_ms:this.activeNavigation?.duration_ms||0,start_timestamp:this.activeNavigation?.startTime||0,end_timestamp:this.activeNavigation?.endTime||0};return this.enricher.enrich({type:"navigation",attributes:i})}queueEvent(e){try{this.logger.log("[navigation-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){h(e)}}startNavigation(e){try{this.logger.log("[navigation-listener.startNavigation] called",e),this.activeNavigation={page_url:v?.location?.href||"",metadata:e,startTime:Date.now(),endTime:0,duration_ms:0}}catch(e){h(e)}}endNavigation(e){try{if(this.logger.log("[navigation-listener.endNavigation] called",e),!this.activeNavigation)return void this.logger.log("[navigation-listener.endNavigation] no active navigation found");this.logger.log("[navigation-listener.endNavigation] active navigation",this.activeNavigation),this.activeNavigation.endTime=Date.now(),this.activeNavigation.duration_ms=this.activeNavigation.endTime-this.activeNavigation.startTime,this.handleEvent()}catch(e){h(e)}}handleLocationChange(){try{if(!this.isInitialized)return;if(this.logger.log("[navigation-listener.handleLocationChange] called"),this.currentUrl===v.location.href)return;let e,t;try{e=new URL(v.location.href),t=new URL(this.currentUrl)}catch(e){return void h(e)}const n=e=>e.startsWith("#/"),r=n(e.hash)||n(t.hash);(e.pathname!==t.pathname||r&&e.hash!==t.hash)&&(this.currentUrl=v.location.href,this.handleEvent())}catch(e){h(e)}}},Ee=class extends B{constructor(e){super(e),this.loadEventHandler=()=>{this.logger.log("load event"),this.handleEvent()}}initialize(){try{this.logger.log("[page-load-listener.initialize] called"),this.logger.log("globalThis",v),"complete"===v?.document?.readyState?(this.logger.log("Page already loaded, triggering event immediately"),this.handleEvent()):v?.addEventListener("load",this.loadEventHandler)}catch(e){this.logger.log("[page-load-listener.initialize] error",e),h(e)}}destroy(){v?.removeEventListener("load",this.loadEventHandler)}handleEvent(){try{this.logger.log("[page-load-listener.handleEvent] called");const e=this.buildEvent();this.queueEvent(e)}catch(e){h(e)}}buildEvent(){const e=performance.getEntriesByType("navigation")[0],t=e?e.loadEventEnd-e.startTime:0,n=performance.getEntriesByType("resource"),r={count:n.length,totalSize:0,totalDuration:0,byType:{}};n.forEach((e=>{const t=e,n=t.transferSize||0,i=t.duration,s=t.initiatorType;r.totalSize+=n,r.totalDuration+=i,r.byType[s]||(r.byType[s]={count:0,size:0,duration:0}),r.byType[s].count++,r.byType[s].size+=n,r.byType[s].duration+=i}));const i=this.config.getPrivacy(),s=i.shouldMaskNetworkQueryParams,o={sensitiveKeys:i.sensitiveKeys,redact:i.redact,kind:"query"},a=v?.location?.href||"",l=v?.document?.referrer||"",c={page_url:s?z(a,o):a,page_load_time:t,page_referrer:s?z(l,o):l,page_resources:r};return this.enricher.enrich({type:"pageload",attributes:c})}queueEvent(e){try{this.logger.log("[page-load-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){h(e)}}},ke=class extends B{constructor(){super(...arguments),this.handleEvent=e=>{try{if(!this.enricher.shouldSample())return;const t=this.buildEvent(e);this.queueEvent(t)}catch(e){h(e)}}}initialize(){t.onCLS(this.handleEvent),t.onLCP(this.handleEvent),t.onFCP(this.handleEvent),t.onTTFB(this.handleEvent),t.onINP(this.handleEvent)}destroy(){}buildEvent(e){const t={performance_metric_name:e.name,performance_metric_value:e.value,performance_metric_id:e.id,performance_metric_navigation_type:e.navigationType||""};return this.enricher.enrich({type:"performance",attributes:t})}queueEvent(e){try{this.logger.log("[performance-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){h(e)}}},Te=class e{constructor(){if(this.worker=null,this.pending=new Map,this.nextId=0,this.consecutiveTimeouts=0,this.isAvailable=!1,this.logger=l.getInstance(),"undefined"==typeof Worker||"undefined"==typeof URL||"undefined"==typeof Blob)return;const e=new Blob(['!function(){"use strict";var r=Uint8Array,n=Uint16Array,e=Int32Array,t=new r([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),f=new r([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),o=new r([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),a=function(r,t){for(var f=new n(31),o=0;o<31;++o)f[o]=t+=1<<r[o-1];var a=new e(f[30]);for(o=1;o<30;++o)for(var i=f[o];i<f[o+1];++i)a[i]=i-f[o]<<5|o;return{b:f,r:a}},i=a(t,2),u=i.b,v=i.r;u[28]=258,v[258]=28;var s=a(f,0).r,l=new n(32768);for(Y=0;Y<32768;++Y)Q=(61680&(Q=(52428&(Q=(43690&Y)>>1|(21845&Y)<<1))>>2|(13107&Q)<<2))>>4|(3855&Q)<<4,l[Y]=((65280&Q)>>8|(255&Q)<<8)>>1;var c=function(r,e,t){for(var f=r.length,o=0,a=new n(e);o<f;++o)r[o]&&++a[r[o]-1];var i,u=new n(e);for(o=1;o<e;++o)u[o]=u[o-1]+a[o-1]<<1;for(i=new n(f),o=0;o<f;++o)r[o]&&(i[o]=l[u[r[o]-1]++]>>15-r[o]);return i},h=new r(288);for(Y=0;Y<144;++Y)h[Y]=8;for(Y=144;Y<256;++Y)h[Y]=9;for(Y=256;Y<280;++Y)h[Y]=7;for(Y=280;Y<288;++Y)h[Y]=8;var w=new r(32);for(Y=0;Y<32;++Y)w[Y]=5;var g=c(h,9),d=c(w,5),m=function(r){return(r+7)/8|0},p=function(n,e,t){return(null==t||t>n.length)&&(t=n.length),new r(n.subarray(e,t))},y=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>8},M=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>8,r[t+2]|=e>>16},b=function(e,t){for(var f=[],o=0;o<e.length;++o)e[o]&&f.push({s:o,f:e[o]});var a=f.length,i=f.slice();if(!a)return{t:U,l:0};if(1==a){var u=new r(f[0].s+1);return u[f[0].s]=1,{t:u,l:1}}f.sort((function(r,n){return r.f-n.f})),f.push({s:-1,f:25001});var v=f[0],s=f[1],l=0,c=1,h=2;for(f[0]={s:-1,f:v.f+s.f,l:v,r:s};c!=a-1;)v=f[f[l].f<f[h].f?l++:h++],s=f[l!=c&&f[l].f<f[h].f?l++:h++],f[c++]={s:-1,f:v.f+s.f,l:v,r:s};var w=i[0].s;for(o=1;o<a;++o)i[o].s>w&&(w=i[o].s);var g=new n(w+1),d=k(f[c-1],g,0);if(d>t){o=0;var m=0,p=d-t,y=1<<p;for(i.sort((function(r,n){return g[n.s]-g[r.s]||r.f-n.f}));o<a;++o){var M=i[o].s;if(!(g[M]>t))break;m+=y-(1<<d-g[M]),g[M]=t}for(m>>=p;m>0;){var b=i[o].s;g[b]<t?m-=1<<t-g[b]++-1:++o}for(;o>=0&&m;--o){var x=i[o].s;g[x]==t&&(--g[x],++m)}d=t}return{t:new r(g),l:d}},k=function(r,n,e){return-1==r.s?Math.max(k(r.l,n,e+1),k(r.r,n,e+1)):n[r.s]=e},x=function(r){for(var e=r.length;e&&!r[--e];);for(var t=new n(++e),f=0,o=r[0],a=1,i=function(r){t[f++]=r},u=1;u<=e;++u)if(r[u]==o&&u!=e)++a;else{if(!o&&a>2){for(;a>138;a-=138)i(32754);a>2&&(i(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(i(o),--a;a>6;a-=6)i(8304);a>2&&(i(a-3<<5|8208),a=0)}for(;a--;)i(o);a=1,o=r[u]}return{c:t.subarray(0,f),n:e}},A=function(r,n){for(var e=0,t=0;t<n.length;++t)e+=r[t]*n[t];return e},C=function(r,n,e){var t=e.length,f=m(n+2);r[f]=255&t,r[f+1]=t>>8,r[f+2]=255^r[f],r[f+3]=255^r[f+1];for(var o=0;o<t;++o)r[f+o+4]=e[o];return 8*(f+4+t)},T=function(r,e,a,i,u,v,s,l,m,p,k){y(e,k++,a),++u[256];for(var T=b(u,15),E=T.t,U=T.l,D=b(v,15),S=D.t,I=D.l,j=x(E),z=j.c,J=j.n,N=x(S),O=N.c,q=N.n,B=new n(19),F=0;F<z.length;++F)++B[31&z[F]];for(F=0;F<O.length;++F)++B[31&O[F]];for(var G=b(B,7),H=G.t,K=G.l,L=19;L>4&&!H[o[L-1]];--L);var P,Q,R,V,W=p+5<<3,X=A(u,h)+A(v,w)+s,Y=A(u,E)+A(v,S)+s+14+3*L+A(B,H)+2*B[16]+3*B[17]+7*B[18];if(m>=0&&W<=X&&W<=Y)return C(e,k,r.subarray(m,m+p));if(y(e,k,1+(Y<X)),k+=2,Y<X){P=c(E,U),Q=E,R=c(S,I),V=S;var Z=c(H,K);y(e,k,J-257),y(e,k+5,q-1),y(e,k+10,L-4),k+=14;for(F=0;F<L;++F)y(e,k+3*F,H[o[F]]);k+=3*L;for(var $=[z,O],_=0;_<2;++_){var rr=$[_];for(F=0;F<rr.length;++F){var nr=31&rr[F];y(e,k,Z[nr]),k+=H[nr],nr>15&&(y(e,k,rr[F]>>5&127),k+=rr[F]>>12)}}}else P=g,Q=h,R=d,V=w;for(F=0;F<l;++F){var er=i[F];if(er>255){M(e,k,P[(nr=er>>18&31)+257]),k+=Q[nr+257],nr>7&&(y(e,k,er>>23&31),k+=t[nr]);var tr=31&er;M(e,k,R[tr]),k+=V[tr],tr>3&&(M(e,k,er>>5&8191),k+=f[tr])}else M(e,k,P[er]),k+=Q[er]}return M(e,k,P[256]),k+Q[256]},E=new e([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),U=new r(0),D=function(){for(var r=new Int32Array(256),n=0;n<256;++n){for(var e=n,t=9;--t;)e=(1&e&&-306674912)^e>>>1;r[n]=e}return r}(),S=function(o,a,i,u,l){if(!l&&(l={l:1},a.dictionary)){var c=a.dictionary.subarray(-32768),h=new r(c.length+o.length);h.set(c),h.set(o,c.length),o=h,l.w=c.length}return function(o,a,i,u,l,c){var h=c.z||o.length,w=new r(u+h+5*(1+Math.ceil(h/7e3))+l),g=w.subarray(u,w.length-l),d=c.l,y=7&(c.r||0);if(a){y&&(g[0]=c.r>>3);for(var M=E[a-1],b=M>>13,k=8191&M,x=(1<<i)-1,A=c.p||new n(32768),U=c.h||new n(x+1),D=Math.ceil(i/3),S=2*D,I=function(r){return(o[r]^o[r+1]<<D^o[r+2]<<S)&x},j=new e(25e3),z=new n(288),J=new n(32),N=0,O=0,q=c.i||0,B=0,F=c.w||0,G=0;q+2<h;++q){var H=I(q),K=32767&q,L=U[H];if(A[K]=L,U[H]=K,F<=q){var P=h-q;if((N>7e3||B>24576)&&(P>423||!d)){y=T(o,g,0,j,z,J,O,B,G,q-G,y),B=N=O=0,G=q;for(var Q=0;Q<286;++Q)z[Q]=0;for(Q=0;Q<30;++Q)J[Q]=0}var R=2,V=0,W=k,X=K-L&32767;if(P>2&&H==I(q-X))for(var Y=Math.min(b,P)-1,Z=Math.min(32767,q),$=Math.min(258,P);X<=Z&&--W&&K!=L;){if(o[q+R]==o[q+R-X]){for(var _=0;_<$&&o[q+_]==o[q+_-X];++_);if(_>R){if(R=_,V=X,_>Y)break;var rr=Math.min(X,_-2),nr=0;for(Q=0;Q<rr;++Q){var er=q-X+Q&32767,tr=er-A[er]&32767;tr>nr&&(nr=tr,L=er)}}}X+=(K=L)-(L=A[K])&32767}if(V){j[B++]=268435456|v[R]<<18|s[V];var fr=31&v[R],or=31&s[V];O+=t[fr]+f[or],++z[257+fr],++J[or],F=q+R,++N}else j[B++]=o[q],++z[o[q]]}}for(q=Math.max(q,F);q<h;++q)j[B++]=o[q],++z[o[q]];y=T(o,g,d,j,z,J,O,B,G,q-G,y),d||(c.r=7&y|g[y/8|0]<<3,y-=7,c.h=U,c.p=A,c.i=q,c.w=F)}else{for(q=c.w||0;q<h+d;q+=65535){var ar=q+65535;ar>=h&&(g[y/8|0]=d,ar=h),y=C(g,y+1,o.subarray(q,ar))}c.i=h}return p(w,0,u+m(y)+l)}(o,null==a.level?6:a.level,null==a.mem?l.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(o.length)))):20:12+a.mem,i,u,l)},I=function(r,n,e){for(;e;++n)r[n]=e,e>>>=8};function j(r,n){n||(n={});var e=function(){var r=-1;return{p:function(n){for(var e=r,t=0;t<n.length;++t)e=D[255&e^n[t]]^e>>>8;r=e},d:function(){return~r}}}(),t=r.length;e.p(r);var f,o=S(r,n,10+((f=n).filename?f.filename.length+1:0),8),a=o.length;return function(r,n){var e=n.filename;if(r[0]=31,r[1]=139,r[2]=8,r[8]=n.level<2?4:9==n.level?2:0,r[9]=3,0!=n.mtime&&I(r,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),e){r[3]=8;for(var t=0;t<=e.length;++t)r[t+10]=e.charCodeAt(t)}}(o,n),I(o,a-8,e.d()),I(o,a-4,t),o}var z="undefined"!=typeof TextEncoder&&new TextEncoder,J="undefined"!=typeof TextDecoder&&new TextDecoder;try{J.decode(U,{stream:!0})}catch(r){}var N=Uint8Array,O=Uint16Array,q=Uint32Array,B=new N([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),F=new N([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),G=new N([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),H=function(r,n){for(var e=new O(31),t=0;t<31;++t)e[t]=n+=1<<r[t-1];var f=new q(e[30]);for(t=1;t<30;++t)for(var o=e[t];o<e[t+1];++o)f[o]=o-e[t]<<5|t;return[e,f]},K=H(B,2),L=K[0],P=K[1];L[28]=258,P[258]=28;var Q,R=H(F,0)[1],V=new O(32768);for(Y=0;Y<32768;++Y)Q=(61680&(Q=(52428&(Q=(43690&Y)>>>1|(21845&Y)<<1))>>>2|(13107&Q)<<2))>>>4|(3855&Q)<<4,V[Y]=((65280&Q)>>>8|(255&Q)<<8)>>>1;var W=function(r,n,e){for(var t=r.length,f=0,o=new O(n);f<t;++f)++o[r[f]-1];var a,i=new O(n);for(f=0;f<n;++f)i[f]=i[f-1]+o[f-1]<<1;for(a=new O(t),f=0;f<t;++f)a[f]=V[i[r[f]-1]++]>>>15-r[f];return a},X=new N(288);for(Y=0;Y<144;++Y)X[Y]=8;for(Y=144;Y<256;++Y)X[Y]=9;for(Y=256;Y<280;++Y)X[Y]=7;for(Y=280;Y<288;++Y)X[Y]=8;var Y,Z=new N(32);for(Y=0;Y<32;++Y)Z[Y]=5;var $=W(X,9),_=W(Z,5),rr=function(r){return(r/8|0)+(7&r&&1)},nr=function(r,n,e){(null==e||e>r.length)&&(e=r.length);var t=new(r instanceof O?O:r instanceof q?q:N)(e-n);return t.set(r.subarray(n,e)),t},er=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>>8},tr=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>>8,r[t+2]|=e>>>16},fr=function(r,n){for(var e=[],t=0;t<r.length;++t)r[t]&&e.push({s:t,f:r[t]});var f=e.length,o=e.slice();if(!f)return[new N(0),0];if(1==f){var a=new N(e[0].s+1);return a[e[0].s]=1,[a,1]}e.sort((function(r,n){return r.f-n.f})),e.push({s:-1,f:25001});var i=e[0],u=e[1],v=0,s=1,l=2;for(e[0]={s:-1,f:i.f+u.f,l:i,r:u};s!=f-1;)i=e[e[v].f<e[l].f?v++:l++],u=e[v!=s&&e[v].f<e[l].f?v++:l++],e[s++]={s:-1,f:i.f+u.f,l:i,r:u};var c=o[0].s;for(t=1;t<f;++t)o[t].s>c&&(c=o[t].s);var h=new O(c+1),w=or(e[s-1],h,0);if(w>n){t=0;var g=0,d=w-n,m=1<<d;for(o.sort((function(r,n){return h[n.s]-h[r.s]||r.f-n.f}));t<f;++t){var p=o[t].s;if(!(h[p]>n))break;g+=m-(1<<w-h[p]),h[p]=n}for(g>>>=d;g>0;){var y=o[t].s;h[y]<n?g-=1<<n-h[y]++-1:++t}for(;t>=0&&g;--t){var M=o[t].s;h[M]==n&&(--h[M],++g)}w=n}return[new N(h),w]},or=function(r,n,e){return-1==r.s?Math.max(or(r.l,n,e+1),or(r.r,n,e+1)):n[r.s]=e},ar=function(r){for(var n=r.length;n&&!r[--n];);for(var e=new O(++n),t=0,f=r[0],o=1,a=function(r){e[t++]=r},i=1;i<=n;++i)if(r[i]==f&&i!=n)++o;else{if(!f&&o>2){for(;o>138;o-=138)a(32754);o>2&&(a(o>10?o-11<<5|28690:o-3<<5|12305),o=0)}else if(o>3){for(a(f),--o;o>6;o-=6)a(8304);o>2&&(a(o-3<<5|8208),o=0)}for(;o--;)a(f);o=1,f=r[i]}return[e.subarray(0,t),n]},ir=function(r,n){for(var e=0,t=0;t<n.length;++t)e+=r[t]*n[t];return e},ur=function(r,n,e){var t=e.length,f=rr(n+2);r[f]=255&t,r[f+1]=t>>>8,r[f+2]=255^r[f],r[f+3]=255^r[f+1];for(var o=0;o<t;++o)r[f+o+4]=e[o];return 8*(f+4+t)},vr=function(r,n,e,t,f,o,a,i,u,v,s){er(n,s++,e),++f[256];for(var l=fr(f,15),c=l[0],h=l[1],w=fr(o,15),g=w[0],d=w[1],m=ar(c),p=m[0],y=m[1],M=ar(g),b=M[0],k=M[1],x=new O(19),A=0;A<p.length;++A)x[31&p[A]]++;for(A=0;A<b.length;++A)x[31&b[A]]++;for(var C=fr(x,7),T=C[0],E=C[1],U=19;U>4&&!T[G[U-1]];--U);var D,S,I,j,z=v+5<<3,J=ir(f,X)+ir(o,Z)+a,N=ir(f,c)+ir(o,g)+a+14+3*U+ir(x,T)+(2*x[16]+3*x[17]+7*x[18]);if(z<=J&&z<=N)return ur(n,s,r.subarray(u,u+v));if(er(n,s,1+(N<J)),s+=2,N<J){D=W(c,h),S=c,I=W(g,d),j=g;var q=W(T,E);er(n,s,y-257),er(n,s+5,k-1),er(n,s+10,U-4),s+=14;for(A=0;A<U;++A)er(n,s+3*A,T[G[A]]);s+=3*U;for(var H=[p,b],K=0;K<2;++K){var L=H[K];for(A=0;A<L.length;++A){var P=31&L[A];er(n,s,q[P]),s+=T[P],P>15&&(er(n,s,L[A]>>>5&127),s+=L[A]>>>12)}}}else D=$,S=X,I=_,j=Z;for(A=0;A<i;++A)if(t[A]>255){P=t[A]>>>18&31;tr(n,s,D[P+257]),s+=S[P+257],P>7&&(er(n,s,t[A]>>>23&31),s+=B[P]);var Q=31&t[A];tr(n,s,I[Q]),s+=j[Q],Q>3&&(tr(n,s,t[A]>>>5&8191),s+=F[Q])}else tr(n,s,D[t[A]]),s+=S[t[A]];return tr(n,s,D[256]),s+S[256]},sr=new q([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),lr=function(r,n,e,t,f){return function(r,n,e,t,f,o){var a=r.length,i=new N(t+a+5*(1+Math.floor(a/7e3))+f),u=i.subarray(t,i.length-f),v=0;if(!n||a<8)for(var s=0;s<=a;s+=65535){var l=s+65535;l<a?v=ur(u,v,r.subarray(s,l)):(u[s]=o,v=ur(u,v,r.subarray(s,a)))}else{for(var c=sr[n-1],h=c>>>13,w=8191&c,g=(1<<e)-1,d=new O(32768),m=new O(g+1),p=Math.ceil(e/3),y=2*p,M=function(n){return(r[n]^r[n+1]<<p^r[n+2]<<y)&g},b=new q(25e3),k=new O(288),x=new O(32),A=0,C=0,T=(s=0,0),E=0,U=0;s<a;++s){var D=M(s),S=32767&s,I=m[D];if(d[S]=I,m[D]=S,E<=s){var j=a-s;if((A>7e3||T>24576)&&j>423){v=vr(r,u,0,b,k,x,C,T,U,s-U,v),T=A=C=0,U=s;for(var z=0;z<286;++z)k[z]=0;for(z=0;z<30;++z)x[z]=0}var J=2,G=0,H=w,K=S-I&32767;if(j>2&&D==M(s-K))for(var L=Math.min(h,j)-1,Q=Math.min(32767,s),V=Math.min(258,j);K<=Q&&--H&&S!=I;){if(r[s+J]==r[s+J-K]){for(var W=0;W<V&&r[s+W]==r[s+W-K];++W);if(W>J){if(J=W,G=K,W>L)break;var X=Math.min(K,W-2),Y=0;for(z=0;z<X;++z){var Z=s-K+z+32768&32767,$=Z-d[Z]+32768&32767;$>Y&&(Y=$,I=Z)}}}K+=(S=I)-(I=d[S])+32768&32767}if(G){b[T++]=268435456|P[J]<<18|R[G];var _=31&P[J],er=31&R[G];C+=B[_]+F[er],++k[257+_],++x[er],E=s+J,++A}else b[T++]=r[s],++k[r[s]]}}v=vr(r,u,o,b,k,x,C,T,U,s-U,v)}return nr(i,0,t+rr(v)+f)}(r,null==n.level?6:n.level,null==n.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(r.length)))):12+n.mem,e,t,!0)};function cr(r,n){void 0===n&&(n={});var e=function(){var r=1,n=0;return{p:function(e){for(var t=r,f=n,o=e.length,a=0;a!=o;){for(var i=Math.min(a+5552,o);a<i;++a)f+=t+=e[a];t%=65521,f%=65521}r=t,n=f},d:function(){return(r>>>8<<16|(255&n)<<8|n>>>8)+2*((255&r)<<23)}}}();e.p(r);var t,f,o,a=lr(r,n,2,4);return t=a,f=n.level,o=0==f?0:f<6?1:9==f?3:2,t[0]=120,t[1]=o<<6|(o?32-2*o:1),function(r,n,e){for(;e;++n)r[n]=e,e>>>=8}(a,a.length-4,e.d()),a}var hr=r=>{const n={...r,v:"v1"};return function(r){for(var n="",e=0;e<r.length;){var t=r[e++];n+=String.fromCharCode(t)}return n}(cr(function(r,n){var e=r.length;if("undefined"!=typeof TextEncoder)return(new TextEncoder).encode(r);for(var t=new N(r.length+(r.length>>>1)),f=0,o=function(r){t[f++]=r},a=0;a<e;++a){if(f+5>t.length){var i=new N(f+8+(e-a<<1));i.set(t),t=i}var u=r.charCodeAt(a);u<128||n?o(u):u<2048?(o(192|u>>>6),o(128|63&u)):u>55295&&u<57344?(o(240|(u=65536+(1047552&u)|1023&r.charCodeAt(++a))>>>18),o(128|u>>>12&63),o(128|u>>>6&63),o(128|63&u)):(o(224|u>>>12),o(128|u>>>6&63),o(128|63&u))}return nr(t,0,f)}(JSON.stringify(n))))},wr=self;wr.onmessage=n=>{const e=n.data;if(!e||"number"!=typeof e.id||"pack-replay"!==e.op&&"encode-batch"!==e.op)return void(e&&"number"==typeof e.id&&wr.postMessage({id:e.id,ok:!1,error:"malformed message"}));const{id:t,op:f,payload:o}=e;try{if("pack-replay"===f){const r=o.events.map((r=>hr(r)));return void wr.postMessage({id:t,ok:!0,result:{packed:r}})}if("encode-batch"===f){const{json:n,compress:e}=o;if(!e){const r=(new TextEncoder).encode(n);return void wr.postMessage({id:t,ok:!0,result:{bytes:r,isCompressed:!1}},[r.buffer])}try{const e=j(function(n,e){if(z)return z.encode(n);for(var t=n.length,f=new r(n.length+(n.length>>1)),o=0,a=function(r){f[o++]=r},i=0;i<t;++i){if(o+5>f.length){var u=new r(o+8+(t-i<<1));u.set(f),f=u}var v=n.charCodeAt(i);v<128||e?a(v):v<2048?(a(192|v>>6),a(128|63&v)):v>55295&&v<57344?(a(240|(v=65536+(1047552&v)|1023&n.charCodeAt(++i))>>18),a(128|v>>12&63),a(128|v>>6&63),a(128|63&v)):(a(224|v>>12),a(128|v>>6&63),a(128|63&v))}return p(f,0,o)}(n));return void wr.postMessage({id:t,ok:!0,result:{bytes:e,isCompressed:!0}},[e.buffer])}catch{const r=(new TextEncoder).encode(n);return void wr.postMessage({id:t,ok:!0,result:{bytes:r,isCompressed:!1}},[r.buffer])}}wr.postMessage({id:t,ok:!1,error:"unknown op"})}catch(r){wr.postMessage({id:t,ok:!1,error:r instanceof Error?r.message:String(r)})}}}();'],{type:"application/javascript"}),t=URL.createObjectURL(e);try{this.worker=new Worker(t),Promise.resolve().then((()=>URL.revokeObjectURL(t))),this.worker.onmessage=e=>this.handleMessage(e.data),this.worker.onerror=e=>this.handleFatalFailure("worker onerror",e.message),this.worker.onmessageerror=()=>this.logger.log("[worker-client] worker onmessageerror — single message dropped, worker still alive"),this.isAvailable=!0,this.logger.log("[worker-client] worker spawned")}catch(e){URL.revokeObjectURL(t),this.logger.log("[worker-client] failed to spawn worker, falling back to main thread:",e),this.worker=null,this.isAvailable=!1}}static getInstance(){return e.instance||(e.instance=new e),e.instance}static __resetForTests(){e.instance&&e.instance.terminate(),e.instance=null}static async withFallback(t,n,r){const i=e.getInstance();if(!i.isAvailable)return n();try{return await t(i)}catch(e){return l.getInstance().log(`[${r}] worker call failed, using inline fallback:`,e),n()}}packReplay(e){return this.dispatch("pack-replay",{events:e}).then((e=>e.packed))}encodeBatch(e,t){return this.dispatch("encode-batch",{json:e,compress:t}).then((e=>({data:e.bytes,isCompressed:e.isCompressed})))}terminate(){if(this.worker){try{this.worker.terminate()}catch(e){this.logger.log("[worker-client] failed to terminate worker:",e)}this.worker=null}this.isAvailable=!1,this.rejectAllPending(new Error("worker terminated")),e.instance===this&&(e.instance=null)}dispatch(e,t){if(!this.worker||!this.isAvailable)return Promise.reject(new Error("worker not available"));const n=this.nextId++,r=this.worker;return new Promise(((i,s)=>{const o=setTimeout((()=>{this.pending.has(n)&&(this.pending.delete(n),this.consecutiveTimeouts+=1,this.consecutiveTimeouts>=3&&this.handleFatalFailure("worker latched after 3 consecutive timeouts"),s(new Error("worker request timed out")))}),1500);this.pending.set(n,{resolve:i,reject:s,timeoutId:o});try{r.postMessage({id:n,op:e,payload:t})}catch(e){clearTimeout(o),this.pending.delete(n),s(e instanceof Error?e:new Error(String(e)))}}))}handleMessage(e){const t=this.pending.get(e.id);t&&(clearTimeout(t.timeoutId),this.pending.delete(e.id),this.consecutiveTimeouts=0,e.ok?t.resolve(e.result):t.reject(new Error(e.error)))}handleFatalFailure(e,t){if(this.logger.log(`[worker-client] ${e}${t?": "+t:""}`),this.isAvailable=!1,this.rejectAllPending(new Error(e)),this.worker){try{this.worker.terminate()}catch{}this.worker=null}}rejectAllPending(e){for(const t of this.pending.values())clearTimeout(t.timeoutId),t.reject(e);this.pending.clear()}};Te.instance=null;var Ie=Te;var Re=class{constructor(e){this.logger=l.getInstance(),this.stopFn=null,this.isRecording=!1,this.events=[],this.startTime=0,this.batchSize=3,this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0,this.sendTimerId=null,this.configManager=e.config,this.session=e.session,this.eventsPool=e.eventsPool,this.enricher=e.enricher}initialize(){this.logger.log("[session-replay-listener] initialize called"),this.isRecording?this.logger.log("[session-replay-listener] already recording"):this.startRecording()}startRecording(){try{this.startTime=Date.now(),this.events=[],this.isRecording=!0,this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0;const e=this.configManager.getConfig()?.options?.replay,t=e?.blockedSelectors?.filter(Boolean),r=t?.length?t.join(", "):void 0,i=K(this.configManager),s=function(e){const t=e?.privacy,n=function(e){return"mask-sensitive"===e||"mask-all"===e||"allow"===e?e:void 0}(t?.level)??"mask-sensitive",r="allow"===n,i=j(t?.maskSelectors),s=t?.replay,o="function"==typeof s?.maskTextFn?s.maskTextFn:void 0,a="function"==typeof s?.maskInputFn?s.maskInputFn:void 0;let l;return l="mask-all"===n||!r&&void 0!==o?["*",...i].join(", "):"mask-sensitive"===n?["[data-private]",...i].join(", "):void 0,{maskTextSelector:l,maskAllInputs:!r,maskTextFn:o,maskInputFn:a}}(this.configManager.getConfig()?.providedOptions),o=s.maskInputFn??("allow"===i.level?void 0:(e,t)=>Q(t,i)?"*".repeat(e.length):e);this.stopFn=n.record({...r?{blockSelector:r}:{},...s.maskTextSelector?{maskTextSelector:s.maskTextSelector}:{},maskAllInputs:s.maskAllInputs,...s.maskTextFn?{maskTextFn:s.maskTextFn}:{},...o?{maskInputFn:o}:{},slimDOMOptions:{script:!1,comment:!1,headWhitespace:!1},sampling:{mousemove:100,input:"last",scroll:150},checkoutEveryNms:3e4,emit:(e,t)=>{if(this.isRecording)try{this.events.push(e),t&&(this.batchContainsFullSnapshot=!0,this.fullSnapshotTimestamp=Date.now(),this.logger.log("[session-replay-listener] full snapshot captured at",this.fullSnapshotTimestamp)),this.events.length>=this.batchSize&&this.scheduleSendBatch()}catch(e){h(e),this.logger.log("[session-replay-listener] failed to process event in emit callback:",e)}}})||null,this.logger.log("[session-replay-listener] started recording with full snapshot interval:",3e4,"ms")}catch(e){h(e),this.logger.log("[session-replay-listener] failed to start recording:",e),this.isRecording=!1}}scheduleSendBatch(){null===this.sendTimerId&&(this.sendTimerId=v.setTimeout((()=>{this.sendTimerId=null,this.isRecording&&this.sendBatchAsync().catch((e=>{h(e),this.logger.log("[session-replay-listener] failed to send deferred batch:",e)}))}),0))}clearScheduledSend(){null!==this.sendTimerId&&(v.clearTimeout(this.sendTimerId),this.sendTimerId=null)}flushPendingSync(){this.clearScheduledSend(),0!==this.events.length&&this.sendBatchSync()}async sendBatchAsync(){if(0===this.events.length)return;const e=this.drainBatch(),t=this.session.getSessionId(),n=Ie.getInstance();let i;if(n.isAvailable)try{i=await n.packReplay(e.events)}catch(t){h(t),this.logger.log("[session-replay-listener] worker pack failed, using inline fallback:",t),i=e.events.map((e=>r.pack(e)))}else i=e.events.map((e=>r.pack(e)));this.session.getSessionId()===t?this.enqueueReplayEvent(i,e.containsFullSnapshot,e.snapshotTimestamp):this.logger.log("[session-replay-listener] dropping packed batch: session rotated during pack",{drained:i.length})}sendBatchSync(){if(0===this.events.length)return;const e=this.drainBatch(),t=e.events.map((e=>r.pack(e)));this.enqueueReplayEvent(t,e.containsFullSnapshot,e.snapshotTimestamp)}drainBatch(){const e=this.events,t=this.batchContainsFullSnapshot,n=this.fullSnapshotTimestamp;return this.events=[],this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0,{events:e,containsFullSnapshot:t,snapshotTimestamp:n}}enqueueReplayEvent(e,t,n){try{const r={_gc_replay_data:{events:e}};t&&(r.replay_is_full_snapshot=!0,r.replay_full_snapshot_timestamp=n);const i=this.enricher.enrich({type:"replay",attributes:r});this.eventsPool.addEvent(i),this.logger.log("[session-replay-listener] sent batch with",e.length,"events",t?"(includes full snapshot)":"")}catch(e){h(e),this.logger.log("[session-replay-listener] failed to send batch:",e)}}stopRecording(){if(this.isRecording)try{this.clearScheduledSend(),this.stopFn?.(),this.isRecording=!1,this.events.length>0&&this.sendBatchSync(),this.stopFn=null,this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0}catch(e){h(e),this.logger.log("[session-replay-listener] failed to stop recording:",e)}}destroy(){this.stopRecording()}},Le=144e5,Me=288e5,xe=18e5,qe="gcSample",Ae={eventSampleRate:1,sessionSampleRate:1,debug:!1,privacy:{level:"mask-sensitive"},enabledEvents:[],tracing:{propagationUrls:[],propagationHeaders:[],traceIdHeaderName:"",spanIdHeaderName:"",origin:{name:"",value:""}},transport:{batchSize:10,batchTimeout:1e4,compression:!0},replay:{},sessionMaxDuration:Le},Ne=["pointerdown","keydown","scroll","touchstart","mousemove"],Ce=class{constructor(e){this.logger=l.getInstance(),this.lastSignalMs=0,this.idleTimer=null,this.installed=!1,this.handleInput=()=>{const e=Date.now();if(!(e-this.lastSignalMs<3e4)){this.notePresence(e);try{this.callbacks.onPresence(e)}catch(e){h(e)}}},this.callbacks=e}initialize(){this.installed||(this.installed=!0,Ne.forEach((e=>{try{v.addEventListener?.(e,this.handleInput,{capture:!0,passive:!0})}catch(e){h(e)}})),this.armIdleTimer(),this.logger.log("[user-presence-monitor] installed"))}notePresence(e){this.lastSignalMs=e,this.armIdleTimer()}resetIdleTimer(){this.armIdleTimer()}armIdleTimer(){try{this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=null,this.idleTimer=setTimeout((()=>{this.idleTimer=null,this.logger.log("[user-presence-monitor] user idle for",xe,"ms");try{this.callbacks.onIdle()}catch(e){h(e)}}),xe)}catch(e){h(e)}}destroy(){if(this.installed){this.installed=!1,Ne.forEach((e=>{try{v.removeEventListener?.(e,this.handleInput,{capture:!0})}catch(e){h(e)}}));try{this.idleTimer&&clearTimeout(this.idleTimer)}catch(e){h(e)}finally{this.idleTimer=null}}}},He=class{constructor(e){this.logger=l.getInstance(),this.rotating=!1,this.session=e.session,this.pool=e.pool,this.idGenerator=e.idGenerator,this.activityEventTypes=e.activityEventTypes,this.ignoredEventTypes=e.ignoredEventTypes,this.hooks=e.hooks??{}}get isRotating(){return this.rotating}install(){this.pool.setBeforeEnqueueHook((e=>this.reconcileOnEnqueue(e))),this.pool.setFlushGate((()=>this.session.hasUserActivity()))}uninstall(e){this.pool.setBeforeEnqueueHook(null);try{e?.()}catch(e){h(e)}this.pool.setFlushGate(null)}reconcile(e,t){if(this.rotating)return;t&&this.session.isSessionInactive(e)&&this.rotate({reason:"inactivity gap"});const n=this.session.getSessionElapsedMs(e),r=this.session.getSessionMaxDuration(),i=n>=r;this.logger.log("[session-lifecycle] session reconcile",{userPresent:t,elapsedMs:n,maxDurationMs:r,expired:i}),i&&this.rotate({reason:"max session duration"}),this.hooks.onReconcile?.(t),t&&(this.session.setLastActivityMs(e),this.hooks.onPresenceStamped?.(e))}reconcileOnEnqueue(e){this.rotating||(this.ignoredEventTypes.has(e.type)?this.logger.log("[session-lifecycle] enqueue rotation check: ignoring heartbeat-style event",e.type):this.reconcile(Date.now(),this.activityEventTypes.has(e.type)))}rotateIfStale(e,t){(this.session.isSessionInactive(e)||this.session.isSessionExpired(e))&&this.rotate({reason:t})}rotate(e){if(this.rotating)return;this.rotating=!0;const t=(e,t)=>{try{this.logger.log(`[session-lifecycle] session rotation: ${e}`),t()}catch(t){h(t),this.logger.log(`[session-lifecycle] failed to ${e} during session rotation:`,t)}};try{const n=this.session.getSessionId();let r;t("capture host rotation context",(()=>{r=this.hooks.captureRotationContext?.()}));const i=this.session.hasUserActivity();this.logger.log("[session-lifecycle] session rotation start",{reason:e.reason,previousId:n,wasConfirmed:i}),t("host beforeRotate",(()=>this.hooks.beforeRotate?.())),t(i?"flush events":"discard unconfirmed events",(()=>i?this.pool.flush():this.pool.discardBuffer())),t("rotate session ids",(()=>{const e=this.idGenerator.generateId();this.session.setSessionId(e),this.session.setSessionStartTime(b(Date.now())),this.session.clearSamplingDecision(),this.logger.log("[session-lifecycle] session id rotated",{from:n,to:e})})),t("host afterRotate",(()=>this.hooks.afterRotate?.(r)))}finally{this.rotating=!1,this.logger.log("[session-lifecycle] session rotation complete",{reason:e.reason})}}},ze=new Set(["dom.event"]),_e=new Set(["replay"]),Pe=class{constructor(e){this.logger=l.getInstance(),this.idGenerator=new d,this.logEventsListener=null,this.domEventsListener=null,this.errorsEventsListener=null,this.networkEventsListener=null,this.navigationListener=null,this.performanceListener=null,this.pageLoadListener=null,this.sessionReplayListener=null,this.replayDesired=!1,this.presenceMonitor=null,this.configManager=e.config,this.session=e.session,this.eventsPool=e.eventsPool,this.enricher=e.enricher,this.manualEvents=new O({config:this.configManager,pool:this.eventsPool,enricher:this.enricher}),this.lifecycle=new He({session:this.session,pool:this.eventsPool,idGenerator:this.idGenerator,activityEventTypes:ze,ignoredEventTypes:_e,hooks:{captureRotationContext:()=>this.isReplayRecording(),beforeRotate:()=>this.stopReplayListener(),afterRotate:e=>this.syncReplayState(e),onReconcile:e=>this.syncReplayState(e),onPresenceStamped:e=>this.presenceMonitor?.notePresence(e)}})}listenerDeps(){return{config:this.configManager,eventsPool:this.eventsPool,enricher:this.enricher}}instrument(){this.logger.log("[instrumentation-manager.instrument] called"),this.lifecycle.install(),this.presenceMonitor?.destroy(),this.presenceMonitor=new Ce({onPresence:e=>this.lifecycle.reconcile(e,!0),onIdle:()=>this.pauseReplayOnIdle()}),this.presenceMonitor.initialize();const e=this.configManager.getConfig(),t=e?.options?.enabledEvents,n=!t||0===t.length,r=[];(n||t?.includes("pageload"))&&(this.pageLoadListener=new Ee(this.listenerDeps()),this.pageLoadListener.initialize(),r.push("pageload")),(n||t?.includes("dom"))&&(this.domEventsListener=new le(this.listenerDeps()),this.domEventsListener.initialize(),r.push("dom")),(n||t?.includes("logs"))&&(this.logEventsListener=new he(this.listenerDeps()),this.logEventsListener.initialize(),r.push("logs")),(n||t?.includes("exceptions"))&&(this.errorsEventsListener=new we(this.listenerDeps()),this.errorsEventsListener.initialize(),r.push("exceptions")),(n||t?.includes("network"))&&(this.networkEventsListener=new be(this.listenerDeps()),this.networkEventsListener.initialize(),r.push("network")),(n||t?.includes("performance"))&&(this.performanceListener=new ke(this.listenerDeps()),this.performanceListener.initialize(),r.push("performance")),this.navigationListener=new Se(this.listenerDeps(),{isEnabled:n||t?.includes("navigation")}),this.navigationListener.initialize(),r.push("navigation"),this.logger.log("[instrumentation-manager.instrument] initialized listeners based on config:",r)}sendCustomEvent(e){this.manualEvents.sendCustomEvent(e)}emitLog(e,t,n){this.logEventsListener&&this.manualEvents.emitLog(e,t,n)}captureException(e,t){try{this.logger.log("[instrumentation-manager.captureException] called",e),this.errorsEventsListener?.handleEvent(e,{handled:!0,metadata:t})}catch(e){h(e)}}isNavigationTrackingEnabled(){const e=this.configManager.getConfig();return e?.options?.enabledEvents?.includes("navigation")||0===e?.options?.enabledEvents?.length}startNavigation(e){this.logger.log("[instrumentation-manager.startNavigation] called",e),this.isNavigationTrackingEnabled()?this.logger.log("[instrumentation-manager.startNavigation] startNavigation called while navigation tracking is enabled. Ignoring. If you wish to track navigations manually, please disable navigation tracking via the enabledEvents array in the config."):this.navigationListener?.startNavigation(e)}endNavigation(e){this.logger.log("[instrumentation-manager.endNavigation] called",e),this.isNavigationTrackingEnabled()?this.logger.log("[instrumentation-manager.endNavigation] endNavigation called while navigation tracking is enabled. Ignoring. If you wish to track navigations manually, please disable navigation tracking via the enabledEvents array in the config."):this.navigationListener?.endNavigation(e)}isReplayRecording(){return null!==this.sessionReplayListener}restartReplayForConfigChange(){this.isReplayRecording()&&(this.logger.log("[instrumentation-manager] restarting replay to apply config change"),this.stopReplayListener(),this.startReplayListener())}startReplayRecording(){this.replayDesired=!0,this.isReplayRecording()?this.logger.log("[instrumentation-manager] replay recording already started"):(this.lifecycle.rotateIfStale(Date.now(),"replay start into stale session"),this.startReplayListener(),this.presenceMonitor?.resetIdleTimer())}stopReplayRecording(){this.replayDesired=!1,this.stopReplayListener()}flushPendingReplay(){this.sessionReplayListener?.flushPendingSync()}syncReplayState(e){this.replayDesired&&e&&!this.isReplayRecording()&&(this.logger.log("[instrumentation-manager] user present and replay desired — starting replay"),this.startReplayListener())}pauseReplayOnIdle(){this.isReplayRecording()&&(this.logger.log("[instrumentation-manager] pausing replay: user idle window elapsed"),this.stopReplayListener())}startReplayListener(){if(this.sessionReplayListener)this.logger.log("[instrumentation-manager] replay recording already started");else try{const e=new Re({...this.listenerDeps(),session:this.session});e.initialize(),this.sessionReplayListener=e,this.logger.log("[instrumentation-manager] started replay recording")}catch(e){h(e),this.logger.log("[instrumentation-manager] failed to start replay recording:",e)}}stopReplayListener(){this.sessionReplayListener?(this.sessionReplayListener.stopRecording(),this.sessionReplayListener=null):this.logger.log("[instrumentation-manager] cannot stop replay recording: replay listener not initialized")}uninstrument(){this.lifecycle.uninstall((()=>{this.presenceMonitor?.destroy(),this.presenceMonitor=null,this.domEventsListener?.destroy(),this.logEventsListener?.destroy(),this.errorsEventsListener?.destroy(),this.networkEventsListener?.destroy(),this.navigationListener?.destroy(),this.performanceListener?.destroy(),this.pageLoadListener?.destroy(),this.sessionReplayListener?.destroy(),this.sessionReplayListener=null,this.replayDesired=!1}))}};function De(e){try{console.warn(e)}catch{}}function Fe(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}var Oe=["privacy","tracing","transport","replay"],Be={tracing:"origin",privacy:"replay"};function je(e,t){if(!Fe(e))return e;const n={...e};return t&&Fe(n[t])&&(n[t]={...n[t]}),n}function Ke(e,t,n){const r={...e,...t};if(n){const i=e?.[n],s=t[n];Fe(i)&&Fe(s)?r[n]={...i,...s}:Object.hasOwn(t,n)&&!Fe(s)?r[n]=Fe(i)?{...i}:i:Fe(r[n])&&(r[n]={...r[n]})}return r}function Ue(e,t){const n={...e,...t},r=t,i=e;for(const e of Oe){if(!Object.hasOwn(r,e)){Fe(i[e])&&(n[e]=je(i[e],Be[e]));continue}const t=r[e];Fe(t)?n[e]=Ke(i[e],t,Be[e]):n[e]=je(i[e],Be[e])}return n}var Xe=class e{constructor(t){this.dsn=t?.dsn||"",this.appId=t?.appId||"",this.cluster=t?.cluster||"",this.apiKey=t?.apiKey||"",this.environment=t?.environment||"",this.namespace=t?.namespace||"",this.releaseId=t?.releaseId,this.user=t?.user||null,this.providedOptions={...t?.options||{}},this.options=Ue(Ae,t?.options||{}),this.options.sessionMaxDuration=e.normalizeSessionMaxDuration(t?.options?.sessionMaxDuration),e.warnRemovedOptions(t?.options),e.stripRemovedOptions(this.providedOptions),e.stripRemovedOptions(this.options)}static stripRemovedOptions(t){const n=t;for(const t of e.REMOVED_OPTION_KEYS)Object.hasOwn(n,t)&&delete n[t]}static warnRemovedOptions(t){if(!t||"object"!=typeof t)return;const n=t;for(const t of e.REMOVED_OPTION_KEYS)Object.hasOwn(n,t)&&De(`[groundcover] \`options.${t}\` was removed in 1.0.0 and is ignored. Configure masking via \`options.privacy\` instead — see the migration guide: https://github.com/groundcover-com/rum/tree/main/packages/browser#migrating-to-100`)}static normalizeSessionMaxDuration(e){return void 0===e?Le:"number"!=typeof e||!Number.isFinite(e)||e<6e4||e>Me?(De("[groundcover] sessionMaxDuration must be a finite number between 60000 ms (1 minute) and 28800000 ms (8 hours); falling back to the 4-hour default"),Le):e}getEndpoint(){return this.dsn?.startsWith("http")?this.dsn:`https://${this.dsn}`}updateConfig(t){t.options&&(e.warnRemovedOptions(t.options),this.providedOptions=Ue(this.providedOptions||{},t.options),this.options=Ue(this.options,t.options),void 0!==t.options.sessionMaxDuration&&(this.options.sessionMaxDuration=e.normalizeSessionMaxDuration(t.options.sessionMaxDuration)),e.stripRemovedOptions(this.providedOptions),e.stripRemovedOptions(this.options)),void 0!==t.user&&(this.user=null===t.user?null:{...this.user,...t.user}),t.appId&&(this.appId=t.appId),t.dsn&&(this.dsn=t.dsn),t.apiKey&&(this.apiKey=t.apiKey),t.cluster&&(this.cluster=t.cluster),t.environment&&(this.environment=t.environment),t.namespace&&(this.namespace=t.namespace),t.releaseId&&(this.releaseId=t.releaseId)}};Xe.REMOVED_OPTION_KEYS=["enableMasking","maskFields"];var Ye=Xe,$e=class{constructor(){this.config=null,this.logger=l.getInstance(),this.privacyCache=null}initialize(e){this.config||(this.config=new Ye(e))}getConfig(){return this.config?this.config:(this.logger.log("[config-manager] configuration not initialized"),null)}getPrivacy(){return this.privacyCache||(this.privacyCache=function(e){const t=e?.privacy,n=function(e){return"mask-sensitive"===e||"mask-all"===e||"allow"===e?e:void 0}(t?.level)??"mask-sensitive",r="allow"===n,i=e=>!r&&(e??!0),s=i(t?.maskNetworkBodies),o=i(t?.maskNetworkQueryParams),a=i(t?.maskLogs),l=i(t?.maskErrors);return{level:n,maskNetworkBodies:s,maskNetworkQueryParams:o,maskLogs:a,maskErrors:l,shouldMaskNetworkBodies:!r&&s,shouldMaskNetworkQueryParams:!r&&o,shouldMaskLogs:!r&&a,shouldMaskErrors:!r&&l,sensitiveKeys:j(t?.sensitiveKeys),redact:"function"==typeof t?.redact?t.redact:void 0}}(this.config?.providedOptions)),this.privacyCache}updateConfig(e){this.logger.log("[config-manager] updateConfig called"),this.config?e&&(this.logger.log("[config-manager] updating options"),this.config.updateConfig(e),this.privacyCache=null):this.logger.log("[config-manager] configuration not initialized")}},We=Ae.transport?.batchSize??10,Qe=Ae.transport?.batchTimeout??1e4;var Ge=class{constructor(e){this.events=[],this.timeoutId=null,this.logger=l.getInstance(),this.initialized=!1,this.noClusterWarned=!1,this.onBeforeEnqueue=null,this.flushGate=null,this.config=e.config,this.session=e.session,this.transporter=e.transporter,this.getDeviceAttributes=e.getDeviceAttributes,this.eventsToSkipFlush=e.eventsToSkipFlush}initialize(){try{if(this.initialized)return;this.scheduleFlush(),this.initialized=!0}catch(e){h(e)}}destroy(){try{null!==this.timeoutId&&(v.clearTimeout(this.timeoutId),this.timeoutId=null),this.events=[],this.initialized=!1}catch(e){h(e)}}setBeforeEnqueueHook(e){this.onBeforeEnqueue=e}setFlushGate(e){this.flushGate=e}discardBuffer(){this.events=[]}isFlushAllowed(){if(null===this.flushGate)return!0;try{return this.flushGate()}catch(e){return h(e),!0}}addEvent(e){var t;if(e&&this.initialized)try{const n=this.config.getConfig()?.options?.beforeSend,r=this.config.getConfig()?.options?.enrichEvent;let i=e;if(n&&!n(i))return;if(this.onBeforeEnqueue)try{this.onBeforeEnqueue(i)}catch(e){h(e)}if(r&&(i=r(i)),!this.isFlushAllowed()&&this.events.length>=500)return;this.events.push(i);const s=(t=this.config.getConfig()?.options?.transport?.batchSize,"number"==typeof t&&Number.isFinite(t)&&t>=0?t:We);this.events.length>=s&&!this.eventsToSkipFlush.includes(i.type)&&this.flush()}catch(e){h(e)}}flush({lifecycle:e=!1}={}){try{if(!this.initialized)return;if(!this.isFlushAllowed())return void this.scheduleFlush();if(!this.events?.length)return void this.scheduleFlush();if(!this.config.getConfig()?.cluster)return this.noClusterWarned||(this.noClusterWarned=!0,this.logger.log("[events-pool.flush] skipping flush: no cluster")),void this.scheduleFlush();this.noClusterWarned=!1;const t={sessionAttributes:this.getSessionAttributes(),events:this.events};e?this.transporter.send(t,{lifecycle:!0}):this.transporter.send(t),this.events=[],this.scheduleFlush()}catch(e){h(e)}}async flushSync(){try{if(!this.events?.length||!this.initialized)return;if(!this.isFlushAllowed())return void this.discardBuffer();if(!this.config.getConfig()?.cluster)return void this.logger.log("[events-pool.flush] skipping flush: no cluster");await this.transporter.send({sessionAttributes:this.getSessionAttributes(),events:this.events}),this.events=[]}catch(e){h(e)}}scheduleFlush(){try{null!==this.timeoutId&&(v.clearTimeout(this.timeoutId),this.timeoutId=null);const t=(e=this.config.getConfig()?.options?.transport?.batchTimeout,"number"==typeof e&&Number.isFinite(e)&&e>0?e:Qe);this.timeoutId=v.setTimeout((()=>{this.timeoutId=null,this.flush()}),t)}catch(e){h(e)}var e}getSessionAttributes(){const e=this.config.getConfig();return{...this.getDeviceAttributes(),cluster:e?.cluster||"",env:e?.environment||"",namespace:e?.namespace||"",releaseId:e?.releaseId||"",session_id:this.session.getSessionId(),session_start_time:this.session.getSessionStartTime(),user:e?.user||{},"service.name":e?.appId}}},Ve=class{constructor(e){this.logger=l.getInstance(),this.config=e.config,this.enrichAttributes=e.enrichAttributes??null,this.idGenerator=e.idGenerator??new d}getPlatformAttributes(){if(!this.enrichAttributes)return{};try{return this.enrichAttributes()??{}}catch(e){return this.logger.log("[event-enricher] platform attribute contributor threw; continuing without it",e),{}}}shouldSample(){const e=this.config.getConfig()?.options?.eventSampleRate;return!(void 0!==e&&!Number.isNaN(e))||Math.random()<=e}formatEventObject(e,t="",n=new WeakSet,r=0){try{return r>=10?{[t||"depth_limit"]:"[Depth Limit]"}:S(e)?{[t||"dom_node"]:`[${e?.constructor?.name||"DomNode"}]`}:n.has(e)?{[t||"circular_reference"]:"[Circular]"}:(n.add(e),Object.entries(e).reduce(((e,[i,s])=>{const o=t?`${t}.${i}`:i;return"object"==typeof s&&null!==s?Array.isArray(s)?e[o]=s.map(((e,t)=>"object"==typeof e&&null!==e?this.formatEventObject(e,`${o}[${t}]`,n,r+1):e)):Object.assign(e,this.formatEventObject(s,o,n,r+1)):e[o]=s,e}),{}))}catch(e){return this.logger.log("[event-enricher.formatEventObject] Error formatting event object",e),{[t||"format_error"]:"[Error formatting object]"}}finally{n.delete(e)}}enrich(e){const t=b(Date.now()),n=this.idGenerator.generateId(),r=e.spanId||this.idGenerator.generateSpanId(),i=e.traceId||this.idGenerator.generateTraceId(),s=e.parentSpanId||"",o=this.formatEventObject(e.attributes||{}),a=this.getPlatformAttributes(),l={type:e.type,id:n,spanId:r,parentSpanId:s,traceId:i,attributes:{...o,...a}};return e.span_name&&(l.span_name=e.span_name),"network"===e.type?(l.start_timestamp=e.timestamp||t,l.end_timestamp=e?.end_timestamp):l.timestamp=t,l}};function Je(e,t){if(!t)return{data:(new TextEncoder).encode(e),isCompressed:!1};try{const t=i.strToU8(e);return{data:i.gzipSync(t),isCompressed:!0}}catch(t){return{data:(new TextEncoder).encode(e),isCompressed:!1}}}var Ze=class{constructor(e){this.logger=l.getInstance(),this.config=e.config,this.sendBatch=e.sendBatch,this.encodeAsync=e.encodeAsync??null}compressAsync(e,t){if(!this.encodeAsync)return Promise.resolve(Je(e,t));try{return this.encodeAsync(e,t).catch((()=>Je(e,t)))}catch{return Promise.resolve(Je(e,t))}}async send(e,{lifecycle:t=!1}={}){const n=this.config.getConfig();if(n)try{n?.options?.debug&&this.logger.log("Sending batch:",e,{groundcoverIgnore:!0});const r=n.apiKey,i=this.buildEndpoint();if(!r)return void this.logger.log("No API key found");const s=JSON.stringify(e),o=!!n?.options?.transport?.compression,{data:a,isCompressed:l}=t?Je(s,o):await this.compressAsync(s,o),c={"Content-Type":"application/json",apikey:r,"Content-Encoding":l?"gzip":""};this.sendBatch(i,{method:"POST",headers:c,body:a}).catch((e=>{this.logger.log("Network error while sending batch:",e,{groundcoverIgnore:!0})}))}catch(e){n?.options?.debug&&this.logger.log("Failed to send batch:",e,{groundcoverIgnore:!0})}}buildEndpoint(){const e=this.config.getConfig();return e?`${e.getEndpoint()}/json/rum`:""}},et=class{constructor(e){this.storage=e}getItem(e){try{return this.storage?.getItem(e)??null}catch(e){return h(e),null}}setItem(e,t){try{this.storage?.setItem(e,t)}catch(e){h(e)}}removeItem(e){try{this.storage?.removeItem(e)}catch(e){h(e)}}getNumericItem(e,t=0){const n=this.getItem(e);if(null===n)return t;const r=Number(n);return Number.isFinite(r)?r:t}},tt=class{constructor(e){this.sessionId=null,this.sessionStartTime=null,this.lastActivityMs=null,this.lastPersistedActivityMs=0,this.storage=e.storage,this.getMaxDurationMs=e.getMaxDurationMs??null}getSessionId(){if(this.sessionId)return this.sessionId;return this.storage.getItem("gcId")||""}setSessionId(e){this.sessionId=e,this.storage.setItem("gcId",e)}getSessionStartTime(){return this.sessionStartTime?this.sessionStartTime:this.storage.getNumericItem("gcStartTime",0)}setSessionStartTime(e){this.sessionStartTime=e,this.storage.setItem("gcStartTime",String(e)),this.lastActivityMs=null,this.lastPersistedActivityMs=0,this.storage.removeItem("gcLastActivity")}getLastActivityMs(){return null!==this.lastActivityMs?this.lastActivityMs:this.storage.getNumericItem("gcLastActivity",0)}setLastActivityMs(e){this.lastActivityMs=e,e-this.lastPersistedActivityMs>=6e4&&this.persistLastActivity()}persistLastActivity(){null!==this.lastActivityMs&&(this.lastPersistedActivityMs=this.lastActivityMs,this.storage.setItem("gcLastActivity",String(this.lastActivityMs)))}isSessionInactive(e=Date.now()){const t=this.getLastActivityMs(),n=t>0?t:w(this.getSessionStartTime());return n>0&&e-n>=xe}hasUserActivity(){return this.getLastActivityMs()>0}clearSamplingDecision(){this.storage.removeItem(qe)}clearSessionState(){this.sessionId=null,this.sessionStartTime=null,this.lastActivityMs=null,this.lastPersistedActivityMs=0,this.storage.removeItem("gcId"),this.storage.removeItem("gcStartTime"),this.storage.removeItem("gcLastActivity"),this.clearSamplingDecision()}getSessionMaxDuration(){return this.getMaxDurationMs?.()??Le}getSessionElapsedMs(e=Date.now()){const t=this.getSessionStartTime();return t?e-w(t):0}isSessionExpired(e=Date.now()){return this.getSessionElapsedMs(e)>=this.getSessionMaxDuration()}};function nt(){const e=navigator.userAgent;let t="unknown",n="unknown";const r=navigator.platform||"unknown",i=/Mobile|Android|iPhone|iPad|iPod/i.test(e);return/Edg/.test(e)?(t="Edge",n=e.match(/Edg\/([\d.]+)/)?.[1]||n):/Chrome/.test(e)&&!/Chromium/.test(e)?(t="Chrome",n=e.match(/Chrome\/([\d.]+)/)?.[1]||n):/Firefox/.test(e)?(t="Firefox",n=e.match(/Firefox\/([\d.]+)/)?.[1]||n):/Safari/.test(e)&&!/Chrome/.test(e)?(t="Safari",n=e.match(/Version\/([\d.]+)/)?.[1]||n):/Trident/.test(e)?(t="Internet Explorer",n=/rv:([^)]+)\)/i.test(e)?e.match(/rv:([^)]+)\)/i)?.[1]||n:e.match(/MSIE ([^;]+)/)?.[1]||n):/OPR/.test(e)&&(t="Opera",n=e.match(/OPR\/([\d.]+)/)?.[1]||n),{userAgent:e,browser:{name:t,version:n,platform:r,language:navigator.language,mobile:i}}}var rt,it=["navigation","dom.event"],st=class{constructor(e){this.core=null,this.hideWired=!1,this.hideHandler=()=>{try{if("undefined"==typeof document||"hidden"!==document.visibilityState)return;this.core?.session.persistLastActivity(),this.core?.pool.flush({lifecycle:!0})}catch(e){h(e)}},this.logger=l.initialize({debug:e.options?.debug||!1,prefix:"[groundcover]"}),this.logger.log("[session-manager] initialize called"),this.storage=new et(function(){try{return void 0!==globalThis.sessionStorage?globalThis.sessionStorage:null}catch{return null}}()),this.idGenerator=new d;const t=new $e;t.initialize(e);const n=new tt({storage:this.storage,getMaxDurationMs:()=>t.getConfig()?.options?.sessionMaxDuration});!function({session:e,idGenerator:t,providedSessionId:n}){const r=l.getInstance();try{const i=e.getSessionId();n&&n!==i?(e.setSessionId(n),e.setSessionStartTime(b(Date.now())),e.clearSamplingDecision(),r.log("[session-bootstrap] using provided sessionId:",n)):n?(e.setSessionId(n),r.log("[session-bootstrap] continuing provided sessionId:",n)):i||e.setSessionId(t.generateId());const s=6e4,o=Date.now(),a=w(e.getSessionStartTime());if(a>0&&o-a>=-s){if(e.isSessionExpired(o)||e.isSessionInactive(o)){const n=e.isSessionExpired(o)?"persisted session past cap":"inactivity gap across reload",i=e.getSessionId(),s=t.generateId();e.setSessionId(s),e.setSessionStartTime(b(o)),e.clearSamplingDecision(),r.log(`[session-bootstrap] init-time rotation: ${n}`,{from:i,to:s})}}else e.setSessionStartTime(b(o))}catch(e){r.log("[session-bootstrap] session bootstrap failed:",e)}}({session:n,idGenerator:this.idGenerator,providedSessionId:e.sessionId});if(!function({storage:e,sessionSampleRate:t}){const n=l.getInstance();if(void 0===t||!Number.isFinite(t)||1===t)return!0;const r=t;try{const t=e.getItem(qe);if(t){const e="1"===t;return n.log("[session-bootstrap] using stored sampling decision:",e),e}const i=Math.random()<r;return e.setItem(qe,i?"1":"0"),n.log("[session-bootstrap] stored new sampling decision:",i),i}catch(e){n.log("[session-bootstrap] storage access failed:",e);const t=Math.random()<r;return n.log("[session-bootstrap] using fallback sampling decision:",t),t}}({storage:this.storage,sessionSampleRate:e.options?.sessionSampleRate}))return void this.logger.log("[session-manager] session is not sampled");const r=new Ze({config:t,sendBatch:(e,t)=>fetch(e,t),encodeAsync:(e,t)=>Ie.withFallback((n=>n.encodeBatch(e,t)),(()=>Je(e,t)),"transporter")}),i=new Ge({config:t,session:n,transporter:r,getDeviceAttributes:nt,eventsToSkipFlush:it}),s=function(e){return()=>{let t="";try{t=v?.document?.title||""}catch(e){h(e)}try{const n=v?.location;if(!n)return{path:"",url:"",title:t};const r=n.hash&&!n.hash.match(/^#[a-z0-9-]+$/i)&&n.hash.startsWith("#/"),i=r?n.hash:n.pathname,s=e.getPrivacy(),o=s.shouldMaskNetworkQueryParams,a={sensitiveKeys:s.sensitiveKeys,redact:s.redact,kind:"query"};return{path:o&&r?z(i,a):i,url:o?z(n.href,a):n.href,title:t}}catch(e){return h(e),{path:"",url:"",title:t}}}}(t),o=new Ve({config:t,enrichAttributes:()=>({location:s()}),idGenerator:this.idGenerator}),a=new Pe({config:t,session:n,eventsPool:i,enricher:o});try{i.initialize(),Ie.getInstance(),this.wireHideHandler(),a.instrument(),this.core={config:t,session:n,pool:i,instrumentation:a}}catch(e){this.logger.log("[session-manager] initialization failed — tearing down partial startup:",e);try{a.uninstrument()}catch(e){h(e)}throw i.destroy(),this.unwireHideHandler(),this.core=null,e}}wireHideHandler(){if(!this.hideWired&&"undefined"!=typeof document){this.hideWired=!0;try{document.addEventListener("visibilitychange",this.hideHandler)}catch(e){h(e)}}}unwireHideHandler(){if(this.hideWired&&"undefined"!=typeof document){this.hideWired=!1;try{document.removeEventListener("visibilitychange",this.hideHandler)}catch(e){h(e)}}}identifyUser(e){this.logger.log("[session-manager] identifyUser called"),this.core?this.core.config.updateConfig({user:e}):this.logger.log("[session-manager] cannot identify user: SDK not initialized")}updateConfig(e){if(!this.core)return void this.logger.log("[session-manager] cannot update config: SDK not initialized");this.core.config.updateConfig(e);const t=e.options,n=!!t&&"privacy"in t,r=!!t&&"object"==typeof t.replay&&null!==t.replay&&"blockedSelectors"in t.replay;(n||r)&&this.core.instrumentation.restartReplayForConfigChange()}sendCustomEvent(e){this.core?this.core.instrumentation.sendCustomEvent(e):this.logger.log("[session-manager] cannot send custom event: SDK not initialized")}startNavigation(e){this.core?this.core.instrumentation.startNavigation(e):this.logger.log("[session-manager] cannot start navigation: SDK not initialized")}endNavigation(e){this.core?this.core.instrumentation.endNavigation(e):this.logger.log("[session-manager] cannot end navigation: SDK not initialized")}captureException(e,t){this.core?this.core.instrumentation.captureException(e,t):this.logger.log("[session-manager] Cannot capture exception: SDK not initialized")}emitLog(e,t,n){this.core?this.core.instrumentation.emitLog(e,t,n):this.logger.log("[session-manager] Cannot emit log: SDK not initialized")}getSessionId(){return this.core?this.core.session.getSessionId():(this.logger.log("[session-manager] cannot get session ID: SDK not initialized"),"")}async setSessionId(e){if(this.logger.log("[session-manager] setSessionId called"),this.core)try{this.core.instrumentation.flushPendingReplay(),await this.core.pool.flushSync();const t=e||this.idGenerator.generateId();this.core.session.setSessionId(t),this.core.session.setSessionStartTime(b(Date.now())),this.logger.log("[session-manager] session ID set successfully:",t)}catch(e){this.logger.log("[session-manager] failed to set session ID:",e)}else this.logger.log("[session-manager] cannot set session ID: SDK not initialized")}startReplayRecording(){this.core?this.core.instrumentation.startReplayRecording():this.logger.log("[session-manager] cannot start replay recording: SDK not initialized")}stopReplayRecording(){this.core?this.core.instrumentation.stopReplayRecording():this.logger.log("[session-manager] cannot stop replay recording: SDK not initialized")}handoffForReinit(){const e=this.core;if(!e)return;const t=e.session.hasUserActivity();e.instrumentation.uninstrument(),t&&e.pool.flush({lifecycle:!0}),e.pool.destroy(),this.unwireHideHandler(),this.core=null}destroy(){const e=this.core;e&&(e.instrumentation.uninstrument(),e.pool.destroy(),this.unwireHideHandler(),Ie.getInstance().terminate(),e.session.clearSessionState(),this.core=null)}},ot=new class{constructor(e){this.manager=e}emit(e,t,n){this.manager&&this.manager.emitLog(t,e,n)}log(e,t){this.emit("log",e,t)}info(e,t){this.emit("info",e,t)}warn(e,t){this.emit("warn",e,t)}error(e,t){this.emit("error",e,t)}debug(e,t){this.emit("debug",e,t)}trace(e,t){this.emit("trace",e,t)}};var at={init:function(e){try{rt?.handoffForReinit(),rt=new st({cluster:e?.cluster||"",environment:e?.environment||"",namespace:e?.namespace,releaseId:e?.releaseId,dsn:e?.dsn||"",appId:e?.appId||"",user:e?.user,apiKey:e?.apiKey||"",options:e?.options,sessionId:e?.sessionId}),ot.manager=rt}catch(e){h(e)}},identifyUser:function(e){rt?rt.identifyUser(e):console.warn("[groundcover] identifyUser: groundcover is not initialized. please call init() first")},sendCustomEvent:function(e){rt&&rt.sendCustomEvent(e)},captureException:function(e,t){rt&&rt.captureException(e,t)},logger:ot,updateConfig:function(e){if(rt)try{rt.updateConfig(e)}catch(e){h(e)}},startNavigation:function(e){rt?rt.startNavigation(e):console.warn("[groundcover] startNavigation: groundcover is not initialized. please call init() first")},endNavigation:function(e){rt?rt.endNavigation(e):console.warn("[groundcover] endNavigation: groundcover is not initialized. please call init() first")},getSessionId:function(){return rt?rt.getSessionId():(console.warn("[groundcover] getSessionId: groundcover is not initialized. please call init() first"),"")},setSessionId:async function(e){if(rt)try{await rt.setSessionId(e)}catch(e){console.error("[groundcover] setSessionId: failed to set session ID:",e)}else console.warn("[groundcover] setSessionId: groundcover is not initialized. please call init() first")},startReplayRecording:function(){rt?rt.startReplayRecording():console.warn("[groundcover] startReplayRecording: groundcover is not initialized. please call init() first")},stopReplayRecording:function(){rt?rt.stopReplayRecording():console.warn("[groundcover] stopReplayRecording: groundcover is not initialized. please call init() first")}};if("undefined"!=typeof window&&!window.groundcover)try{window.groundcover=at}catch(e){console.warn("[groundcover] Failed to expose groundcover on window:",e)}var lt=at;module.exports=lt;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import e from"error-stack-parser";import{onCLS as t,onLCP as n,onFCP as r,onTTFB as i,onINP as s}from"web-vitals";import{record as o}from"rrweb";import{pack as a}from"@rrweb/packer";import{strToU8 as l,gzipSync as c}from"fflate";var h=console.log.bind(console),d=class e{constructor(){this.isDebugEnabled=!1,this.prefix=""}static initialize(t){return e.instance||(e.instance=new e),t&&(e.instance.isDebugEnabled=t.debug??!1,e.instance.prefix=t.prefix??""),e.instance}static getInstance(t){return e?.instance||e.initialize(t)}formatMessage(e){return`[${(new Date).toISOString()}] ${this.prefix} ${e}`}log(e,...t){this.isDebugEnabled&&h(this.formatMessage(e),...t)}updateConfig(e){this.isDebugEnabled=e.debug??this.isDebugEnabled,this.prefix=e.prefix??this.prefix}},u=d.getInstance();function g(e){u.log("[error-handler.handleError] called",e,{groundcoverIgnore:!0})}var p=class{constructor(){this.generateTraceId=function(){for(let e=0;e<16;e++)f[e]=Math.floor(16*Math.random())+48,f[e]>=58&&(f[e]+=39);return v+String.fromCharCode.apply(null,f.slice(0,16))},this.generateSpanId=m(8),this.generateId=m(16)}},f=Array(32);function m(e){return function(){for(let t=0;t<2*e;t++)f[t]=Math.floor(16*Math.random())+48,f[t]>=58&&(f[t]+=39);return String.fromCharCode.apply(null,f.slice(0,2*e))}}var v="0000000000000000";function y({text:e,maxLength:t=1e4,ellipsis:n=""}){if(null==e)return"";const r="string"==typeof e?e:String(e);return r.length<=t?r:r.substring(0,t)+n}function b(e){return(e||"").replace(/\s+/g," ").trim()}var w=globalThis,E=1e6;function S(e){return e*E}function k(e){return e/E}function T(e){if(null==e||"object"!=typeof e)return!1;try{return"number"==typeof e.nodeType&&"string"==typeof e.nodeName&&"ownerDocument"in e}catch{return!1}}var I="[REDACTED]",R=["authorization","cookie","set-cookie"],L=/(token|key|secret|passwd|password|auth|bearer|credential)/i,M=/(token|secret|passwd|password|api[_-]?key|access[_-]?key|write[_-]?key|auth|bearer|credential|cvv|ssn|credit[_-]?card|card[_-]?number)/i,x=new Set(["code","state","session_state","id_token","access_token","refresh_token","token"]),q=1e5;function A(e,t){if(!e)return!1;if(M.test(e))return!0;if(t?.length){const n=e.toLowerCase();return t.some((e=>e&&n.includes(e.toLowerCase())))}return!1}function N(e,t){return x.has(e.toLowerCase())||A(e,t)}function C(e){return e.includes("-")&&L.test(e)}function H(e,t){return A(e,t)||C(e)}function z(e,t){const n=e.sensitive?I:e.value;if(!t)return n;try{const r=t(e);return void 0===r?n:r}catch(e){return g(e),n}}function _(e,t={}){if(!e)return e;try{return e.split("&").map((e=>{const n=e.indexOf("=");if(-1===n)return e;const r=e.slice(0,n),i=e.slice(n+1);let s=r;try{s=decodeURIComponent(r)}catch{}let o=i;try{o=decodeURIComponent(i)}catch{}const a=N(s,t.sensitiveKeys),l=z({key:s,value:o,path:[s],kind:t.kind??"query",sensitive:a},t.redact);return l===o?e:`${r}=${encodeURIComponent(null===l?"":String(l))}`})).join("&")}catch{return e}}function P(e,t){const n=e.indexOf("?");return-1===n?e:`${e.slice(0,n)}?${_(e.slice(n+1),t)}`}function D(e,t={}){if(!e)return e;const n={...t,kind:t.kind??"query"},r=e.indexOf("#"),i=-1===r?e:e.slice(0,r),s=-1===r?"":e.slice(r+1),o=P(function(e){return e.replace(/^([a-zA-Z][\w+.-]*:\/\/)[^/?#@]*@/,((e,t)=>`${t}${I}@`))}(i),n);return-1===r?o:`${o}#${P(s,n)}`}function F(e,t,n,r,i,s){const o=!!e&&A(e,r.sensitiveKeys);if(null!==t&&"object"==typeof t){if(o||i>8)return I;if(T(t))return I;if(s.has(t))return I;s.add(t);try{if(Array.isArray(t))return t.map((t=>F(e,t,n,r,i+1,s)));const o={};for(const[e,a]of Object.entries(t))o[e]=F(e,a,[...n,e],r,i+1,s);return o}catch(e){return g(e),I}finally{s.delete(t)}}return z({key:e,value:t,path:n,kind:r.kind??"log",sensitive:o},r.redact)}function O(e,t={}){if(!e)return e;if(e.length>q)return`${O(e.slice(0,q),t)}…`;let n=e;try{n=n.replace(/"([\w.-]{1,64})"\s*:\s*("(?:[^"\\]|\\.)*"|[^\s,}\]]+)/g,((e,n)=>H(n,t.sensitiveKeys)?`"${n}":"${I}"`:e)),n=n.replace(/([\w.-]{1,64})=([^\s&,;?]+)/g,((e,n)=>function(e,t){return N(e,t)||C(e)}(n,t.sensitiveKeys)?`${n}=${I}`:e)),n=n.replace(/([\w.-]{1,64}):[ \t]*([^\n,;&]{1,4096})/g,((e,n)=>H(n,t.sensitiveKeys)?`${n}: ${I}`:e))}catch(t){g(t),n=e}if(t.redact)try{const n=t.redact({key:"",value:e,path:[],kind:t.kind??"log",sensitive:!1});if(void 0!==n)return null===n?"":String(n)}catch(e){g(e)}return n}function B(e,t={}){try{const n=F("",e,[],t,0,new WeakSet);return null!==n&&"object"==typeof n?n:{}}catch(e){return g(e),{}}}function j(e,t,n){if(!e.shouldMaskLogs)return{message:t,attributes:n};const r={sensitiveKeys:e.sensitiveKeys,redact:e.redact,kind:"log"};return{message:O(t,r),attributes:n?B(n,r):n}}var K=class{constructor(e){this.logger=d.getInstance(),this.config=e.config,this.pool=e.pool,this.enricher=e.enricher}sendCustomEvent(e){this.logger.log("[manual-event-emitter.sendCustomEvent] called",e);try{const t=this.enricher.enrich({type:"custom",attributes:{custom_event_name:e?.event,custom_event_attributes:e?.attributes}});this.pool.addEvent(t)}catch(e){g(e)}}emitLog(e,t,n){this.logger.log("[manual-event-emitter.emitLog] called",{message:e,level:t,attributes:n});try{const r={...n||{}};delete r.message,delete r.level,delete r.location;const{message:i,attributes:s}=j(this.config.getPrivacy(),e,r),o=this.enricher.enrich({type:"log",attributes:{...s,message:y({text:i}),level:t}});this.pool.addEvent(o)}catch(e){g(e)}}},U=class{constructor(e){this.logger=d.getInstance(),this.config=e.config,this.eventsPool=e.eventsPool,this.enricher=e.enricher}};function X(e){return Array.isArray(e)?e.filter((e=>"string"==typeof e)).map((e=>e.trim())).filter((e=>e.length>0)):[]}function Y(e){const t=e.getPrivacy(),n=e.getConfig()?.providedOptions?.privacy;return{...t,maskSelectors:X(n?.maskSelectors)}}var $="undefined"!=typeof Element?Object.getOwnPropertyDescriptor(Element.prototype,"tagName")?.get:void 0;function W(e,t){try{return e.getAttribute(t)||""}catch{return""}}function Q(e){try{const t=$?.call(e);return"string"==typeof t?t:""}catch{return""}}function G(e,t){try{return null!=e.closest?.(t)}catch{return!1}}function V(e,t){return!!e&&("password"===e.type||function(e){return["id","name","class","aria-label","placeholder"].map((t=>W(e,t))).filter(Boolean)}(e).some((e=>A(e,t))))}function J(e,t){return"allow"!==t.level&&(!!e&&(!!G(e,"[data-private]")||(!(!t.maskSelectors.length||!t.maskSelectors.some((t=>G(e,t))))||("mask-all"===t.level||function(e){const t=Q(e).toLowerCase();return"input"===t||"textarea"===t||"select"===t}(e)&&V(e,t.sensitiveKeys)))))}var Z={role:"",accessibleName:"",ariaLabel:"",title:"",alt:"",placeholder:"",name:"",inputType:"",href:""},ee=["button","a","input","select","textarea","label","summary",'[role~="button"]','[role~="link"]','[role~="menuitem"]','[role~="menuitemcheckbox"]','[role~="menuitemradio"]','[role~="tab"]','[role~="checkbox"]','[role~="radio"]','[role~="switch"]','[role~="option"]','[role~="treeitem"]','[role~="slider"]','[role~="spinbutton"]','[role~="combobox"]','[role~="textbox"]','[role~="searchbox"]'].join(", "),te=[ee,"li","option","tr","td","th",'[role~="listitem"]','[role~="row"]','[role~="gridcell"]','[role~="cell"]'].join(", ");function ne(e){return!!e&&1===e.nodeType}function re(e){const t=Q(e).toLowerCase();return"body"===t||"html"===t}function ie(e){return y({text:e,maxLength:255})}function se(e){return y({text:e,maxLength:99,ellipsis:"…"})}function oe(e){const t=b(W(e,"role"));return t?t.split(" ")[0]??t:function(e){switch(Q(e).toLowerCase()){case"a":return W(e,"href")?"link":"";case"button":return"button";case"input":switch(W(e,"type").toLowerCase()){case"checkbox":return"checkbox";case"radio":return"radio";case"submit":case"button":case"reset":return"button";case"range":return"slider";case"number":return"spinbutton";default:return"textbox"}case"textarea":return"textbox";case"select":return"combobox";case"img":return"img";case"nav":return"navigation";case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return"heading";default:return""}}(e)}function ae(e){if(!ne(e))return"";try{if(re(e))return"";if(function(e){try{return e.querySelectorAll(te).length>=2}catch{return!1}}(e))return"";const t=b(e.textContent||"");return t?t.length>1e3?"":y({text:t,maxLength:255}):""}catch{return""}}function le(e){return W(e,"aria-labelledby").split(/\s+/).filter(Boolean).slice(0,5)}function ce(e,t){if(re(e))return"";const n=function(e){const t=[];for(const n of le(e))try{const e=ae(document.getElementById(n));e&&t.push(e)}catch{}return b(t.join(" "))}(e);if(n)return se(n);const r=b(W(e,"aria-label"));if(r)return se(r);const i=b(W(e,"alt"));if(i)return se(i);if(function(e){const t=Q(e).toLowerCase();if("button"===t)return!0;if("input"!==t)return!1;const n=W(e,"type").toLowerCase();return"submit"===n||"button"===n||"reset"===n}(e)){const t=b(W(e,"value"));if(t)return se(t)}const s=t??ae(e);if(s)return se(s);const o=b(W(e,"title"));if(o)return se(o);const a=b(W(e,"placeholder"));return a?se(a):""}function he(e,t){if("allow"===t.level)return!1;try{return!!e.querySelector("[data-private]")||t.maskSelectors.some((t=>{try{return null!=e.querySelector(t)}catch{return!1}}))}catch{return!1}}var de=class extends U{constructor(){super(...arguments),this.eventHandlers=[],this.capturedEvents=["click","change","keydown","select","submit"],this.getShouldMaskText=e=>J(e.target,Y(this.config)),this.getKeyCode=(e,t)=>e instanceof KeyboardEvent&&e.code&&"Dead"!==e.key?t?"*":e.key:"",this.getCoordinates=e=>{if({mouseup:!0,mousedown:!0,mousemove:!0,mouseover:!0}[e.type]){const{clientX:t,clientY:n}=e||{};return{clientX:t,clientY:n}}return null}}initialize(){try{this.logger.log("[dom-events-listener.initialize] called"),this.capturedEvents?.forEach((e=>{const t=e=>{try{this.handleEvent(e)}catch(e){g(e)}};this.eventHandlers.push({type:e,handler:t}),w?.addEventListener(e,t)}))}catch(e){g(e)}}destroy(){this.eventHandlers.forEach((({type:e,handler:t})=>{global?.removeEventListener?.(e,t)})),this.eventHandlers=[]}handleEvent(e){try{if(!this.enricher.shouldSample())return;const t=this.buildEvent(e);this.queueEvent(t)}catch(e){g(e)}}buildEvent(e){const t=this.getCoordinates(e),n=e.target,r=function(e){if(!ne(e))return null;try{return e.closest(ee)}catch{return null}}(n)??n,i=Y(this.config),s=this.getShouldMaskText({target:n||null})||!!r&&(he(r,i)||function(e,t){if("allow"===t.level)return!1;try{for(const n of le(e)){const e=document.getElementById(n);if(e&&ae(e)&&(J(e,t)||he(e,t)))return!0}}catch{}return!1}(r,i)),o=r?this.generateSelector(r,s?{priorityAttributes:["id","class","name","type"]}:{}):"",a=this.getKeyCode(e,s),l=ae(r),c=function(e,t){if(!ne(e))return{...Z};try{return{role:ie(oe(e)),accessibleName:ce(e,t),ariaLabel:ie(b(W(e,"aria-label"))),title:ie(b(W(e,"title"))),alt:ie(b(W(e,"alt"))),placeholder:ie(b(W(e,"placeholder"))),name:ie(W(e,"name")),inputType:ie(W(e,"type")),href:ie(W(e,"href"))}}catch{return{...Z}}}(r,l),h=i.shouldMaskNetworkQueryParams?D(c.href,{sensitiveKeys:i.sensitiveKeys,redact:i.redact,kind:"query"}):c.href,d=e=>s&&e?"*":e;this.logger.log("[dom-events-listener.buildEvent] called");const u={dom_event_selector:o,dom_event_key_code:a,dom_event_type:e.type,dom_event_coordinates:t||{clientX:0,clientY:0},dom_event_target:{id:W(r,"id"),tagName:Q(r),className:W(r,"class"),text:s?"*":l,role:c.role,accessibleName:d(c.accessibleName),ariaLabel:d(c.ariaLabel),title:d(c.title),alt:d(c.alt),placeholder:d(c.placeholder),name:c.name,inputType:c.inputType,href:d(h)}};return this.enricher.enrich({type:"dom.event",attributes:u})}queueEvent(e){try{this.logger.log("[dom-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){g(e)}}generateSelector(e,t={}){if(!e||!e.nodeType||e.nodeType!==Node.ELEMENT_NODE)return"";const n=t.root||document.body||document.documentElement,r=t.maxAttempts||10,i=t.priorityAttributes||["id","class","name","aria-label","type","title","alt"];if("html"===Q(e).toLowerCase())return"html";let s="",o=0,a=e;const l=[];for(;a&&a!==n&&a!==document.documentElement&&o<r;){let e=Q(a).toLowerCase();try{const t=a.getAttribute("id");if(t&&/^[a-zA-Z][\w-]*$/.test(t))return`#${t}`;if(a.classList?.length){const t=Array.from(a.classList).filter((e=>e&&"string"==typeof e)).map((e=>`.${e}`));t.length&&(e+=t.join(""))}for(const t of i)if("id"!==t&&"class"!==t)try{const n=a.getAttribute(t);n&&(e+=`[${t}="${n.replace(/"/g,'\\"')}"]`)}catch(e){}}catch(t){e=Q(a).toLowerCase()||"*"}l.unshift(e||"*"),s=l.join(" > ");try{if(1===n.querySelectorAll(s).length)return s}catch(e){l.shift(),s=l.join(" > ")}try{a=a.parentElement}catch(e){break}o++}return s||"*"}},ue=["log","info","warn","error","debug","assert","trace"],ge=class extends U{constructor(){super(...arguments),this.originalConsole=null,this.patchedConsole=null,this.isInitialized=!1}initialize(){if(!this.isInitialized)try{this.originalConsole=this.captureConsoleMethods();const e={};ue.forEach((t=>{if(!(t in console))return;const n=(...e)=>{try{this.handleEvent(e,t)}catch(e){g(e)}finally{this.originalConsole?.[t]&&this.originalConsole[t](...e)}};console[t]=n,e[t]=n})),this.patchedConsole=e,this.isInitialized=!0}catch(e){g(e)}}destroy(){try{if(!this.isInitialized)return;ue.forEach((e=>{this.originalConsole?.[e]&&this.patchedConsole?.[e]&&console[e]===this.patchedConsole[e]&&(console[e]=this.originalConsole[e])})),this.patchedConsole=null,this.isInitialized=!1}catch(e){g(e)}}handleEvent(e,t){try{if(!this.enricher.shouldSample())return;const n=Array.isArray(e)?e:[e],r=this.formatMessage(n,t);if(!r||r?.includes("groundcoverIgnore"))return;const i=this.extractAttributes(n),s=this.buildEvent({message:r,level:t,attributes:i});this.queueEvent(s)}catch(e){g(e)}}buildEvent({message:e,level:t,attributes:n}){const{message:r,attributes:i}=j(this.config.getPrivacy(),e,n);return this.enricher.enrich({type:"log",attributes:{...i,message:y({text:r}),level:t}})}queueEvent(e){try{this.logger.log("[logs-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){g(e)}}extractAttributes(e){if(Array.isArray(e)&&0!==e.length)try{const t={};for(const n of e)null!==n&&"object"==typeof n&&"[object Object]"===Object.prototype.toString.call(n)&&Object.assign(t,n);return delete t.message,delete t.level,delete t.location,t}catch(e){return void g(e)}}formatMessage(e,t){if(!Array.isArray(e))return String(e);try{return e.map((e=>{if(void 0===e)return"undefined";if(null===e)return"null";if("object"==typeof e){if(e instanceof Error)try{return"error"===t&&e.stack||e.toString()}catch{try{const t={name:e.name,message:e.message,stack:e.stack};return JSON.stringify(t)}catch{return Object.prototype.toString.call(e)}}try{return JSON.stringify(e)}catch{return Object.prototype.toString.call(e)}}return String(e)})).join(" ")}catch(e){return g(e),"[Error formatting console message]"}}captureConsoleMethods(){const e={};try{ue.forEach((t=>{console&&"function"==typeof console[t]&&(e[t]=console[t].bind(console))}))}catch(e){g(e)}return e}};function pe(e){try{if(null==e)return"";if("string"==typeof e)return e;if("undefined"!=typeof FormData&&e instanceof FormData)return"[form data]";if("undefined"!=typeof Blob&&e instanceof Blob)return"[blob data]";if(e instanceof ArrayBuffer)return"[arraybuffer data]";if(ArrayBuffer.isView(e))return"[arraybuffer data]";if("undefined"!=typeof ReadableStream&&e instanceof ReadableStream)return"[stream data]";if(9===e?.nodeType)return"[document data]";if("undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams)try{return e.toString()}catch{return"[unreadable body]"}return Array.isArray(e)||"object"==typeof e?JSON.stringify(e):String(e)}catch(e){return g(`Failed to format body: ${e}`),"[unreadable body]"}}var fe="[request body too large]",me="[request body unavailable]",ve="[response body too large]",ye="[response body unavailable]",be="[unreadable response body]",we="[form data]",Ee="[binary data]",Se=class extends U{constructor(){super(...arguments),this.maxBodyLength=5e3,this.requestBodyReadTimeoutMs=3e3,this.responseBodyReadTimeoutMs=3e3,this.idGenerator=new p,this.patched=null,this.active=!1,this.handleEvent=e=>{try{if(this.shouldIgnoreRequest(e.url))return;if(!this.enricher.shouldSample())return;const t=this.buildEvent(e);this.queueEvent(t)}catch(e){g(e)}},this.buildEvent=e=>{let t=e.url,n=e.url;this.logger.log("[network-events-listener.buildEvent] called",{event:e});const r=this.config.getPrivacy(),i={sensitiveKeys:r.sensitiveKeys,redact:r.redact,kind:"query"};try{t=new URL(e.url).pathname}catch(s){n=new URL(e.url,globalThis.location.href).href,r.shouldMaskNetworkQueryParams&&(t=D(t,i))}r.shouldMaskNetworkQueryParams&&(n=D(n,i)),this.logger.log("[network-events-listener.buildEvent] fullUrl",{fullUrl:n});const s=this.formatHeaders(e.request.headers),o=this.formatHeaders(e.response.headers),a=e.method?.toUpperCase()||"UNKNOWN",{traceId:l,spanId:c}=this.extractTraceIds(e.request.headers),h=(e,t)=>r.shouldMaskNetworkBodies?function(e,t={}){if(!e)return e;const n=e.trim();if(n.length<=q&&(n.startsWith("{")||n.startsWith("[")))try{const e=JSON.parse(n);return JSON.stringify(F("",e,[],t,0,new WeakSet))}catch{}return e.includes("=")&&!e.includes("{")?_(e,t):O(e,t)}(e,{sensitiveKeys:r.sensitiveKeys,redact:r.redact,kind:t}):e,d=y({text:h(e.request.body,"request-body"),maxLength:this.maxBodyLength}),u=y({text:h(e.response.body,"response-body"),maxLength:this.maxBodyLength}),g={type:"HTTP",operation:{name:a},resource_name:t,status:e.status?.toString(),subType:a,url:{full:n},http:{route:t,path:t,method:e.method,status:e.status?.toString(),request:{headers:s,method:e.method},response:{headers:o,status_code:e.status?.toString()}},error:e?.error?.type?{type:e.error?.type||"Unknown error"}:void 0,gc:{request:{body:d},response:{body:u}}},p={type:"network",timestamp:e?.timestamp&&!Number.isNaN(e.timestamp)?S(e.timestamp):void 0,end_timestamp:e?.end_time&&!Number.isNaN(e.end_time)?S(e.end_time):void 0,span_name:`${e.method} ${t}`,attributes:g};return l&&(p.traceId=l),c&&(p.spanId=c),this.enricher.enrich(p)}}async readBodyStreamCapped(e,t={}){if(!e)return"";const{timeoutMs:n,overflowPlaceholder:r,timeoutPlaceholder:i}=t,s=e.getReader(),o=new TextDecoder;let a,l="",c=0,h=!1,d=!1;const u=null!=n?new Promise((e=>{a=setTimeout((()=>e({timedOut:!0})),n)})):void 0;try{for(;;){const e=u?await Promise.race([s.read(),u]):await s.read();if("timedOut"in e){d=!0;break}const{done:t,value:n}=e;if(t)break;if(c+n.byteLength>=this.maxBodyLength){const e=n.subarray(0,this.maxBodyLength-c);l+=o.decode(e,{stream:!0}),h=!0;break}c+=n.byteLength,l+=o.decode(n,{stream:!0})}return l+=o.decode(),d&&null!=i?i:h&&null!=r?r:l}finally{clearTimeout(a);try{s.cancel()?.catch((()=>{}))}catch{}}}mimeEssence(e){return(e.split(";")[0]||"").trim().toLowerCase()}isTextualContentType(e){const t=this.mimeEssence(e);return!!t&&(!!t.startsWith("text/")||("application/x-www-form-urlencoded"===t||"application/javascript"===t||"application/ecmascript"===t||"application/graphql"===t||/^application\/([\w.-]+\+)?(json|xml)$/.test(t)))}binaryLabel(e){const t=this.mimeEssence(e);return t.startsWith("image/")?"[image data]":t.startsWith("audio/")?"[audio data]":t.startsWith("video/")?"[video data]":t.startsWith("font/")||t.startsWith("application/font")||"application/vnd.ms-fontobject"===t?"[font data]":"application/pdf"===t?"[pdf data]":"application/zip"===t||"application/gzip"===t||"application/x-gzip"===t||"application/x-tar"===t||"application/x-7z-compressed"===t||"application/x-rar-compressed"===t?"[archive data]":"application/wasm"===t?"[wasm data]":t.includes("protobuf")||t.startsWith("application/grpc")?"[protobuf data]":Ee}classifyByContentType(e){const t=(e||"").toLowerCase();return t.includes("multipart/form-data")?we:this.isTextualContentType(t)?null:this.binaryLabel(t)}capBodyText(e,t){return e&&(e.length>=this.maxBodyLength||(new TextEncoder).encode(e).length>=this.maxBodyLength)?t:e}async getRequestBody(e,t){try{if(!e.body)return"";const n=this.classifyByContentType(t);return null!=n?n:await this.readBodyStreamCapped(e.clone().body,{timeoutMs:this.requestBodyReadTimeoutMs,overflowPlaceholder:fe,timeoutPlaceholder:me})}catch{return me}}async getResponseBody(e){if(!e.body)return"";const t=e.headers?.get?.("content-type")??"";if("text/event-stream"===this.mimeEssence(t))return be;const n=this.classifyByContentType(t);return null!=n?n:await this.readBodyStreamCapped(e.clone().body,{timeoutMs:this.responseBodyReadTimeoutMs,overflowPlaceholder:ve,timeoutPlaceholder:ye})}initialize(){this.logger.log("[network-events-listener.initialize] called");const e=globalThis.fetch,t=globalThis.XMLHttpRequest.prototype.open,n=globalThis.XMLHttpRequest.prototype.send,r=globalThis.XMLHttpRequest.prototype.setRequestHeader;try{this.patchXHR(),this.patchFetch()}catch(i){return globalThis.fetch=e,globalThis.XMLHttpRequest.prototype.open=t,globalThis.XMLHttpRequest.prototype.send=n,globalThis.XMLHttpRequest.prototype.setRequestHeader=r,this.patched=null,void g(i)}this.patched={originalFetch:e,wrappedFetch:globalThis.fetch,originalXHROpen:t,wrappedXHROpen:globalThis.XMLHttpRequest.prototype.open,originalXHRSend:n,wrappedXHRSend:globalThis.XMLHttpRequest.prototype.send,originalXHRSetRequestHeader:r,wrappedXHRSetRequestHeader:globalThis.XMLHttpRequest.prototype.setRequestHeader},this.active=!0}destroy(){this.active=!1;const e=this.patched;e&&(globalThis.fetch===e.wrappedFetch&&(globalThis.fetch=e.originalFetch),globalThis.XMLHttpRequest.prototype.open===e.wrappedXHROpen&&(globalThis.XMLHttpRequest.prototype.open=e.originalXHROpen),globalThis.XMLHttpRequest.prototype.send===e.wrappedXHRSend&&(globalThis.XMLHttpRequest.prototype.send=e.originalXHRSend),globalThis.XMLHttpRequest.prototype.setRequestHeader===e.wrappedXHRSetRequestHeader&&(globalThis.XMLHttpRequest.prototype.setRequestHeader=e.originalXHRSetRequestHeader),this.patched=null)}shouldIgnoreRequest(e){try{const t=this.config.getConfig()?.getEndpoint();if(t&&e.includes(t))return!0;if([".tsx",".jsx",".css"].some((t=>e.toLowerCase().endsWith(t))))return!0;return(this.config.getConfig()?.options?.excludedUrls||[]).some((t=>{if(t instanceof RegExp)return t.test(e);if("string"==typeof t&&(t.includes("*")||t.includes("?"))){const n=t.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(n).test(e)}return e===t}))}catch(e){return g(e),!1}}queueEvent(e){try{this.logger.log("[network-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){g(e)}}patchXHR(){const e=this,t=globalThis.XMLHttpRequest.prototype.open,n=globalThis.XMLHttpRequest.prototype.send,r=globalThis.XMLHttpRequest.prototype.setRequestHeader;let i;globalThis.XMLHttpRequest.prototype.open=function(n,r,s=!0,o,a){if(!e.active)return t.apply(this,[n,r,s,o,a]);if(i=Date.now(),e.shouldIgnoreRequest(r.toString()))return t.apply(this,[n,r,s,o,a]);const l=new URL(r.toString(),globalThis.location.href).href;return this._requestMethod=n,this._requestUrl=l,this._requestHeaders={},t.apply(this,[n,r,s,o,a])},globalThis.XMLHttpRequest.prototype.setRequestHeader=function(t,n){return e.active?(this._requestHeaders&&(this._requestHeaders[t]=n),r.apply(this,[t,n])):r.apply(this,[t,n])},globalThis.XMLHttpRequest.prototype.send=function(...t){if(!e.active)return n.apply(this,t);const r=this._requestUrl?.toString();if(!r||e.shouldIgnoreRequest(r))return n.apply(this,t);if(e.shouldAddTraceHeader(r)){const t=e.config.getConfig(),n=e.getTraceIds();t?.options?.tracing?.origin?.name&&e.addHeaderToXhrRequest({request:this,headerName:t.options.tracing.origin.name,headerValue:t.options.tracing.origin.value}),n&&(t?.options?.tracing?.traceIdHeaderName&&e.addHeaderToXhrRequest({request:this,headerName:t.options.tracing.traceIdHeaderName,headerValue:n.decimalTraceId}),t?.options?.tracing?.spanIdHeaderName&&e.addHeaderToXhrRequest({request:this,headerName:t.options.tracing.spanIdHeaderName,headerValue:n.decimalSpanId}),Boolean(t?.options?.tracing?.propagationHeaders)&&t?.options?.tracing?.propagationHeaders?.forEach((t=>{e.addHeaderToXhrRequest({request:this,headerName:t,headerValue:n.traceparent})})),t?.options?.tracing?.propagationHeaders?.length||e.addHeaderToXhrRequest({request:this,headerName:"traceparent",headerValue:n.traceparent}))}return this._requestBody=t[0]||"",this.addEventListener("load",(()=>{const t=Date.now(),n={};this.getAllResponseHeaders().split(/\r?\n/).forEach((e=>{const[t,r]=e.split(": ");t&&r&&(n[t.trim()]=r.trim())}));const r=e.capBodyText(pe(this._requestBody),fe),s=""===this.responseType||"text"===this.responseType,o=s?this.responseText:this.response,a=(s?e.classifyByContentType(n["content-type"]||""):null)??e.capBodyText(pe(o),ve),l={timestamp:i,end_time:t,method:this._requestMethod,url:this._requestUrl,body:r,status:this.status,request:{headers:this._requestHeaders||{},body:r},response:{headers:n,body:a}};e.handleEvent(l)})),n.apply(this,t)}}normalizeHeaders(e,t){try{const n=e?new Headers(e):new Headers;return t?(t instanceof Headers?t.forEach(((e,t)=>n.set(t,e))):Array.isArray(t)?new Headers(t).forEach(((e,t)=>n.set(t,e))):"object"==typeof t&&Object.entries(t).forEach((([e,t])=>n.set(e,t))),n):n}catch{return new Headers}}addTraceHeaders(e){const t=this.config.getConfig(),n=this.getTraceIds();if(t?.options?.tracing?.origin?.name&&this.addHeaderToFetchRequest({init:e,headerName:t.options.tracing.origin.name,headerValue:t.options.tracing.origin.value}),!n)return;t?.options?.tracing?.traceIdHeaderName&&this.addHeaderToFetchRequest({init:e,headerName:t.options.tracing.traceIdHeaderName,headerValue:n.decimalTraceId}),t?.options?.tracing?.spanIdHeaderName&&this.addHeaderToFetchRequest({init:e,headerName:t.options.tracing.spanIdHeaderName,headerValue:n.decimalSpanId});const r=t?.options?.tracing?.propagationHeaders;(r?.length?r:["traceparent"]).forEach((t=>{this.addHeaderToFetchRequest({init:e,headerName:t,headerValue:n.traceparent})}))}extractHeadersRecord(e){const t={};return e instanceof Headers&&e.forEach(((e,n)=>{t[n]=e})),t}patchFetch(){const e=globalThis.fetch;globalThis.fetch=(...t)=>{if(!this.active)return e.apply(globalThis,t);const n=Date.now();let[r,i]=t;i={...i||{}},t[1]=i;const s=r instanceof Request,o=i?.method||(s?r.method:"GET"),a=r instanceof Request?r.url:r.toString();if(this.shouldIgnoreRequest(a))return e.apply(globalThis,t);const l=this.shouldAddTraceHeader(a);i.headers=this.normalizeHeaders(s?r.headers:void 0,i.headers),l&&this.addTraceHeaders(i);const c=this.extractHeadersRecord(i.headers),h=null!=i?.body?this.capBodyText(pe(i.body),fe):"",d=null!=i?.body?Promise.resolve(h):s?this.getRequestBody(r,"content-type"in c?c["content-type"]:r.headers.get("content-type")??""):Promise.resolve("");let u;return d.then((e=>{u=e})).catch((()=>{})),e.apply(globalThis,t).then((e=>{const t=Date.now(),r={};e.headers.forEach(((e,t)=>{r[t]=e}));const i={method:o,url:a,timestamp:n,body:"",status:e.status,end_time:t,request:{headers:c,body:""},response:{headers:r,body:""}},s=()=>{d.then((e=>{i.body=e,i.request.body=e,this.handleEvent(i)}))};return this.getResponseBody(e).then((e=>{i.response.body=e,s()})).catch((e=>{i.response.body=be,s(),this.logger.log("[network-events-listener.patchFetch] error",{error:e})})),e})).catch((e=>{const t=Date.now();let r="NetworkError";const i=e.message||"Unknown network error";e instanceof TypeError&&i.includes("Failed to fetch")?r="ERR_NETWORK_FAILURE":i.includes("Name not resolved")?r="ERR_NAME_NOT_RESOLVED":i.includes("Connection refused")&&(r="ERR_CONNECTION_REFUSED");const s=u??h,l={method:o,url:a,timestamp:n,body:s,status:0,end_time:t,request:{headers:c,body:s},response:{headers:{},body:""},error:{type:r}};throw this.handleEvent(l),e}))}}formatHeaders(e){const t=this.config.getPrivacy(),n="allow"===t.level,r=function(e,t={}){return e?Object.entries(e).reduce(((e,[n,r])=>{const i=n.toLowerCase(),s=z({key:n,value:r,path:[n],kind:"header",sensitive:R.includes(i)||L.test(i)||A(n,t.sensitiveKeys)},t.redact);return e[n]=null===s?"":String(s),e}),{}):e}(e,{sensitiveKeys:n?void 0:t.sensitiveKeys,redact:n?void 0:t.redact});return Object.entries(r)?.reduce(((e,[t,n])=>(e[t]=y({text:n}),e)),{})}extractTraceIds(e){const t=this.config.getConfig();let n="",r="";if(t?.options?.tracing?.traceIdHeaderName){const r=e[t.options.tracing.traceIdHeaderName];r&&"string"==typeof r&&(n=r)}if(t?.options?.tracing?.spanIdHeaderName){const n=e[t.options.tracing.spanIdHeaderName];n&&"string"==typeof n&&(r=n)}if(!n||!r){const t=this.extractTraceparentHeader(e);if(t){const e=t.split("-");4===e.length&&"00"===e[0]&&(!n&&e[1]&&32===e[1].length&&(n=e[1]),!r&&e[2]&&16===e[2].length&&(r=e[2]))}}return{traceId:n,spanId:r}}extractTraceparentHeader(e){const t=this.config.getConfig();if(t?.options?.tracing?.propagationHeaders?.length)for(const n of t.options.tracing.propagationHeaders){const t=e[n];if(t&&"string"==typeof t)return t}const n=e.traceparent;return n&&"string"==typeof n?n:""}getTraceIds(){const e=this.idGenerator.generateSpanId(),t=this.idGenerator.generateTraceId();let n,r;try{n=BigInt("0x"+t).toString(10),r=BigInt("0x"+e).toString(10)}catch(i){this.logger.log("[network-events-listener.getTraceIds] error",{error:i}),n=t,r=e}return{traceparent:`00-${t}-${e}-01`,traceId:t,spanId:e,decimalTraceId:n,decimalSpanId:r}}addHeaderToXhrRequest({request:e,headerName:t,headerValue:n}){if(this.logger.log("[network-events-listener.addHeaderToXhrRequest] called",{request:e,headerName:t,headerValue:n}),this.isValidHeaderName(t))try{e.setRequestHeader(t,n),e._requestHeaders[t]=n}catch(e){this.logger.log("[network-events-listener.addHeaderToXhrRequest] Error setting header",{error:e,headerName:t,headerValue:n})}else this.logger.log("[network-events-listener.addHeaderToXhrRequest] Invalid header name",{headerName:t})}addHeaderToFetchRequest({init:e,headerName:t,headerValue:n}){if(this.logger.log("[network-events-listener.addHeaderToFetchRequest] called",{init:e,headerName:t,headerValue:n}),this.isValidHeaderName(t))try{e.headers instanceof Headers?e.headers.set(t,n):e.headers={...e.headers,[t]:n}}catch(e){this.logger.log("[network-events-listener.addHeaderToFetchRequest] Error setting header",{error:e,headerName:t,headerValue:n})}else this.logger.log("[network-events-listener.addHeaderToFetchRequest] Invalid header name",{headerName:t})}isValidHeaderName(e){if(!e||"string"!=typeof e)return!1;return/^[a-zA-Z0-9!#$&'*+\-.^_`|~]+$/.test(e)}shouldAddTraceHeader(e){const t=this.config.getConfig();if(this.logger.log("[network-events-listener.shouldAddTraceHeader] called",{url:e,config:t}),!t?.options?.tracing?.propagationUrls?.length)return!1;const n=t.options.tracing.propagationUrls?.some((t=>{const n=t.replace(/\*/g,".*"),r=new RegExp(`^${n}$`),i=e.startsWith("/")?new URL(e,globalThis.location.href).pathname:e;return r.test(i)}));return this.logger.log("[network-events-listener.shouldAddTraceHeader] result",{url:e,result:n}),n}},ke=class extends U{constructor(){super(...arguments),this.handleEvent=(e,t)=>{this.logger.log("[errors-events-listener.handleEvent] called");try{let n;if(e instanceof Error)n=e,this.enhanceError(n);else if(e instanceof ErrorEvent){if(n=e.error||new Error(e.message||"Unknown error"),/Script error\.?/.test(n.message))return;this.enhanceError(n,e)}else{if(!(e instanceof PromiseRejectionEvent))return;n=this.createUnhandledRejectionError(e)}const r=this.buildEvent(n,t);this.queueEvent(r)}catch(e){g(e)}}}initialize(){w?.addEventListener("error",this.handleEvent),w?.addEventListener("unhandledrejection",this.handleEvent)}destroy(){w?.removeEventListener("error",this.handleEvent),w?.removeEventListener("unhandledrejection",this.handleEvent)}buildEvent(e,t){const n=this.config.getPrivacy(),r=n.shouldMaskErrors,i={sensitiveKeys:n.sensitiveKeys,redact:n.redact,kind:"error"},s=e.message||"Unknown error",o=r?O(s,i):s,a=r&&t?.metadata?B(t.metadata,i):t?.metadata,l={error_type:e.name||"Error",error_message:o,error_stacktrace:this.buildStackTrace(e),error_fingerprint:`${e.name}:${y({text:o,maxLength:400})}`,error_handled:t?.handled||!1,error_metadata:a};return this.enricher.enrich({type:"exception",attributes:l})}queueEvent(e){try{this.logger.log("[errors-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){g(e)}}enhanceError(e,t){const{filename:n,lineno:r,colno:i}=t||{};n&&!e.fileName&&Object.defineProperty(e,"fileName",{value:n}),r&&!e.lineNumber&&Object.defineProperty(e,"lineNumber",{value:r}),i&&!e.columnNumber&&Object.defineProperty(e,"columnNumber",{value:i})}createUnhandledRejectionError(e){let t;if(e.reason instanceof Error)t=e.reason;else{const n="object"==typeof e.reason?JSON.stringify(e.reason,null,2):String(e.reason);t=new Error(n),t.name="UnhandledRejection",Object.defineProperty(t,"originalReason",{value:e.reason,enumerable:!1})}return t}buildStackTrace(t){if(!t)return[];try{return e.parse(t).map((e=>({filename:e.fileName||"unknown",function:e.functionName||"anonymous",lineno:e.lineNumber||0,colno:e.columnNumber||0})))}catch(e){return[]}}},Te=class extends U{constructor(e,{isEnabled:t}){if(super(e),this.currentUrl="",this.originalPushState=null,this.originalReplaceState=null,this.patchedPushState=null,this.patchedReplaceState=null,this.isInitialized=!1,this.isAutomaticNavigationEnabled=!1,this.activeNavigation=null,this.popStateHandler=()=>{this.handleLocationChange()},this.hashChangeHandler=()=>{this.handleLocationChange()},this.isInBrowserEnvironment()&&t)try{this.isAutomaticNavigationEnabled=t,this.currentUrl=w.location.href,this.originalPushState=history.pushState,this.originalReplaceState=history.replaceState}catch(e){g(e)}}isInBrowserEnvironment(){try{return void 0!==w&&void 0!==w.location&&void 0!==w.history&&"function"==typeof w.addEventListener}catch(e){return g(e),!1}}initialize(){try{if(this.logger.log("[navigation-listener.initialize] called"),!this.isInBrowserEnvironment()||!this.originalPushState||!this.originalReplaceState)return void this.logger.log("[navigation-listener.initialize] Browser environment not available, skipping initialization");if(!this.isAutomaticNavigationEnabled)return void this.logger.log("[navigation-listener.initialize] Automatic navigation is disabled, skipping initialization");const e=this.originalPushState,t=this.originalReplaceState,n=(...t)=>{const n=e.apply(history,t);return this.handleLocationChange(),n},r=(...e)=>{const n=t.apply(history,e);return this.handleLocationChange(),n};history.pushState=n,history.replaceState=r,this.patchedPushState=n,this.patchedReplaceState=r,w&&"function"==typeof w.addEventListener&&(w.addEventListener("popstate",this.popStateHandler),w.addEventListener("hashchange",this.hashChangeHandler)),this.isInitialized=!0}catch(e){g(e)}}destroy(){try{this.logger.log("[navigation-listener.destroy] called"),this.isInitialized&&this.originalPushState&&this.originalReplaceState&&(history.pushState===this.patchedPushState&&(history.pushState=this.originalPushState),history.replaceState===this.patchedReplaceState&&(history.replaceState=this.originalReplaceState)),this.patchedPushState=null,this.patchedReplaceState=null,w&&"function"==typeof w.removeEventListener&&(w.removeEventListener("popstate",this.popStateHandler),w.removeEventListener("hashchange",this.hashChangeHandler)),this.isInitialized=!1}catch(e){g(e)}}handleEvent(){try{this.logger.log("[navigation-listener.handleEvent] called");const e=this.buildEvent();this.queueEvent(e)}catch(e){g(e)}}buildEvent(){this.logger.log("[navigation-listener.buildEvent] called",w.location.href);const e=this.config.getPrivacy(),t="allow"===e.level,n=w.location.href,r=this.activeNavigation?.metadata,i={page_url:e.shouldMaskNetworkQueryParams?D(n,{sensitiveKeys:e.sensitiveKeys,redact:e.redact,kind:"query"}):n,metadata:!t&&r?B(r,{sensitiveKeys:e.sensitiveKeys,redact:e.redact}):r,duration_ms:this.activeNavigation?.duration_ms||0,start_timestamp:this.activeNavigation?.startTime||0,end_timestamp:this.activeNavigation?.endTime||0};return this.enricher.enrich({type:"navigation",attributes:i})}queueEvent(e){try{this.logger.log("[navigation-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){g(e)}}startNavigation(e){try{this.logger.log("[navigation-listener.startNavigation] called",e),this.activeNavigation={page_url:w?.location?.href||"",metadata:e,startTime:Date.now(),endTime:0,duration_ms:0}}catch(e){g(e)}}endNavigation(e){try{if(this.logger.log("[navigation-listener.endNavigation] called",e),!this.activeNavigation)return void this.logger.log("[navigation-listener.endNavigation] no active navigation found");this.logger.log("[navigation-listener.endNavigation] active navigation",this.activeNavigation),this.activeNavigation.endTime=Date.now(),this.activeNavigation.duration_ms=this.activeNavigation.endTime-this.activeNavigation.startTime,this.handleEvent()}catch(e){g(e)}}handleLocationChange(){try{if(!this.isInitialized)return;if(this.logger.log("[navigation-listener.handleLocationChange] called"),this.currentUrl===w.location.href)return;let e,t;try{e=new URL(w.location.href),t=new URL(this.currentUrl)}catch(e){return void g(e)}const n=e=>e.startsWith("#/"),r=n(e.hash)||n(t.hash);(e.pathname!==t.pathname||r&&e.hash!==t.hash)&&(this.currentUrl=w.location.href,this.handleEvent())}catch(e){g(e)}}},Ie=class extends U{constructor(e){super(e),this.loadEventHandler=()=>{this.logger.log("load event"),this.handleEvent()}}initialize(){try{this.logger.log("[page-load-listener.initialize] called"),this.logger.log("globalThis",w),"complete"===w?.document?.readyState?(this.logger.log("Page already loaded, triggering event immediately"),this.handleEvent()):w?.addEventListener("load",this.loadEventHandler)}catch(e){this.logger.log("[page-load-listener.initialize] error",e),g(e)}}destroy(){w?.removeEventListener("load",this.loadEventHandler)}handleEvent(){try{this.logger.log("[page-load-listener.handleEvent] called");const e=this.buildEvent();this.queueEvent(e)}catch(e){g(e)}}buildEvent(){const e=performance.getEntriesByType("navigation")[0],t=e?e.loadEventEnd-e.startTime:0,n=performance.getEntriesByType("resource"),r={count:n.length,totalSize:0,totalDuration:0,byType:{}};n.forEach((e=>{const t=e,n=t.transferSize||0,i=t.duration,s=t.initiatorType;r.totalSize+=n,r.totalDuration+=i,r.byType[s]||(r.byType[s]={count:0,size:0,duration:0}),r.byType[s].count++,r.byType[s].size+=n,r.byType[s].duration+=i}));const i=this.config.getPrivacy(),s=i.shouldMaskNetworkQueryParams,o={sensitiveKeys:i.sensitiveKeys,redact:i.redact,kind:"query"},a=w?.location?.href||"",l=w?.document?.referrer||"",c={page_url:s?D(a,o):a,page_load_time:t,page_referrer:s?D(l,o):l,page_resources:r};return this.enricher.enrich({type:"pageload",attributes:c})}queueEvent(e){try{this.logger.log("[page-load-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){g(e)}}},Re=class extends U{constructor(){super(...arguments),this.handleEvent=e=>{try{if(!this.enricher.shouldSample())return;const t=this.buildEvent(e);this.queueEvent(t)}catch(e){g(e)}}}initialize(){t(this.handleEvent),n(this.handleEvent),r(this.handleEvent),i(this.handleEvent),s(this.handleEvent)}destroy(){}buildEvent(e){const t={performance_metric_name:e.name,performance_metric_value:e.value,performance_metric_id:e.id,performance_metric_navigation_type:e.navigationType||""};return this.enricher.enrich({type:"performance",attributes:t})}queueEvent(e){try{this.logger.log("[performance-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){g(e)}}},Le=class e{constructor(){if(this.worker=null,this.pending=new Map,this.nextId=0,this.consecutiveTimeouts=0,this.isAvailable=!1,this.logger=d.getInstance(),"undefined"==typeof Worker||"undefined"==typeof URL||"undefined"==typeof Blob)return;const e=new Blob(['!function(){"use strict";var r=Uint8Array,n=Uint16Array,e=Int32Array,t=new r([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),f=new r([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),o=new r([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),a=function(r,t){for(var f=new n(31),o=0;o<31;++o)f[o]=t+=1<<r[o-1];var a=new e(f[30]);for(o=1;o<30;++o)for(var i=f[o];i<f[o+1];++i)a[i]=i-f[o]<<5|o;return{b:f,r:a}},i=a(t,2),u=i.b,v=i.r;u[28]=258,v[258]=28;var s=a(f,0).r,l=new n(32768);for(Y=0;Y<32768;++Y)Q=(61680&(Q=(52428&(Q=(43690&Y)>>1|(21845&Y)<<1))>>2|(13107&Q)<<2))>>4|(3855&Q)<<4,l[Y]=((65280&Q)>>8|(255&Q)<<8)>>1;var c=function(r,e,t){for(var f=r.length,o=0,a=new n(e);o<f;++o)r[o]&&++a[r[o]-1];var i,u=new n(e);for(o=1;o<e;++o)u[o]=u[o-1]+a[o-1]<<1;for(i=new n(f),o=0;o<f;++o)r[o]&&(i[o]=l[u[r[o]-1]++]>>15-r[o]);return i},h=new r(288);for(Y=0;Y<144;++Y)h[Y]=8;for(Y=144;Y<256;++Y)h[Y]=9;for(Y=256;Y<280;++Y)h[Y]=7;for(Y=280;Y<288;++Y)h[Y]=8;var w=new r(32);for(Y=0;Y<32;++Y)w[Y]=5;var g=c(h,9),d=c(w,5),m=function(r){return(r+7)/8|0},p=function(n,e,t){return(null==t||t>n.length)&&(t=n.length),new r(n.subarray(e,t))},y=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>8},M=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>8,r[t+2]|=e>>16},b=function(e,t){for(var f=[],o=0;o<e.length;++o)e[o]&&f.push({s:o,f:e[o]});var a=f.length,i=f.slice();if(!a)return{t:U,l:0};if(1==a){var u=new r(f[0].s+1);return u[f[0].s]=1,{t:u,l:1}}f.sort((function(r,n){return r.f-n.f})),f.push({s:-1,f:25001});var v=f[0],s=f[1],l=0,c=1,h=2;for(f[0]={s:-1,f:v.f+s.f,l:v,r:s};c!=a-1;)v=f[f[l].f<f[h].f?l++:h++],s=f[l!=c&&f[l].f<f[h].f?l++:h++],f[c++]={s:-1,f:v.f+s.f,l:v,r:s};var w=i[0].s;for(o=1;o<a;++o)i[o].s>w&&(w=i[o].s);var g=new n(w+1),d=k(f[c-1],g,0);if(d>t){o=0;var m=0,p=d-t,y=1<<p;for(i.sort((function(r,n){return g[n.s]-g[r.s]||r.f-n.f}));o<a;++o){var M=i[o].s;if(!(g[M]>t))break;m+=y-(1<<d-g[M]),g[M]=t}for(m>>=p;m>0;){var b=i[o].s;g[b]<t?m-=1<<t-g[b]++-1:++o}for(;o>=0&&m;--o){var x=i[o].s;g[x]==t&&(--g[x],++m)}d=t}return{t:new r(g),l:d}},k=function(r,n,e){return-1==r.s?Math.max(k(r.l,n,e+1),k(r.r,n,e+1)):n[r.s]=e},x=function(r){for(var e=r.length;e&&!r[--e];);for(var t=new n(++e),f=0,o=r[0],a=1,i=function(r){t[f++]=r},u=1;u<=e;++u)if(r[u]==o&&u!=e)++a;else{if(!o&&a>2){for(;a>138;a-=138)i(32754);a>2&&(i(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(i(o),--a;a>6;a-=6)i(8304);a>2&&(i(a-3<<5|8208),a=0)}for(;a--;)i(o);a=1,o=r[u]}return{c:t.subarray(0,f),n:e}},A=function(r,n){for(var e=0,t=0;t<n.length;++t)e+=r[t]*n[t];return e},C=function(r,n,e){var t=e.length,f=m(n+2);r[f]=255&t,r[f+1]=t>>8,r[f+2]=255^r[f],r[f+3]=255^r[f+1];for(var o=0;o<t;++o)r[f+o+4]=e[o];return 8*(f+4+t)},T=function(r,e,a,i,u,v,s,l,m,p,k){y(e,k++,a),++u[256];for(var T=b(u,15),E=T.t,U=T.l,D=b(v,15),S=D.t,I=D.l,j=x(E),z=j.c,J=j.n,N=x(S),O=N.c,q=N.n,B=new n(19),F=0;F<z.length;++F)++B[31&z[F]];for(F=0;F<O.length;++F)++B[31&O[F]];for(var G=b(B,7),H=G.t,K=G.l,L=19;L>4&&!H[o[L-1]];--L);var P,Q,R,V,W=p+5<<3,X=A(u,h)+A(v,w)+s,Y=A(u,E)+A(v,S)+s+14+3*L+A(B,H)+2*B[16]+3*B[17]+7*B[18];if(m>=0&&W<=X&&W<=Y)return C(e,k,r.subarray(m,m+p));if(y(e,k,1+(Y<X)),k+=2,Y<X){P=c(E,U),Q=E,R=c(S,I),V=S;var Z=c(H,K);y(e,k,J-257),y(e,k+5,q-1),y(e,k+10,L-4),k+=14;for(F=0;F<L;++F)y(e,k+3*F,H[o[F]]);k+=3*L;for(var $=[z,O],_=0;_<2;++_){var rr=$[_];for(F=0;F<rr.length;++F){var nr=31&rr[F];y(e,k,Z[nr]),k+=H[nr],nr>15&&(y(e,k,rr[F]>>5&127),k+=rr[F]>>12)}}}else P=g,Q=h,R=d,V=w;for(F=0;F<l;++F){var er=i[F];if(er>255){M(e,k,P[(nr=er>>18&31)+257]),k+=Q[nr+257],nr>7&&(y(e,k,er>>23&31),k+=t[nr]);var tr=31&er;M(e,k,R[tr]),k+=V[tr],tr>3&&(M(e,k,er>>5&8191),k+=f[tr])}else M(e,k,P[er]),k+=Q[er]}return M(e,k,P[256]),k+Q[256]},E=new e([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),U=new r(0),D=function(){for(var r=new Int32Array(256),n=0;n<256;++n){for(var e=n,t=9;--t;)e=(1&e&&-306674912)^e>>>1;r[n]=e}return r}(),S=function(o,a,i,u,l){if(!l&&(l={l:1},a.dictionary)){var c=a.dictionary.subarray(-32768),h=new r(c.length+o.length);h.set(c),h.set(o,c.length),o=h,l.w=c.length}return function(o,a,i,u,l,c){var h=c.z||o.length,w=new r(u+h+5*(1+Math.ceil(h/7e3))+l),g=w.subarray(u,w.length-l),d=c.l,y=7&(c.r||0);if(a){y&&(g[0]=c.r>>3);for(var M=E[a-1],b=M>>13,k=8191&M,x=(1<<i)-1,A=c.p||new n(32768),U=c.h||new n(x+1),D=Math.ceil(i/3),S=2*D,I=function(r){return(o[r]^o[r+1]<<D^o[r+2]<<S)&x},j=new e(25e3),z=new n(288),J=new n(32),N=0,O=0,q=c.i||0,B=0,F=c.w||0,G=0;q+2<h;++q){var H=I(q),K=32767&q,L=U[H];if(A[K]=L,U[H]=K,F<=q){var P=h-q;if((N>7e3||B>24576)&&(P>423||!d)){y=T(o,g,0,j,z,J,O,B,G,q-G,y),B=N=O=0,G=q;for(var Q=0;Q<286;++Q)z[Q]=0;for(Q=0;Q<30;++Q)J[Q]=0}var R=2,V=0,W=k,X=K-L&32767;if(P>2&&H==I(q-X))for(var Y=Math.min(b,P)-1,Z=Math.min(32767,q),$=Math.min(258,P);X<=Z&&--W&&K!=L;){if(o[q+R]==o[q+R-X]){for(var _=0;_<$&&o[q+_]==o[q+_-X];++_);if(_>R){if(R=_,V=X,_>Y)break;var rr=Math.min(X,_-2),nr=0;for(Q=0;Q<rr;++Q){var er=q-X+Q&32767,tr=er-A[er]&32767;tr>nr&&(nr=tr,L=er)}}}X+=(K=L)-(L=A[K])&32767}if(V){j[B++]=268435456|v[R]<<18|s[V];var fr=31&v[R],or=31&s[V];O+=t[fr]+f[or],++z[257+fr],++J[or],F=q+R,++N}else j[B++]=o[q],++z[o[q]]}}for(q=Math.max(q,F);q<h;++q)j[B++]=o[q],++z[o[q]];y=T(o,g,d,j,z,J,O,B,G,q-G,y),d||(c.r=7&y|g[y/8|0]<<3,y-=7,c.h=U,c.p=A,c.i=q,c.w=F)}else{for(q=c.w||0;q<h+d;q+=65535){var ar=q+65535;ar>=h&&(g[y/8|0]=d,ar=h),y=C(g,y+1,o.subarray(q,ar))}c.i=h}return p(w,0,u+m(y)+l)}(o,null==a.level?6:a.level,null==a.mem?l.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(o.length)))):20:12+a.mem,i,u,l)},I=function(r,n,e){for(;e;++n)r[n]=e,e>>>=8};function j(r,n){n||(n={});var e=function(){var r=-1;return{p:function(n){for(var e=r,t=0;t<n.length;++t)e=D[255&e^n[t]]^e>>>8;r=e},d:function(){return~r}}}(),t=r.length;e.p(r);var f,o=S(r,n,10+((f=n).filename?f.filename.length+1:0),8),a=o.length;return function(r,n){var e=n.filename;if(r[0]=31,r[1]=139,r[2]=8,r[8]=n.level<2?4:9==n.level?2:0,r[9]=3,0!=n.mtime&&I(r,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),e){r[3]=8;for(var t=0;t<=e.length;++t)r[t+10]=e.charCodeAt(t)}}(o,n),I(o,a-8,e.d()),I(o,a-4,t),o}var z="undefined"!=typeof TextEncoder&&new TextEncoder,J="undefined"!=typeof TextDecoder&&new TextDecoder;try{J.decode(U,{stream:!0})}catch(r){}var N=Uint8Array,O=Uint16Array,q=Uint32Array,B=new N([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),F=new N([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),G=new N([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),H=function(r,n){for(var e=new O(31),t=0;t<31;++t)e[t]=n+=1<<r[t-1];var f=new q(e[30]);for(t=1;t<30;++t)for(var o=e[t];o<e[t+1];++o)f[o]=o-e[t]<<5|t;return[e,f]},K=H(B,2),L=K[0],P=K[1];L[28]=258,P[258]=28;var Q,R=H(F,0)[1],V=new O(32768);for(Y=0;Y<32768;++Y)Q=(61680&(Q=(52428&(Q=(43690&Y)>>>1|(21845&Y)<<1))>>>2|(13107&Q)<<2))>>>4|(3855&Q)<<4,V[Y]=((65280&Q)>>>8|(255&Q)<<8)>>>1;var W=function(r,n,e){for(var t=r.length,f=0,o=new O(n);f<t;++f)++o[r[f]-1];var a,i=new O(n);for(f=0;f<n;++f)i[f]=i[f-1]+o[f-1]<<1;for(a=new O(t),f=0;f<t;++f)a[f]=V[i[r[f]-1]++]>>>15-r[f];return a},X=new N(288);for(Y=0;Y<144;++Y)X[Y]=8;for(Y=144;Y<256;++Y)X[Y]=9;for(Y=256;Y<280;++Y)X[Y]=7;for(Y=280;Y<288;++Y)X[Y]=8;var Y,Z=new N(32);for(Y=0;Y<32;++Y)Z[Y]=5;var $=W(X,9),_=W(Z,5),rr=function(r){return(r/8|0)+(7&r&&1)},nr=function(r,n,e){(null==e||e>r.length)&&(e=r.length);var t=new(r instanceof O?O:r instanceof q?q:N)(e-n);return t.set(r.subarray(n,e)),t},er=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>>8},tr=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>>8,r[t+2]|=e>>>16},fr=function(r,n){for(var e=[],t=0;t<r.length;++t)r[t]&&e.push({s:t,f:r[t]});var f=e.length,o=e.slice();if(!f)return[new N(0),0];if(1==f){var a=new N(e[0].s+1);return a[e[0].s]=1,[a,1]}e.sort((function(r,n){return r.f-n.f})),e.push({s:-1,f:25001});var i=e[0],u=e[1],v=0,s=1,l=2;for(e[0]={s:-1,f:i.f+u.f,l:i,r:u};s!=f-1;)i=e[e[v].f<e[l].f?v++:l++],u=e[v!=s&&e[v].f<e[l].f?v++:l++],e[s++]={s:-1,f:i.f+u.f,l:i,r:u};var c=o[0].s;for(t=1;t<f;++t)o[t].s>c&&(c=o[t].s);var h=new O(c+1),w=or(e[s-1],h,0);if(w>n){t=0;var g=0,d=w-n,m=1<<d;for(o.sort((function(r,n){return h[n.s]-h[r.s]||r.f-n.f}));t<f;++t){var p=o[t].s;if(!(h[p]>n))break;g+=m-(1<<w-h[p]),h[p]=n}for(g>>>=d;g>0;){var y=o[t].s;h[y]<n?g-=1<<n-h[y]++-1:++t}for(;t>=0&&g;--t){var M=o[t].s;h[M]==n&&(--h[M],++g)}w=n}return[new N(h),w]},or=function(r,n,e){return-1==r.s?Math.max(or(r.l,n,e+1),or(r.r,n,e+1)):n[r.s]=e},ar=function(r){for(var n=r.length;n&&!r[--n];);for(var e=new O(++n),t=0,f=r[0],o=1,a=function(r){e[t++]=r},i=1;i<=n;++i)if(r[i]==f&&i!=n)++o;else{if(!f&&o>2){for(;o>138;o-=138)a(32754);o>2&&(a(o>10?o-11<<5|28690:o-3<<5|12305),o=0)}else if(o>3){for(a(f),--o;o>6;o-=6)a(8304);o>2&&(a(o-3<<5|8208),o=0)}for(;o--;)a(f);o=1,f=r[i]}return[e.subarray(0,t),n]},ir=function(r,n){for(var e=0,t=0;t<n.length;++t)e+=r[t]*n[t];return e},ur=function(r,n,e){var t=e.length,f=rr(n+2);r[f]=255&t,r[f+1]=t>>>8,r[f+2]=255^r[f],r[f+3]=255^r[f+1];for(var o=0;o<t;++o)r[f+o+4]=e[o];return 8*(f+4+t)},vr=function(r,n,e,t,f,o,a,i,u,v,s){er(n,s++,e),++f[256];for(var l=fr(f,15),c=l[0],h=l[1],w=fr(o,15),g=w[0],d=w[1],m=ar(c),p=m[0],y=m[1],M=ar(g),b=M[0],k=M[1],x=new O(19),A=0;A<p.length;++A)x[31&p[A]]++;for(A=0;A<b.length;++A)x[31&b[A]]++;for(var C=fr(x,7),T=C[0],E=C[1],U=19;U>4&&!T[G[U-1]];--U);var D,S,I,j,z=v+5<<3,J=ir(f,X)+ir(o,Z)+a,N=ir(f,c)+ir(o,g)+a+14+3*U+ir(x,T)+(2*x[16]+3*x[17]+7*x[18]);if(z<=J&&z<=N)return ur(n,s,r.subarray(u,u+v));if(er(n,s,1+(N<J)),s+=2,N<J){D=W(c,h),S=c,I=W(g,d),j=g;var q=W(T,E);er(n,s,y-257),er(n,s+5,k-1),er(n,s+10,U-4),s+=14;for(A=0;A<U;++A)er(n,s+3*A,T[G[A]]);s+=3*U;for(var H=[p,b],K=0;K<2;++K){var L=H[K];for(A=0;A<L.length;++A){var P=31&L[A];er(n,s,q[P]),s+=T[P],P>15&&(er(n,s,L[A]>>>5&127),s+=L[A]>>>12)}}}else D=$,S=X,I=_,j=Z;for(A=0;A<i;++A)if(t[A]>255){P=t[A]>>>18&31;tr(n,s,D[P+257]),s+=S[P+257],P>7&&(er(n,s,t[A]>>>23&31),s+=B[P]);var Q=31&t[A];tr(n,s,I[Q]),s+=j[Q],Q>3&&(tr(n,s,t[A]>>>5&8191),s+=F[Q])}else tr(n,s,D[t[A]]),s+=S[t[A]];return tr(n,s,D[256]),s+S[256]},sr=new q([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),lr=function(r,n,e,t,f){return function(r,n,e,t,f,o){var a=r.length,i=new N(t+a+5*(1+Math.floor(a/7e3))+f),u=i.subarray(t,i.length-f),v=0;if(!n||a<8)for(var s=0;s<=a;s+=65535){var l=s+65535;l<a?v=ur(u,v,r.subarray(s,l)):(u[s]=o,v=ur(u,v,r.subarray(s,a)))}else{for(var c=sr[n-1],h=c>>>13,w=8191&c,g=(1<<e)-1,d=new O(32768),m=new O(g+1),p=Math.ceil(e/3),y=2*p,M=function(n){return(r[n]^r[n+1]<<p^r[n+2]<<y)&g},b=new q(25e3),k=new O(288),x=new O(32),A=0,C=0,T=(s=0,0),E=0,U=0;s<a;++s){var D=M(s),S=32767&s,I=m[D];if(d[S]=I,m[D]=S,E<=s){var j=a-s;if((A>7e3||T>24576)&&j>423){v=vr(r,u,0,b,k,x,C,T,U,s-U,v),T=A=C=0,U=s;for(var z=0;z<286;++z)k[z]=0;for(z=0;z<30;++z)x[z]=0}var J=2,G=0,H=w,K=S-I&32767;if(j>2&&D==M(s-K))for(var L=Math.min(h,j)-1,Q=Math.min(32767,s),V=Math.min(258,j);K<=Q&&--H&&S!=I;){if(r[s+J]==r[s+J-K]){for(var W=0;W<V&&r[s+W]==r[s+W-K];++W);if(W>J){if(J=W,G=K,W>L)break;var X=Math.min(K,W-2),Y=0;for(z=0;z<X;++z){var Z=s-K+z+32768&32767,$=Z-d[Z]+32768&32767;$>Y&&(Y=$,I=Z)}}}K+=(S=I)-(I=d[S])+32768&32767}if(G){b[T++]=268435456|P[J]<<18|R[G];var _=31&P[J],er=31&R[G];C+=B[_]+F[er],++k[257+_],++x[er],E=s+J,++A}else b[T++]=r[s],++k[r[s]]}}v=vr(r,u,o,b,k,x,C,T,U,s-U,v)}return nr(i,0,t+rr(v)+f)}(r,null==n.level?6:n.level,null==n.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(r.length)))):12+n.mem,e,t,!0)};function cr(r,n){void 0===n&&(n={});var e=function(){var r=1,n=0;return{p:function(e){for(var t=r,f=n,o=e.length,a=0;a!=o;){for(var i=Math.min(a+5552,o);a<i;++a)f+=t+=e[a];t%=65521,f%=65521}r=t,n=f},d:function(){return(r>>>8<<16|(255&n)<<8|n>>>8)+2*((255&r)<<23)}}}();e.p(r);var t,f,o,a=lr(r,n,2,4);return t=a,f=n.level,o=0==f?0:f<6?1:9==f?3:2,t[0]=120,t[1]=o<<6|(o?32-2*o:1),function(r,n,e){for(;e;++n)r[n]=e,e>>>=8}(a,a.length-4,e.d()),a}var hr=r=>{const n={...r,v:"v1"};return function(r){for(var n="",e=0;e<r.length;){var t=r[e++];n+=String.fromCharCode(t)}return n}(cr(function(r,n){var e=r.length;if("undefined"!=typeof TextEncoder)return(new TextEncoder).encode(r);for(var t=new N(r.length+(r.length>>>1)),f=0,o=function(r){t[f++]=r},a=0;a<e;++a){if(f+5>t.length){var i=new N(f+8+(e-a<<1));i.set(t),t=i}var u=r.charCodeAt(a);u<128||n?o(u):u<2048?(o(192|u>>>6),o(128|63&u)):u>55295&&u<57344?(o(240|(u=65536+(1047552&u)|1023&r.charCodeAt(++a))>>>18),o(128|u>>>12&63),o(128|u>>>6&63),o(128|63&u)):(o(224|u>>>12),o(128|u>>>6&63),o(128|63&u))}return nr(t,0,f)}(JSON.stringify(n))))},wr=self;wr.onmessage=n=>{const e=n.data;if(!e||"number"!=typeof e.id||"pack-replay"!==e.op&&"encode-batch"!==e.op)return void(e&&"number"==typeof e.id&&wr.postMessage({id:e.id,ok:!1,error:"malformed message"}));const{id:t,op:f,payload:o}=e;try{if("pack-replay"===f){const r=o.events.map((r=>hr(r)));return void wr.postMessage({id:t,ok:!0,result:{packed:r}})}if("encode-batch"===f){const{json:n,compress:e}=o;if(!e){const r=(new TextEncoder).encode(n);return void wr.postMessage({id:t,ok:!0,result:{bytes:r,isCompressed:!1}},[r.buffer])}try{const e=j(function(n,e){if(z)return z.encode(n);for(var t=n.length,f=new r(n.length+(n.length>>1)),o=0,a=function(r){f[o++]=r},i=0;i<t;++i){if(o+5>f.length){var u=new r(o+8+(t-i<<1));u.set(f),f=u}var v=n.charCodeAt(i);v<128||e?a(v):v<2048?(a(192|v>>6),a(128|63&v)):v>55295&&v<57344?(a(240|(v=65536+(1047552&v)|1023&n.charCodeAt(++i))>>18),a(128|v>>12&63),a(128|v>>6&63),a(128|63&v)):(a(224|v>>12),a(128|v>>6&63),a(128|63&v))}return p(f,0,o)}(n));return void wr.postMessage({id:t,ok:!0,result:{bytes:e,isCompressed:!0}},[e.buffer])}catch{const r=(new TextEncoder).encode(n);return void wr.postMessage({id:t,ok:!0,result:{bytes:r,isCompressed:!1}},[r.buffer])}}wr.postMessage({id:t,ok:!1,error:"unknown op"})}catch(r){wr.postMessage({id:t,ok:!1,error:r instanceof Error?r.message:String(r)})}}}();'],{type:"application/javascript"}),t=URL.createObjectURL(e);try{this.worker=new Worker(t),Promise.resolve().then((()=>URL.revokeObjectURL(t))),this.worker.onmessage=e=>this.handleMessage(e.data),this.worker.onerror=e=>this.handleFatalFailure("worker onerror",e.message),this.worker.onmessageerror=()=>this.logger.log("[worker-client] worker onmessageerror — single message dropped, worker still alive"),this.isAvailable=!0,this.logger.log("[worker-client] worker spawned")}catch(e){URL.revokeObjectURL(t),this.logger.log("[worker-client] failed to spawn worker, falling back to main thread:",e),this.worker=null,this.isAvailable=!1}}static getInstance(){return e.instance||(e.instance=new e),e.instance}static __resetForTests(){e.instance&&e.instance.terminate(),e.instance=null}static async withFallback(t,n,r){const i=e.getInstance();if(!i.isAvailable)return n();try{return await t(i)}catch(e){return d.getInstance().log(`[${r}] worker call failed, using inline fallback:`,e),n()}}packReplay(e){return this.dispatch("pack-replay",{events:e}).then((e=>e.packed))}encodeBatch(e,t){return this.dispatch("encode-batch",{json:e,compress:t}).then((e=>({data:e.bytes,isCompressed:e.isCompressed})))}terminate(){if(this.worker){try{this.worker.terminate()}catch(e){this.logger.log("[worker-client] failed to terminate worker:",e)}this.worker=null}this.isAvailable=!1,this.rejectAllPending(new Error("worker terminated")),e.instance===this&&(e.instance=null)}dispatch(e,t){if(!this.worker||!this.isAvailable)return Promise.reject(new Error("worker not available"));const n=this.nextId++,r=this.worker;return new Promise(((i,s)=>{const o=setTimeout((()=>{this.pending.has(n)&&(this.pending.delete(n),this.consecutiveTimeouts+=1,this.consecutiveTimeouts>=3&&this.handleFatalFailure("worker latched after 3 consecutive timeouts"),s(new Error("worker request timed out")))}),1500);this.pending.set(n,{resolve:i,reject:s,timeoutId:o});try{r.postMessage({id:n,op:e,payload:t})}catch(e){clearTimeout(o),this.pending.delete(n),s(e instanceof Error?e:new Error(String(e)))}}))}handleMessage(e){const t=this.pending.get(e.id);t&&(clearTimeout(t.timeoutId),this.pending.delete(e.id),this.consecutiveTimeouts=0,e.ok?t.resolve(e.result):t.reject(new Error(e.error)))}handleFatalFailure(e,t){if(this.logger.log(`[worker-client] ${e}${t?": "+t:""}`),this.isAvailable=!1,this.rejectAllPending(new Error(e)),this.worker){try{this.worker.terminate()}catch{}this.worker=null}}rejectAllPending(e){for(const t of this.pending.values())clearTimeout(t.timeoutId),t.reject(e);this.pending.clear()}};Le.instance=null;var Me=Le;var xe=class{constructor(e){this.logger=d.getInstance(),this.stopFn=null,this.isRecording=!1,this.events=[],this.startTime=0,this.batchSize=3,this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0,this.sendTimerId=null,this.configManager=e.config,this.session=e.session,this.eventsPool=e.eventsPool,this.enricher=e.enricher}initialize(){this.logger.log("[session-replay-listener] initialize called"),this.isRecording?this.logger.log("[session-replay-listener] already recording"):this.startRecording()}startRecording(){try{this.startTime=Date.now(),this.events=[],this.isRecording=!0,this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0;const e=this.configManager.getConfig()?.options?.replay,t=e?.blockedSelectors?.filter(Boolean),n=t?.length?t.join(", "):void 0,r=Y(this.configManager),i=function(e){const t=e?.privacy,n=function(e){return"mask-sensitive"===e||"mask-all"===e||"allow"===e?e:void 0}(t?.level)??"mask-sensitive",r="allow"===n,i=X(t?.maskSelectors),s=t?.replay,o="function"==typeof s?.maskTextFn?s.maskTextFn:void 0,a="function"==typeof s?.maskInputFn?s.maskInputFn:void 0;let l;return l="mask-all"===n||!r&&void 0!==o?["*",...i].join(", "):"mask-sensitive"===n?["[data-private]",...i].join(", "):void 0,{maskTextSelector:l,maskAllInputs:!r,maskTextFn:o,maskInputFn:a}}(this.configManager.getConfig()?.providedOptions),s=i.maskInputFn??("allow"===r.level?void 0:(e,t)=>J(t,r)?"*".repeat(e.length):e);this.stopFn=o({...n?{blockSelector:n}:{},...i.maskTextSelector?{maskTextSelector:i.maskTextSelector}:{},maskAllInputs:i.maskAllInputs,...i.maskTextFn?{maskTextFn:i.maskTextFn}:{},...s?{maskInputFn:s}:{},slimDOMOptions:{script:!1,comment:!1,headWhitespace:!1},sampling:{mousemove:100,input:"last",scroll:150},checkoutEveryNms:3e4,emit:(e,t)=>{if(this.isRecording)try{this.events.push(e),t&&(this.batchContainsFullSnapshot=!0,this.fullSnapshotTimestamp=Date.now(),this.logger.log("[session-replay-listener] full snapshot captured at",this.fullSnapshotTimestamp)),this.events.length>=this.batchSize&&this.scheduleSendBatch()}catch(e){g(e),this.logger.log("[session-replay-listener] failed to process event in emit callback:",e)}}})||null,this.logger.log("[session-replay-listener] started recording with full snapshot interval:",3e4,"ms")}catch(e){g(e),this.logger.log("[session-replay-listener] failed to start recording:",e),this.isRecording=!1}}scheduleSendBatch(){null===this.sendTimerId&&(this.sendTimerId=w.setTimeout((()=>{this.sendTimerId=null,this.isRecording&&this.sendBatchAsync().catch((e=>{g(e),this.logger.log("[session-replay-listener] failed to send deferred batch:",e)}))}),0))}clearScheduledSend(){null!==this.sendTimerId&&(w.clearTimeout(this.sendTimerId),this.sendTimerId=null)}flushPendingSync(){this.clearScheduledSend(),0!==this.events.length&&this.sendBatchSync()}async sendBatchAsync(){if(0===this.events.length)return;const e=this.drainBatch(),t=this.session.getSessionId(),n=Me.getInstance();let r;if(n.isAvailable)try{r=await n.packReplay(e.events)}catch(t){g(t),this.logger.log("[session-replay-listener] worker pack failed, using inline fallback:",t),r=e.events.map((e=>a(e)))}else r=e.events.map((e=>a(e)));this.session.getSessionId()===t?this.enqueueReplayEvent(r,e.containsFullSnapshot,e.snapshotTimestamp):this.logger.log("[session-replay-listener] dropping packed batch: session rotated during pack",{drained:r.length})}sendBatchSync(){if(0===this.events.length)return;const e=this.drainBatch(),t=e.events.map((e=>a(e)));this.enqueueReplayEvent(t,e.containsFullSnapshot,e.snapshotTimestamp)}drainBatch(){const e=this.events,t=this.batchContainsFullSnapshot,n=this.fullSnapshotTimestamp;return this.events=[],this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0,{events:e,containsFullSnapshot:t,snapshotTimestamp:n}}enqueueReplayEvent(e,t,n){try{const r={_gc_replay_data:{events:e}};t&&(r.replay_is_full_snapshot=!0,r.replay_full_snapshot_timestamp=n);const i=this.enricher.enrich({type:"replay",attributes:r});this.eventsPool.addEvent(i),this.logger.log("[session-replay-listener] sent batch with",e.length,"events",t?"(includes full snapshot)":"")}catch(e){g(e),this.logger.log("[session-replay-listener] failed to send batch:",e)}}stopRecording(){if(this.isRecording)try{this.clearScheduledSend(),this.stopFn?.(),this.isRecording=!1,this.events.length>0&&this.sendBatchSync(),this.stopFn=null,this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0}catch(e){g(e),this.logger.log("[session-replay-listener] failed to stop recording:",e)}}destroy(){this.stopRecording()}},qe=144e5,Ae=288e5,Ne=18e5,Ce="gcSample",He={eventSampleRate:1,sessionSampleRate:1,debug:!1,privacy:{level:"mask-sensitive"},enabledEvents:[],tracing:{propagationUrls:[],propagationHeaders:[],traceIdHeaderName:"",spanIdHeaderName:"",origin:{name:"",value:""}},transport:{batchSize:10,batchTimeout:1e4,compression:!0},replay:{},sessionMaxDuration:qe},ze=["pointerdown","keydown","scroll","touchstart","mousemove"],_e=class{constructor(e){this.logger=d.getInstance(),this.lastSignalMs=0,this.idleTimer=null,this.installed=!1,this.handleInput=()=>{const e=Date.now();if(!(e-this.lastSignalMs<3e4)){this.notePresence(e);try{this.callbacks.onPresence(e)}catch(e){g(e)}}},this.callbacks=e}initialize(){this.installed||(this.installed=!0,ze.forEach((e=>{try{w.addEventListener?.(e,this.handleInput,{capture:!0,passive:!0})}catch(e){g(e)}})),this.armIdleTimer(),this.logger.log("[user-presence-monitor] installed"))}notePresence(e){this.lastSignalMs=e,this.armIdleTimer()}resetIdleTimer(){this.armIdleTimer()}armIdleTimer(){try{this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=null,this.idleTimer=setTimeout((()=>{this.idleTimer=null,this.logger.log("[user-presence-monitor] user idle for",Ne,"ms");try{this.callbacks.onIdle()}catch(e){g(e)}}),Ne)}catch(e){g(e)}}destroy(){if(this.installed){this.installed=!1,ze.forEach((e=>{try{w.removeEventListener?.(e,this.handleInput,{capture:!0})}catch(e){g(e)}}));try{this.idleTimer&&clearTimeout(this.idleTimer)}catch(e){g(e)}finally{this.idleTimer=null}}}},Pe=class{constructor(e){this.logger=d.getInstance(),this.rotating=!1,this.session=e.session,this.pool=e.pool,this.idGenerator=e.idGenerator,this.activityEventTypes=e.activityEventTypes,this.ignoredEventTypes=e.ignoredEventTypes,this.hooks=e.hooks??{}}get isRotating(){return this.rotating}install(){this.pool.setBeforeEnqueueHook((e=>this.reconcileOnEnqueue(e))),this.pool.setFlushGate((()=>this.session.hasUserActivity()))}uninstall(e){this.pool.setBeforeEnqueueHook(null);try{e?.()}catch(e){g(e)}this.pool.setFlushGate(null)}reconcile(e,t){if(this.rotating)return;t&&this.session.isSessionInactive(e)&&this.rotate({reason:"inactivity gap"});const n=this.session.getSessionElapsedMs(e),r=this.session.getSessionMaxDuration(),i=n>=r;this.logger.log("[session-lifecycle] session reconcile",{userPresent:t,elapsedMs:n,maxDurationMs:r,expired:i}),i&&this.rotate({reason:"max session duration"}),this.hooks.onReconcile?.(t),t&&(this.session.setLastActivityMs(e),this.hooks.onPresenceStamped?.(e))}reconcileOnEnqueue(e){this.rotating||(this.ignoredEventTypes.has(e.type)?this.logger.log("[session-lifecycle] enqueue rotation check: ignoring heartbeat-style event",e.type):this.reconcile(Date.now(),this.activityEventTypes.has(e.type)))}rotateIfStale(e,t){(this.session.isSessionInactive(e)||this.session.isSessionExpired(e))&&this.rotate({reason:t})}rotate(e){if(this.rotating)return;this.rotating=!0;const t=(e,t)=>{try{this.logger.log(`[session-lifecycle] session rotation: ${e}`),t()}catch(t){g(t),this.logger.log(`[session-lifecycle] failed to ${e} during session rotation:`,t)}};try{const n=this.session.getSessionId();let r;t("capture host rotation context",(()=>{r=this.hooks.captureRotationContext?.()}));const i=this.session.hasUserActivity();this.logger.log("[session-lifecycle] session rotation start",{reason:e.reason,previousId:n,wasConfirmed:i}),t("host beforeRotate",(()=>this.hooks.beforeRotate?.())),t(i?"flush events":"discard unconfirmed events",(()=>i?this.pool.flush():this.pool.discardBuffer())),t("rotate session ids",(()=>{const e=this.idGenerator.generateId();this.session.setSessionId(e),this.session.setSessionStartTime(S(Date.now())),this.session.clearSamplingDecision(),this.logger.log("[session-lifecycle] session id rotated",{from:n,to:e})})),t("host afterRotate",(()=>this.hooks.afterRotate?.(r)))}finally{this.rotating=!1,this.logger.log("[session-lifecycle] session rotation complete",{reason:e.reason})}}},De=new Set(["dom.event"]),Fe=new Set(["replay"]),Oe=class{constructor(e){this.logger=d.getInstance(),this.idGenerator=new p,this.logEventsListener=null,this.domEventsListener=null,this.errorsEventsListener=null,this.networkEventsListener=null,this.navigationListener=null,this.performanceListener=null,this.pageLoadListener=null,this.sessionReplayListener=null,this.replayDesired=!1,this.presenceMonitor=null,this.configManager=e.config,this.session=e.session,this.eventsPool=e.eventsPool,this.enricher=e.enricher,this.manualEvents=new K({config:this.configManager,pool:this.eventsPool,enricher:this.enricher}),this.lifecycle=new Pe({session:this.session,pool:this.eventsPool,idGenerator:this.idGenerator,activityEventTypes:De,ignoredEventTypes:Fe,hooks:{captureRotationContext:()=>this.isReplayRecording(),beforeRotate:()=>this.stopReplayListener(),afterRotate:e=>this.syncReplayState(e),onReconcile:e=>this.syncReplayState(e),onPresenceStamped:e=>this.presenceMonitor?.notePresence(e)}})}listenerDeps(){return{config:this.configManager,eventsPool:this.eventsPool,enricher:this.enricher}}instrument(){this.logger.log("[instrumentation-manager.instrument] called"),this.lifecycle.install(),this.presenceMonitor?.destroy(),this.presenceMonitor=new _e({onPresence:e=>this.lifecycle.reconcile(e,!0),onIdle:()=>this.pauseReplayOnIdle()}),this.presenceMonitor.initialize();const e=this.configManager.getConfig(),t=e?.options?.enabledEvents,n=!t||0===t.length,r=[];(n||t?.includes("pageload"))&&(this.pageLoadListener=new Ie(this.listenerDeps()),this.pageLoadListener.initialize(),r.push("pageload")),(n||t?.includes("dom"))&&(this.domEventsListener=new de(this.listenerDeps()),this.domEventsListener.initialize(),r.push("dom")),(n||t?.includes("logs"))&&(this.logEventsListener=new ge(this.listenerDeps()),this.logEventsListener.initialize(),r.push("logs")),(n||t?.includes("exceptions"))&&(this.errorsEventsListener=new ke(this.listenerDeps()),this.errorsEventsListener.initialize(),r.push("exceptions")),(n||t?.includes("network"))&&(this.networkEventsListener=new Se(this.listenerDeps()),this.networkEventsListener.initialize(),r.push("network")),(n||t?.includes("performance"))&&(this.performanceListener=new Re(this.listenerDeps()),this.performanceListener.initialize(),r.push("performance")),this.navigationListener=new Te(this.listenerDeps(),{isEnabled:n||t?.includes("navigation")}),this.navigationListener.initialize(),r.push("navigation"),this.logger.log("[instrumentation-manager.instrument] initialized listeners based on config:",r)}sendCustomEvent(e){this.manualEvents.sendCustomEvent(e)}emitLog(e,t,n){this.logEventsListener&&this.manualEvents.emitLog(e,t,n)}captureException(e,t){try{this.logger.log("[instrumentation-manager.captureException] called",e),this.errorsEventsListener?.handleEvent(e,{handled:!0,metadata:t})}catch(e){g(e)}}isNavigationTrackingEnabled(){const e=this.configManager.getConfig();return e?.options?.enabledEvents?.includes("navigation")||0===e?.options?.enabledEvents?.length}startNavigation(e){this.logger.log("[instrumentation-manager.startNavigation] called",e),this.isNavigationTrackingEnabled()?this.logger.log("[instrumentation-manager.startNavigation] startNavigation called while navigation tracking is enabled. Ignoring. If you wish to track navigations manually, please disable navigation tracking via the enabledEvents array in the config."):this.navigationListener?.startNavigation(e)}endNavigation(e){this.logger.log("[instrumentation-manager.endNavigation] called",e),this.isNavigationTrackingEnabled()?this.logger.log("[instrumentation-manager.endNavigation] endNavigation called while navigation tracking is enabled. Ignoring. If you wish to track navigations manually, please disable navigation tracking via the enabledEvents array in the config."):this.navigationListener?.endNavigation(e)}isReplayRecording(){return null!==this.sessionReplayListener}restartReplayForConfigChange(){this.isReplayRecording()&&(this.logger.log("[instrumentation-manager] restarting replay to apply config change"),this.stopReplayListener(),this.startReplayListener())}startReplayRecording(){this.replayDesired=!0,this.isReplayRecording()?this.logger.log("[instrumentation-manager] replay recording already started"):(this.lifecycle.rotateIfStale(Date.now(),"replay start into stale session"),this.startReplayListener(),this.presenceMonitor?.resetIdleTimer())}stopReplayRecording(){this.replayDesired=!1,this.stopReplayListener()}flushPendingReplay(){this.sessionReplayListener?.flushPendingSync()}syncReplayState(e){this.replayDesired&&e&&!this.isReplayRecording()&&(this.logger.log("[instrumentation-manager] user present and replay desired — starting replay"),this.startReplayListener())}pauseReplayOnIdle(){this.isReplayRecording()&&(this.logger.log("[instrumentation-manager] pausing replay: user idle window elapsed"),this.stopReplayListener())}startReplayListener(){if(this.sessionReplayListener)this.logger.log("[instrumentation-manager] replay recording already started");else try{const e=new xe({...this.listenerDeps(),session:this.session});e.initialize(),this.sessionReplayListener=e,this.logger.log("[instrumentation-manager] started replay recording")}catch(e){g(e),this.logger.log("[instrumentation-manager] failed to start replay recording:",e)}}stopReplayListener(){this.sessionReplayListener?(this.sessionReplayListener.stopRecording(),this.sessionReplayListener=null):this.logger.log("[instrumentation-manager] cannot stop replay recording: replay listener not initialized")}uninstrument(){this.lifecycle.uninstall((()=>{this.presenceMonitor?.destroy(),this.presenceMonitor=null,this.domEventsListener?.destroy(),this.logEventsListener?.destroy(),this.errorsEventsListener?.destroy(),this.networkEventsListener?.destroy(),this.navigationListener?.destroy(),this.performanceListener?.destroy(),this.pageLoadListener?.destroy(),this.sessionReplayListener?.destroy(),this.sessionReplayListener=null,this.replayDesired=!1}))}};function Be(e){try{console.warn(e)}catch{}}function je(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}var Ke=["privacy","tracing","transport","replay"],Ue={tracing:"origin",privacy:"replay"};function Xe(e,t){if(!je(e))return e;const n={...e};return t&&je(n[t])&&(n[t]={...n[t]}),n}function Ye(e,t,n){const r={...e,...t};if(n){const i=e?.[n],s=t[n];je(i)&&je(s)?r[n]={...i,...s}:Object.hasOwn(t,n)&&!je(s)?r[n]=je(i)?{...i}:i:je(r[n])&&(r[n]={...r[n]})}return r}function $e(e,t){const n={...e,...t},r=t,i=e;for(const e of Ke){if(!Object.hasOwn(r,e)){je(i[e])&&(n[e]=Xe(i[e],Ue[e]));continue}const t=r[e];je(t)?n[e]=Ye(i[e],t,Ue[e]):n[e]=Xe(i[e],Ue[e])}return n}var We=class e{constructor(t){this.dsn=t?.dsn||"",this.appId=t?.appId||"",this.cluster=t?.cluster||"",this.apiKey=t?.apiKey||"",this.environment=t?.environment||"",this.namespace=t?.namespace||"",this.releaseId=t?.releaseId,this.user=t?.user||null,this.providedOptions={...t?.options||{}},this.options=$e(He,t?.options||{}),this.options.sessionMaxDuration=e.normalizeSessionMaxDuration(t?.options?.sessionMaxDuration),e.warnRemovedOptions(t?.options),e.stripRemovedOptions(this.providedOptions),e.stripRemovedOptions(this.options)}static stripRemovedOptions(t){const n=t;for(const t of e.REMOVED_OPTION_KEYS)Object.hasOwn(n,t)&&delete n[t]}static warnRemovedOptions(t){if(!t||"object"!=typeof t)return;const n=t;for(const t of e.REMOVED_OPTION_KEYS)Object.hasOwn(n,t)&&Be(`[groundcover] \`options.${t}\` was removed in 1.0.0 and is ignored. Configure masking via \`options.privacy\` instead — see the migration guide: https://github.com/groundcover-com/rum/tree/main/packages/browser#migrating-to-100`)}static normalizeSessionMaxDuration(e){return void 0===e?qe:"number"!=typeof e||!Number.isFinite(e)||e<6e4||e>Ae?(Be("[groundcover] sessionMaxDuration must be a finite number between 60000 ms (1 minute) and 28800000 ms (8 hours); falling back to the 4-hour default"),qe):e}getEndpoint(){return this.dsn?.startsWith("http")?this.dsn:`https://${this.dsn}`}updateConfig(t){t.options&&(e.warnRemovedOptions(t.options),this.providedOptions=$e(this.providedOptions||{},t.options),this.options=$e(this.options,t.options),void 0!==t.options.sessionMaxDuration&&(this.options.sessionMaxDuration=e.normalizeSessionMaxDuration(t.options.sessionMaxDuration)),e.stripRemovedOptions(this.providedOptions),e.stripRemovedOptions(this.options)),void 0!==t.user&&(this.user=null===t.user?null:{...this.user,...t.user}),t.appId&&(this.appId=t.appId),t.dsn&&(this.dsn=t.dsn),t.apiKey&&(this.apiKey=t.apiKey),t.cluster&&(this.cluster=t.cluster),t.environment&&(this.environment=t.environment),t.namespace&&(this.namespace=t.namespace),t.releaseId&&(this.releaseId=t.releaseId)}};We.REMOVED_OPTION_KEYS=["enableMasking","maskFields"];var Qe=We,Ge=class{constructor(){this.config=null,this.logger=d.getInstance(),this.privacyCache=null}initialize(e){this.config||(this.config=new Qe(e))}getConfig(){return this.config?this.config:(this.logger.log("[config-manager] configuration not initialized"),null)}getPrivacy(){return this.privacyCache||(this.privacyCache=function(e){const t=e?.privacy,n=function(e){return"mask-sensitive"===e||"mask-all"===e||"allow"===e?e:void 0}(t?.level)??"mask-sensitive",r="allow"===n,i=e=>!r&&(e??!0),s=i(t?.maskNetworkBodies),o=i(t?.maskNetworkQueryParams),a=i(t?.maskLogs),l=i(t?.maskErrors);return{level:n,maskNetworkBodies:s,maskNetworkQueryParams:o,maskLogs:a,maskErrors:l,shouldMaskNetworkBodies:!r&&s,shouldMaskNetworkQueryParams:!r&&o,shouldMaskLogs:!r&&a,shouldMaskErrors:!r&&l,sensitiveKeys:X(t?.sensitiveKeys),redact:"function"==typeof t?.redact?t.redact:void 0}}(this.config?.providedOptions)),this.privacyCache}updateConfig(e){this.logger.log("[config-manager] updateConfig called"),this.config?e&&(this.logger.log("[config-manager] updating options"),this.config.updateConfig(e),this.privacyCache=null):this.logger.log("[config-manager] configuration not initialized")}},Ve=He.transport?.batchSize??10,Je=He.transport?.batchTimeout??1e4;var Ze=class{constructor(e){this.events=[],this.timeoutId=null,this.logger=d.getInstance(),this.initialized=!1,this.noClusterWarned=!1,this.onBeforeEnqueue=null,this.flushGate=null,this.config=e.config,this.session=e.session,this.transporter=e.transporter,this.getDeviceAttributes=e.getDeviceAttributes,this.eventsToSkipFlush=e.eventsToSkipFlush}initialize(){try{if(this.initialized)return;this.scheduleFlush(),this.initialized=!0}catch(e){g(e)}}destroy(){try{null!==this.timeoutId&&(w.clearTimeout(this.timeoutId),this.timeoutId=null),this.events=[],this.initialized=!1}catch(e){g(e)}}setBeforeEnqueueHook(e){this.onBeforeEnqueue=e}setFlushGate(e){this.flushGate=e}discardBuffer(){this.events=[]}isFlushAllowed(){if(null===this.flushGate)return!0;try{return this.flushGate()}catch(e){return g(e),!0}}addEvent(e){var t;if(e&&this.initialized)try{const n=this.config.getConfig()?.options?.beforeSend,r=this.config.getConfig()?.options?.enrichEvent;let i=e;if(n&&!n(i))return;if(this.onBeforeEnqueue)try{this.onBeforeEnqueue(i)}catch(e){g(e)}if(r&&(i=r(i)),!this.isFlushAllowed()&&this.events.length>=500)return;this.events.push(i);const s=(t=this.config.getConfig()?.options?.transport?.batchSize,"number"==typeof t&&Number.isFinite(t)&&t>=0?t:Ve);this.events.length>=s&&!this.eventsToSkipFlush.includes(i.type)&&this.flush()}catch(e){g(e)}}flush({lifecycle:e=!1}={}){try{if(!this.initialized)return;if(!this.isFlushAllowed())return void this.scheduleFlush();if(!this.events?.length)return void this.scheduleFlush();if(!this.config.getConfig()?.cluster)return this.noClusterWarned||(this.noClusterWarned=!0,this.logger.log("[events-pool.flush] skipping flush: no cluster")),void this.scheduleFlush();this.noClusterWarned=!1;const t={sessionAttributes:this.getSessionAttributes(),events:this.events};e?this.transporter.send(t,{lifecycle:!0}):this.transporter.send(t),this.events=[],this.scheduleFlush()}catch(e){g(e)}}async flushSync(){try{if(!this.events?.length||!this.initialized)return;if(!this.isFlushAllowed())return void this.discardBuffer();if(!this.config.getConfig()?.cluster)return void this.logger.log("[events-pool.flush] skipping flush: no cluster");await this.transporter.send({sessionAttributes:this.getSessionAttributes(),events:this.events}),this.events=[]}catch(e){g(e)}}scheduleFlush(){try{null!==this.timeoutId&&(w.clearTimeout(this.timeoutId),this.timeoutId=null);const t=(e=this.config.getConfig()?.options?.transport?.batchTimeout,"number"==typeof e&&Number.isFinite(e)&&e>0?e:Je);this.timeoutId=w.setTimeout((()=>{this.timeoutId=null,this.flush()}),t)}catch(e){g(e)}var e}getSessionAttributes(){const e=this.config.getConfig();return{...this.getDeviceAttributes(),cluster:e?.cluster||"",env:e?.environment||"",namespace:e?.namespace||"",releaseId:e?.releaseId||"",session_id:this.session.getSessionId(),session_start_time:this.session.getSessionStartTime(),user:e?.user||{},"service.name":e?.appId}}},et=class{constructor(e){this.logger=d.getInstance(),this.config=e.config,this.enrichAttributes=e.enrichAttributes??null,this.idGenerator=e.idGenerator??new p}getPlatformAttributes(){if(!this.enrichAttributes)return{};try{return this.enrichAttributes()??{}}catch(e){return this.logger.log("[event-enricher] platform attribute contributor threw; continuing without it",e),{}}}shouldSample(){const e=this.config.getConfig()?.options?.eventSampleRate;return!(void 0!==e&&!Number.isNaN(e))||Math.random()<=e}formatEventObject(e,t="",n=new WeakSet,r=0){try{return r>=10?{[t||"depth_limit"]:"[Depth Limit]"}:T(e)?{[t||"dom_node"]:`[${e?.constructor?.name||"DomNode"}]`}:n.has(e)?{[t||"circular_reference"]:"[Circular]"}:(n.add(e),Object.entries(e).reduce(((e,[i,s])=>{const o=t?`${t}.${i}`:i;return"object"==typeof s&&null!==s?Array.isArray(s)?e[o]=s.map(((e,t)=>"object"==typeof e&&null!==e?this.formatEventObject(e,`${o}[${t}]`,n,r+1):e)):Object.assign(e,this.formatEventObject(s,o,n,r+1)):e[o]=s,e}),{}))}catch(e){return this.logger.log("[event-enricher.formatEventObject] Error formatting event object",e),{[t||"format_error"]:"[Error formatting object]"}}finally{n.delete(e)}}enrich(e){const t=S(Date.now()),n=this.idGenerator.generateId(),r=e.spanId||this.idGenerator.generateSpanId(),i=e.traceId||this.idGenerator.generateTraceId(),s=e.parentSpanId||"",o=this.formatEventObject(e.attributes||{}),a=this.getPlatformAttributes(),l={type:e.type,id:n,spanId:r,parentSpanId:s,traceId:i,attributes:{...o,...a}};return e.span_name&&(l.span_name=e.span_name),"network"===e.type?(l.start_timestamp=e.timestamp||t,l.end_timestamp=e?.end_timestamp):l.timestamp=t,l}};function tt(e,t){if(!t)return{data:(new TextEncoder).encode(e),isCompressed:!1};try{const t=l(e);return{data:c(t),isCompressed:!0}}catch(t){return{data:(new TextEncoder).encode(e),isCompressed:!1}}}var nt=class{constructor(e){this.logger=d.getInstance(),this.config=e.config,this.sendBatch=e.sendBatch,this.encodeAsync=e.encodeAsync??null}compressAsync(e,t){if(!this.encodeAsync)return Promise.resolve(tt(e,t));try{return this.encodeAsync(e,t).catch((()=>tt(e,t)))}catch{return Promise.resolve(tt(e,t))}}async send(e,{lifecycle:t=!1}={}){const n=this.config.getConfig();if(n)try{n?.options?.debug&&this.logger.log("Sending batch:",e,{groundcoverIgnore:!0});const r=n.apiKey,i=this.buildEndpoint();if(!r)return void this.logger.log("No API key found");const s=JSON.stringify(e),o=!!n?.options?.transport?.compression,{data:a,isCompressed:l}=t?tt(s,o):await this.compressAsync(s,o),c={"Content-Type":"application/json",apikey:r,"Content-Encoding":l?"gzip":""};this.sendBatch(i,{method:"POST",headers:c,body:a}).catch((e=>{this.logger.log("Network error while sending batch:",e,{groundcoverIgnore:!0})}))}catch(e){n?.options?.debug&&this.logger.log("Failed to send batch:",e,{groundcoverIgnore:!0})}}buildEndpoint(){const e=this.config.getConfig();return e?`${e.getEndpoint()}/json/rum`:""}},rt=class{constructor(e){this.storage=e}getItem(e){try{return this.storage?.getItem(e)??null}catch(e){return g(e),null}}setItem(e,t){try{this.storage?.setItem(e,t)}catch(e){g(e)}}removeItem(e){try{this.storage?.removeItem(e)}catch(e){g(e)}}getNumericItem(e,t=0){const n=this.getItem(e);if(null===n)return t;const r=Number(n);return Number.isFinite(r)?r:t}},it=class{constructor(e){this.sessionId=null,this.sessionStartTime=null,this.lastActivityMs=null,this.lastPersistedActivityMs=0,this.storage=e.storage,this.getMaxDurationMs=e.getMaxDurationMs??null}getSessionId(){if(this.sessionId)return this.sessionId;return this.storage.getItem("gcId")||""}setSessionId(e){this.sessionId=e,this.storage.setItem("gcId",e)}getSessionStartTime(){return this.sessionStartTime?this.sessionStartTime:this.storage.getNumericItem("gcStartTime",0)}setSessionStartTime(e){this.sessionStartTime=e,this.storage.setItem("gcStartTime",String(e)),this.lastActivityMs=null,this.lastPersistedActivityMs=0,this.storage.removeItem("gcLastActivity")}getLastActivityMs(){return null!==this.lastActivityMs?this.lastActivityMs:this.storage.getNumericItem("gcLastActivity",0)}setLastActivityMs(e){this.lastActivityMs=e,e-this.lastPersistedActivityMs>=6e4&&this.persistLastActivity()}persistLastActivity(){null!==this.lastActivityMs&&(this.lastPersistedActivityMs=this.lastActivityMs,this.storage.setItem("gcLastActivity",String(this.lastActivityMs)))}isSessionInactive(e=Date.now()){const t=this.getLastActivityMs(),n=t>0?t:k(this.getSessionStartTime());return n>0&&e-n>=Ne}hasUserActivity(){return this.getLastActivityMs()>0}clearSamplingDecision(){this.storage.removeItem(Ce)}clearSessionState(){this.sessionId=null,this.sessionStartTime=null,this.lastActivityMs=null,this.lastPersistedActivityMs=0,this.storage.removeItem("gcId"),this.storage.removeItem("gcStartTime"),this.storage.removeItem("gcLastActivity"),this.clearSamplingDecision()}getSessionMaxDuration(){return this.getMaxDurationMs?.()??qe}getSessionElapsedMs(e=Date.now()){const t=this.getSessionStartTime();return t?e-k(t):0}isSessionExpired(e=Date.now()){return this.getSessionElapsedMs(e)>=this.getSessionMaxDuration()}};function st(){const e=navigator.userAgent;let t="unknown",n="unknown";const r=navigator.platform||"unknown",i=/Mobile|Android|iPhone|iPad|iPod/i.test(e);return/Edg/.test(e)?(t="Edge",n=e.match(/Edg\/([\d.]+)/)?.[1]||n):/Chrome/.test(e)&&!/Chromium/.test(e)?(t="Chrome",n=e.match(/Chrome\/([\d.]+)/)?.[1]||n):/Firefox/.test(e)?(t="Firefox",n=e.match(/Firefox\/([\d.]+)/)?.[1]||n):/Safari/.test(e)&&!/Chrome/.test(e)?(t="Safari",n=e.match(/Version\/([\d.]+)/)?.[1]||n):/Trident/.test(e)?(t="Internet Explorer",n=/rv:([^)]+)\)/i.test(e)?e.match(/rv:([^)]+)\)/i)?.[1]||n:e.match(/MSIE ([^;]+)/)?.[1]||n):/OPR/.test(e)&&(t="Opera",n=e.match(/OPR\/([\d.]+)/)?.[1]||n),{userAgent:e,browser:{name:t,version:n,platform:r,language:navigator.language,mobile:i}}}var ot,at=["navigation","dom.event"],lt=class{constructor(e){this.core=null,this.hideWired=!1,this.hideHandler=()=>{try{if("undefined"==typeof document||"hidden"!==document.visibilityState)return;this.core?.session.persistLastActivity(),this.core?.pool.flush({lifecycle:!0})}catch(e){g(e)}},this.logger=d.initialize({debug:e.options?.debug||!1,prefix:"[groundcover]"}),this.logger.log("[session-manager] initialize called"),this.storage=new rt(function(){try{return void 0!==globalThis.sessionStorage?globalThis.sessionStorage:null}catch{return null}}()),this.idGenerator=new p;const t=new Ge;t.initialize(e);const n=new it({storage:this.storage,getMaxDurationMs:()=>t.getConfig()?.options?.sessionMaxDuration});!function({session:e,idGenerator:t,providedSessionId:n}){const r=d.getInstance();try{const i=e.getSessionId();n&&n!==i?(e.setSessionId(n),e.setSessionStartTime(S(Date.now())),e.clearSamplingDecision(),r.log("[session-bootstrap] using provided sessionId:",n)):n?(e.setSessionId(n),r.log("[session-bootstrap] continuing provided sessionId:",n)):i||e.setSessionId(t.generateId());const s=6e4,o=Date.now(),a=k(e.getSessionStartTime());if(a>0&&o-a>=-s){if(e.isSessionExpired(o)||e.isSessionInactive(o)){const n=e.isSessionExpired(o)?"persisted session past cap":"inactivity gap across reload",i=e.getSessionId(),s=t.generateId();e.setSessionId(s),e.setSessionStartTime(S(o)),e.clearSamplingDecision(),r.log(`[session-bootstrap] init-time rotation: ${n}`,{from:i,to:s})}}else e.setSessionStartTime(S(o))}catch(e){r.log("[session-bootstrap] session bootstrap failed:",e)}}({session:n,idGenerator:this.idGenerator,providedSessionId:e.sessionId});if(!function({storage:e,sessionSampleRate:t}){const n=d.getInstance();if(void 0===t||!Number.isFinite(t)||1===t)return!0;const r=t;try{const t=e.getItem(Ce);if(t){const e="1"===t;return n.log("[session-bootstrap] using stored sampling decision:",e),e}const i=Math.random()<r;return e.setItem(Ce,i?"1":"0"),n.log("[session-bootstrap] stored new sampling decision:",i),i}catch(e){n.log("[session-bootstrap] storage access failed:",e);const t=Math.random()<r;return n.log("[session-bootstrap] using fallback sampling decision:",t),t}}({storage:this.storage,sessionSampleRate:e.options?.sessionSampleRate}))return void this.logger.log("[session-manager] session is not sampled");const r=new nt({config:t,sendBatch:(e,t)=>fetch(e,t),encodeAsync:(e,t)=>Me.withFallback((n=>n.encodeBatch(e,t)),(()=>tt(e,t)),"transporter")}),i=new Ze({config:t,session:n,transporter:r,getDeviceAttributes:st,eventsToSkipFlush:at}),s=function(e){return()=>{let t="";try{t=w?.document?.title||""}catch(e){g(e)}try{const n=w?.location;if(!n)return{path:"",url:"",title:t};const r=n.hash&&!n.hash.match(/^#[a-z0-9-]+$/i)&&n.hash.startsWith("#/"),i=r?n.hash:n.pathname,s=e.getPrivacy(),o=s.shouldMaskNetworkQueryParams,a={sensitiveKeys:s.sensitiveKeys,redact:s.redact,kind:"query"};return{path:o&&r?D(i,a):i,url:o?D(n.href,a):n.href,title:t}}catch(e){return g(e),{path:"",url:"",title:t}}}}(t),o=new et({config:t,enrichAttributes:()=>({location:s()}),idGenerator:this.idGenerator}),a=new Oe({config:t,session:n,eventsPool:i,enricher:o});try{i.initialize(),Me.getInstance(),this.wireHideHandler(),a.instrument(),this.core={config:t,session:n,pool:i,instrumentation:a}}catch(e){this.logger.log("[session-manager] initialization failed — tearing down partial startup:",e);try{a.uninstrument()}catch(e){g(e)}throw i.destroy(),this.unwireHideHandler(),this.core=null,e}}wireHideHandler(){if(!this.hideWired&&"undefined"!=typeof document){this.hideWired=!0;try{document.addEventListener("visibilitychange",this.hideHandler)}catch(e){g(e)}}}unwireHideHandler(){if(this.hideWired&&"undefined"!=typeof document){this.hideWired=!1;try{document.removeEventListener("visibilitychange",this.hideHandler)}catch(e){g(e)}}}identifyUser(e){this.logger.log("[session-manager] identifyUser called"),this.core?this.core.config.updateConfig({user:e}):this.logger.log("[session-manager] cannot identify user: SDK not initialized")}updateConfig(e){if(!this.core)return void this.logger.log("[session-manager] cannot update config: SDK not initialized");this.core.config.updateConfig(e);const t=e.options,n=!!t&&"privacy"in t,r=!!t&&"object"==typeof t.replay&&null!==t.replay&&"blockedSelectors"in t.replay;(n||r)&&this.core.instrumentation.restartReplayForConfigChange()}sendCustomEvent(e){this.core?this.core.instrumentation.sendCustomEvent(e):this.logger.log("[session-manager] cannot send custom event: SDK not initialized")}startNavigation(e){this.core?this.core.instrumentation.startNavigation(e):this.logger.log("[session-manager] cannot start navigation: SDK not initialized")}endNavigation(e){this.core?this.core.instrumentation.endNavigation(e):this.logger.log("[session-manager] cannot end navigation: SDK not initialized")}captureException(e,t){this.core?this.core.instrumentation.captureException(e,t):this.logger.log("[session-manager] Cannot capture exception: SDK not initialized")}emitLog(e,t,n){this.core?this.core.instrumentation.emitLog(e,t,n):this.logger.log("[session-manager] Cannot emit log: SDK not initialized")}getSessionId(){return this.core?this.core.session.getSessionId():(this.logger.log("[session-manager] cannot get session ID: SDK not initialized"),"")}async setSessionId(e){if(this.logger.log("[session-manager] setSessionId called"),this.core)try{this.core.instrumentation.flushPendingReplay(),await this.core.pool.flushSync();const t=e||this.idGenerator.generateId();this.core.session.setSessionId(t),this.core.session.setSessionStartTime(S(Date.now())),this.logger.log("[session-manager] session ID set successfully:",t)}catch(e){this.logger.log("[session-manager] failed to set session ID:",e)}else this.logger.log("[session-manager] cannot set session ID: SDK not initialized")}startReplayRecording(){this.core?this.core.instrumentation.startReplayRecording():this.logger.log("[session-manager] cannot start replay recording: SDK not initialized")}stopReplayRecording(){this.core?this.core.instrumentation.stopReplayRecording():this.logger.log("[session-manager] cannot stop replay recording: SDK not initialized")}handoffForReinit(){const e=this.core;if(!e)return;const t=e.session.hasUserActivity();e.instrumentation.uninstrument(),t&&e.pool.flush({lifecycle:!0}),e.pool.destroy(),this.unwireHideHandler(),this.core=null}destroy(){const e=this.core;e&&(e.instrumentation.uninstrument(),e.pool.destroy(),this.unwireHideHandler(),Me.getInstance().terminate(),e.session.clearSessionState(),this.core=null)}},ct=new class{constructor(e){this.manager=e}emit(e,t,n){this.manager&&this.manager.emitLog(t,e,n)}log(e,t){this.emit("log",e,t)}info(e,t){this.emit("info",e,t)}warn(e,t){this.emit("warn",e,t)}error(e,t){this.emit("error",e,t)}debug(e,t){this.emit("debug",e,t)}trace(e,t){this.emit("trace",e,t)}};var ht={init:function(e){try{ot?.handoffForReinit(),ot=new lt({cluster:e?.cluster||"",environment:e?.environment||"",namespace:e?.namespace,releaseId:e?.releaseId,dsn:e?.dsn||"",appId:e?.appId||"",user:e?.user,apiKey:e?.apiKey||"",options:e?.options,sessionId:e?.sessionId}),ct.manager=ot}catch(e){g(e)}},identifyUser:function(e){ot?ot.identifyUser(e):console.warn("[groundcover] identifyUser: groundcover is not initialized. please call init() first")},sendCustomEvent:function(e){ot&&ot.sendCustomEvent(e)},captureException:function(e,t){ot&&ot.captureException(e,t)},logger:ct,updateConfig:function(e){if(ot)try{ot.updateConfig(e)}catch(e){g(e)}},startNavigation:function(e){ot?ot.startNavigation(e):console.warn("[groundcover] startNavigation: groundcover is not initialized. please call init() first")},endNavigation:function(e){ot?ot.endNavigation(e):console.warn("[groundcover] endNavigation: groundcover is not initialized. please call init() first")},getSessionId:function(){return ot?ot.getSessionId():(console.warn("[groundcover] getSessionId: groundcover is not initialized. please call init() first"),"")},setSessionId:async function(e){if(ot)try{await ot.setSessionId(e)}catch(e){console.error("[groundcover] setSessionId: failed to set session ID:",e)}else console.warn("[groundcover] setSessionId: groundcover is not initialized. please call init() first")},startReplayRecording:function(){ot?ot.startReplayRecording():console.warn("[groundcover] startReplayRecording: groundcover is not initialized. please call init() first")},stopReplayRecording:function(){ot?ot.stopReplayRecording():console.warn("[groundcover] stopReplayRecording: groundcover is not initialized. please call init() first")}};if("undefined"!=typeof window&&!window.groundcover)try{window.groundcover=ht}catch(e){console.warn("[groundcover] Failed to expose groundcover on window:",e)}var dt=ht;export{dt as default};
1
+ import e from"error-stack-parser";import{onCLS as t,onLCP as n,onFCP as r,onTTFB as i,onINP as s}from"web-vitals";import{record as o}from"rrweb";import{pack as a}from"@rrweb/packer";import{strToU8 as l,gzipSync as c}from"fflate";var h=console.log.bind(console),d=class e{constructor(){this.isDebugEnabled=!1,this.prefix=""}static initialize(t){return e.instance||(e.instance=new e),t&&(e.instance.isDebugEnabled=t.debug??!1,e.instance.prefix=t.prefix??""),e.instance}static getInstance(t){return e?.instance||e.initialize(t)}formatMessage(e){return`[${(new Date).toISOString()}] ${this.prefix} ${e}`}log(e,...t){this.isDebugEnabled&&h(this.formatMessage(e),...t)}updateConfig(e){this.isDebugEnabled=e.debug??this.isDebugEnabled,this.prefix=e.prefix??this.prefix}},u=d.getInstance();function g(e){u.log("[error-handler.handleError] called",e,{groundcoverIgnore:!0})}var p=class{constructor(){this.generateTraceId=function(){for(let e=0;e<16;e++)f[e]=Math.floor(16*Math.random())+48,f[e]>=58&&(f[e]+=39);return v+String.fromCharCode.apply(null,f.slice(0,16))},this.generateSpanId=m(8),this.generateId=m(16)}},f=Array(32);function m(e){return function(){for(let t=0;t<2*e;t++)f[t]=Math.floor(16*Math.random())+48,f[t]>=58&&(f[t]+=39);return String.fromCharCode.apply(null,f.slice(0,2*e))}}var v="0000000000000000";function y({text:e,maxLength:t=1e4,ellipsis:n=""}){if(null==e)return"";const r="string"==typeof e?e:String(e);return r.length<=t?r:r.substring(0,t)+n}function b(e){return(e||"").replace(/\s+/g," ").trim()}var w=globalThis,E=1e6;function S(e){return e*E}function k(e){return e/E}function I(e){if(null==e||"object"!=typeof e)return!1;try{return"number"==typeof e.nodeType&&"string"==typeof e.nodeName&&"ownerDocument"in e}catch{return!1}}var T="[REDACTED]",R=["authorization","cookie","set-cookie"],L=/(token|key|secret|passwd|password|auth|bearer|credential)/i,M=/(token|secret|passwd|password|api[_-]?key|access[_-]?key|write[_-]?key|auth|bearer|credential|cvv|ssn|credit[_-]?card|card[_-]?number)/i,x=new Set(["code","state","session_state","id_token","access_token","refresh_token","token"]),q=1e5;function A(e,t){if(!e)return!1;if(M.test(e))return!0;if(t?.length){const n=e.toLowerCase();return t.some((e=>e&&n.includes(e.toLowerCase())))}return!1}function N(e,t){return x.has(e.toLowerCase())||A(e,t)}function C(e){return e.includes("-")&&L.test(e)}function H(e,t){return A(e,t)||C(e)}function z(e,t){const n=e.sensitive?T:e.value;if(!t)return n;try{const r=t(e);return void 0===r?n:r}catch(e){return g(e),n}}function _(e,t={}){if(!e)return e;try{return e.split("&").map((e=>{const n=e.indexOf("=");if(-1===n)return e;const r=e.slice(0,n),i=e.slice(n+1);let s=r;try{s=decodeURIComponent(r)}catch{}let o=i;try{o=decodeURIComponent(i)}catch{}const a=N(s,t.sensitiveKeys),l=z({key:s,value:o,path:[s],kind:t.kind??"query",sensitive:a},t.redact);return l===o?e:`${r}=${encodeURIComponent(null===l?"":String(l))}`})).join("&")}catch{return e}}function P(e,t){const n=e.indexOf("?");return-1===n?e:`${e.slice(0,n)}?${_(e.slice(n+1),t)}`}function D(e,t={}){if(!e)return e;const n={...t,kind:t.kind??"query"},r=e.indexOf("#"),i=-1===r?e:e.slice(0,r),s=-1===r?"":e.slice(r+1),o=P(function(e){return e.replace(/^([a-zA-Z][\w+.-]*:\/\/)[^/?#@]*@/,((e,t)=>`${t}${T}@`))}(i),n);return-1===r?o:`${o}#${P(s,n)}`}function F(e,t,n,r,i,s){const o=!!e&&A(e,r.sensitiveKeys);if(null!==t&&"object"==typeof t){if(o||i>8)return T;if(I(t))return T;if(s.has(t))return T;s.add(t);try{if(Array.isArray(t))return t.map((t=>F(e,t,n,r,i+1,s)));const o={};for(const[e,a]of Object.entries(t))o[e]=F(e,a,[...n,e],r,i+1,s);return o}catch(e){return g(e),T}finally{s.delete(t)}}return z({key:e,value:t,path:n,kind:r.kind??"log",sensitive:o},r.redact)}function O(e,t={}){if(!e)return e;if(e.length>q)return`${O(e.slice(0,q),t)}…`;let n=e;try{n=n.replace(/"([\w.-]{1,64})"\s*:\s*("(?:[^"\\]|\\.)*"|[^\s,}\]]+)/g,((e,n)=>H(n,t.sensitiveKeys)?`"${n}":"${T}"`:e)),n=n.replace(/([\w.-]{1,64})=([^\s&,;?]+)/g,((e,n)=>function(e,t){return N(e,t)||C(e)}(n,t.sensitiveKeys)?`${n}=${T}`:e)),n=n.replace(/([\w.-]{1,64}):[ \t]*([^\n,;&]{1,4096})/g,((e,n)=>H(n,t.sensitiveKeys)?`${n}: ${T}`:e))}catch(t){g(t),n=e}if(t.redact)try{const n=t.redact({key:"",value:e,path:[],kind:t.kind??"log",sensitive:!1});if(void 0!==n)return null===n?"":String(n)}catch(e){g(e)}return n}function B(e,t={}){try{const n=F("",e,[],t,0,new WeakSet);return null!==n&&"object"==typeof n?n:{}}catch(e){return g(e),{}}}function j(e,t,n){if(!e.shouldMaskLogs)return{message:t,attributes:n};const r={sensitiveKeys:e.sensitiveKeys,redact:e.redact,kind:"log"};return{message:O(t,r),attributes:n?B(n,r):n}}var K=class{constructor(e){this.logger=d.getInstance(),this.config=e.config,this.pool=e.pool,this.enricher=e.enricher}sendCustomEvent(e){this.logger.log("[manual-event-emitter.sendCustomEvent] called",e);try{const t=this.enricher.enrich({type:"custom",attributes:{custom_event_name:e?.event,custom_event_attributes:e?.attributes}});this.pool.addEvent(t)}catch(e){g(e)}}emitLog(e,t,n){this.logger.log("[manual-event-emitter.emitLog] called",{message:e,level:t,attributes:n});try{const r={...n||{}};delete r.message,delete r.level,delete r.location;const{message:i,attributes:s}=j(this.config.getPrivacy(),e,r),o=this.enricher.enrich({type:"log",attributes:{...s,message:y({text:i}),level:t}});this.pool.addEvent(o)}catch(e){g(e)}}},U=class{constructor(e){this.logger=d.getInstance(),this.config=e.config,this.eventsPool=e.eventsPool,this.enricher=e.enricher}};function X(e){return Array.isArray(e)?e.filter((e=>"string"==typeof e)).map((e=>e.trim())).filter((e=>e.length>0)):[]}function Y(e){const t=e.getPrivacy(),n=e.getConfig()?.providedOptions?.privacy;return{...t,maskSelectors:X(n?.maskSelectors)}}var $="undefined"!=typeof Element?Object.getOwnPropertyDescriptor(Element.prototype,"tagName")?.get:void 0;function W(e,t){try{return e.getAttribute(t)||""}catch{return""}}function Q(e){try{const t=$?.call(e);return"string"==typeof t?t:""}catch{return""}}function G(e,t){try{return null!=e.closest?.(t)}catch{return!1}}function V(e,t){return!!e&&("password"===e.type||function(e){return["id","name","class","aria-label","placeholder"].map((t=>W(e,t))).filter(Boolean)}(e).some((e=>A(e,t))))}function J(e,t){return"allow"!==t.level&&(!!e&&(!!G(e,"[data-private]")||(!(!t.maskSelectors.length||!t.maskSelectors.some((t=>G(e,t))))||("mask-all"===t.level||function(e){const t=Q(e).toLowerCase();return"input"===t||"textarea"===t||"select"===t}(e)&&V(e,t.sensitiveKeys)))))}var Z={role:"",accessibleName:"",ariaLabel:"",title:"",alt:"",placeholder:"",name:"",inputType:"",href:""},ee=["button","a","input","select","textarea","label","summary",'[role~="button"]','[role~="link"]','[role~="menuitem"]','[role~="menuitemcheckbox"]','[role~="menuitemradio"]','[role~="tab"]','[role~="checkbox"]','[role~="radio"]','[role~="switch"]','[role~="option"]','[role~="treeitem"]','[role~="slider"]','[role~="spinbutton"]','[role~="combobox"]','[role~="textbox"]','[role~="searchbox"]'].join(", "),te=[ee,"li","option","tr","td","th",'[role~="listitem"]','[role~="row"]','[role~="gridcell"]','[role~="cell"]'].join(", ");function ne(e){return!!e&&1===e.nodeType}function re(e){const t=Q(e).toLowerCase();return"body"===t||"html"===t}function ie(e){return y({text:e,maxLength:255})}function se(e){return y({text:e,maxLength:99,ellipsis:"…"})}function oe(e){const t=b(W(e,"role"));return t?t.split(" ")[0]??t:function(e){switch(Q(e).toLowerCase()){case"a":return W(e,"href")?"link":"";case"button":return"button";case"input":switch(W(e,"type").toLowerCase()){case"checkbox":return"checkbox";case"radio":return"radio";case"submit":case"button":case"reset":return"button";case"range":return"slider";case"number":return"spinbutton";default:return"textbox"}case"textarea":return"textbox";case"select":return"combobox";case"img":return"img";case"nav":return"navigation";case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return"heading";default:return""}}(e)}function ae(e){if(!ne(e))return"";try{if(re(e))return"";if(function(e){try{return e.querySelectorAll(te).length>=2}catch{return!1}}(e))return"";const t=b(e.textContent||"");return t?t.length>1e3?"":y({text:t,maxLength:255}):""}catch{return""}}function le(e){return W(e,"aria-labelledby").split(/\s+/).filter(Boolean).slice(0,5)}function ce(e,t){if(re(e))return"";const n=function(e){const t=[];for(const n of le(e))try{const e=ae(document.getElementById(n));e&&t.push(e)}catch{}return b(t.join(" "))}(e);if(n)return se(n);const r=b(W(e,"aria-label"));if(r)return se(r);const i=b(W(e,"alt"));if(i)return se(i);if(function(e){const t=Q(e).toLowerCase();if("button"===t)return!0;if("input"!==t)return!1;const n=W(e,"type").toLowerCase();return"submit"===n||"button"===n||"reset"===n}(e)){const t=b(W(e,"value"));if(t)return se(t)}const s=t??ae(e);if(s)return se(s);const o=b(W(e,"title"));if(o)return se(o);const a=b(W(e,"placeholder"));return a?se(a):""}function he(e,t){if("allow"===t.level)return!1;try{return!!e.querySelector("[data-private]")||t.maskSelectors.some((t=>{try{return null!=e.querySelector(t)}catch{return!1}}))}catch{return!1}}var de=class extends U{constructor(){super(...arguments),this.eventHandlers=[],this.capturedEvents=["click","change","keydown","select","submit"],this.getShouldMaskText=e=>J(e.target,Y(this.config)),this.getKeyCode=(e,t)=>e instanceof KeyboardEvent&&e.code&&"Dead"!==e.key?t?"*":e.key:"",this.getCoordinates=e=>{if({mouseup:!0,mousedown:!0,mousemove:!0,mouseover:!0}[e.type]){const{clientX:t,clientY:n}=e||{};return{clientX:t,clientY:n}}return null}}initialize(){try{this.logger.log("[dom-events-listener.initialize] called"),this.capturedEvents?.forEach((e=>{const t=e=>{try{this.handleEvent(e)}catch(e){g(e)}};this.eventHandlers.push({type:e,handler:t}),w?.addEventListener(e,t)}))}catch(e){g(e)}}destroy(){this.eventHandlers.forEach((({type:e,handler:t})=>{global?.removeEventListener?.(e,t)})),this.eventHandlers=[]}handleEvent(e){try{if(!this.enricher.shouldSample())return;const t=this.buildEvent(e);this.queueEvent(t)}catch(e){g(e)}}buildEvent(e){const t=this.getCoordinates(e),n=e.target,r=function(e){if(!ne(e))return null;try{return e.closest(ee)}catch{return null}}(n)??n,i=Y(this.config),s=this.getShouldMaskText({target:n||null})||!!r&&(he(r,i)||function(e,t){if("allow"===t.level)return!1;try{for(const n of le(e)){const e=document.getElementById(n);if(e&&ae(e)&&(J(e,t)||he(e,t)))return!0}}catch{}return!1}(r,i)),o=r?this.generateSelector(r,s?{priorityAttributes:["id","class","name","type"]}:{}):"",a=this.getKeyCode(e,s),l=ae(r),c=function(e,t){if(!ne(e))return{...Z};try{return{role:ie(oe(e)),accessibleName:ce(e,t),ariaLabel:ie(b(W(e,"aria-label"))),title:ie(b(W(e,"title"))),alt:ie(b(W(e,"alt"))),placeholder:ie(b(W(e,"placeholder"))),name:ie(W(e,"name")),inputType:ie(W(e,"type")),href:ie(W(e,"href"))}}catch{return{...Z}}}(r,l),h=i.shouldMaskNetworkQueryParams?D(c.href,{sensitiveKeys:i.sensitiveKeys,redact:i.redact,kind:"query"}):c.href,d=e=>s&&e?"*":e;this.logger.log("[dom-events-listener.buildEvent] called");const u={dom_event_selector:o,dom_event_key_code:a,dom_event_type:e.type,dom_event_coordinates:t||{clientX:0,clientY:0},dom_event_target:{id:W(r,"id"),tagName:Q(r),className:W(r,"class"),text:s?"*":l,role:c.role,accessibleName:d(c.accessibleName),ariaLabel:d(c.ariaLabel),title:d(c.title),alt:d(c.alt),placeholder:d(c.placeholder),name:c.name,inputType:c.inputType,href:d(h)}};return this.enricher.enrich({type:"dom.event",attributes:u})}queueEvent(e){try{this.logger.log("[dom-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){g(e)}}generateSelector(e,t={}){if(!e||!e.nodeType||e.nodeType!==Node.ELEMENT_NODE)return"";const n=t.root||document.body||document.documentElement,r=t.maxAttempts||10,i=t.priorityAttributes||["id","class","name","aria-label","type","title","alt"];if("html"===Q(e).toLowerCase())return"html";let s="",o=0,a=e;const l=[];for(;a&&a!==n&&a!==document.documentElement&&o<r;){let e=Q(a).toLowerCase();try{const t=a.getAttribute("id");if(t&&/^[a-zA-Z][\w-]*$/.test(t))return`#${t}`;if(a.classList?.length){const t=Array.from(a.classList).filter((e=>e&&"string"==typeof e)).map((e=>`.${e}`));t.length&&(e+=t.join(""))}for(const t of i)if("id"!==t&&"class"!==t)try{const n=a.getAttribute(t);n&&(e+=`[${t}="${n.replace(/"/g,'\\"')}"]`)}catch(e){}}catch(t){e=Q(a).toLowerCase()||"*"}l.unshift(e||"*"),s=l.join(" > ");try{if(1===n.querySelectorAll(s).length)return s}catch(e){l.shift(),s=l.join(" > ")}try{a=a.parentElement}catch(e){break}o++}return s||"*"}},ue=["log","info","warn","error","debug","assert","trace"],ge=class extends U{constructor(){super(...arguments),this.originalConsole=null,this.patchedConsole=null,this.isInitialized=!1}initialize(){if(!this.isInitialized)try{this.originalConsole=this.captureConsoleMethods();const e={};ue.forEach((t=>{if(!(t in console))return;const n=(...e)=>{try{this.isInitialized&&this.handleEvent(e,t)}catch(e){g(e)}finally{this.originalConsole?.[t]&&this.originalConsole[t](...e)}};console[t]=n,e[t]=n})),this.patchedConsole=e,this.isInitialized=!0}catch(e){g(e)}}destroy(){try{if(!this.isInitialized)return;ue.forEach((e=>{this.originalConsole?.[e]&&this.patchedConsole?.[e]&&console[e]===this.patchedConsole[e]&&(console[e]=this.originalConsole[e])})),this.patchedConsole=null,this.isInitialized=!1}catch(e){g(e)}}handleEvent(e,t){try{if(!this.enricher.shouldSample())return;const n=Array.isArray(e)?e:[e],r=this.formatMessage(n,t);if(!r||r?.includes("groundcoverIgnore"))return;const i=this.extractAttributes(n),s=this.buildEvent({message:r,level:t,attributes:i});this.queueEvent(s)}catch(e){g(e)}}buildEvent({message:e,level:t,attributes:n}){const{message:r,attributes:i}=j(this.config.getPrivacy(),e,n);return this.enricher.enrich({type:"log",attributes:{...i,message:y({text:r}),level:t}})}queueEvent(e){try{this.logger.log("[logs-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){g(e)}}extractAttributes(e){if(Array.isArray(e)&&0!==e.length)try{const t={};for(const n of e)null!==n&&"object"==typeof n&&"[object Object]"===Object.prototype.toString.call(n)&&Object.assign(t,n);return delete t.message,delete t.level,delete t.location,t}catch(e){return void g(e)}}formatMessage(e,t){if(!Array.isArray(e))return String(e);try{return e.map((e=>{if(void 0===e)return"undefined";if(null===e)return"null";if("object"==typeof e){if(e instanceof Error)try{return"error"===t&&e.stack||e.toString()}catch{try{const t={name:e.name,message:e.message,stack:e.stack};return JSON.stringify(t)}catch{return Object.prototype.toString.call(e)}}try{return JSON.stringify(e)}catch{return Object.prototype.toString.call(e)}}return String(e)})).join(" ")}catch(e){return g(e),"[Error formatting console message]"}}captureConsoleMethods(){const e={};try{ue.forEach((t=>{console&&"function"==typeof console[t]&&(e[t]=console[t].bind(console))}))}catch(e){g(e)}return e}};function pe(e){try{if(null==e)return"";if("string"==typeof e)return e;if("undefined"!=typeof FormData&&e instanceof FormData)return"[form data]";if("undefined"!=typeof Blob&&e instanceof Blob)return"[blob data]";if(e instanceof ArrayBuffer)return"[arraybuffer data]";if(ArrayBuffer.isView(e))return"[arraybuffer data]";if("undefined"!=typeof ReadableStream&&e instanceof ReadableStream)return"[stream data]";if(9===e?.nodeType)return"[document data]";if("undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams)try{return e.toString()}catch{return"[unreadable body]"}return Array.isArray(e)||"object"==typeof e?JSON.stringify(e):String(e)}catch(e){return g(`Failed to format body: ${e}`),"[unreadable body]"}}var fe="[request body too large]",me="[request body unavailable]",ve="[response body too large]",ye="[response body unavailable]",be="[unreadable response body]",we="[form data]",Ee="[binary data]",Se=class extends U{constructor(){super(...arguments),this.maxBodyLength=5e3,this.requestBodyReadTimeoutMs=3e3,this.responseBodyReadTimeoutMs=3e3,this.idGenerator=new p,this.patched=null,this.active=!1,this.handleEvent=e=>{try{if(!this.active)return;if(this.shouldIgnoreRequest(e.url))return;if(!this.enricher.shouldSample())return;const t=this.buildEvent(e);this.queueEvent(t)}catch(e){g(e)}},this.buildEvent=e=>{let t=e.url,n=e.url;this.logger.log("[network-events-listener.buildEvent] called",{event:e});const r=this.config.getPrivacy(),i={sensitiveKeys:r.sensitiveKeys,redact:r.redact,kind:"query"};try{t=new URL(e.url).pathname}catch(s){n=new URL(e.url,globalThis.location.href).href,r.shouldMaskNetworkQueryParams&&(t=D(t,i))}r.shouldMaskNetworkQueryParams&&(n=D(n,i)),this.logger.log("[network-events-listener.buildEvent] fullUrl",{fullUrl:n});const s=this.formatHeaders(e.request.headers),o=this.formatHeaders(e.response.headers),a=e.method?.toUpperCase()||"UNKNOWN",{traceId:l,spanId:c}=this.extractTraceIds(e.request.headers),h=(e,t)=>r.shouldMaskNetworkBodies?function(e,t={}){if(!e)return e;const n=e.trim();if(n.length<=q&&(n.startsWith("{")||n.startsWith("[")))try{const e=JSON.parse(n);return JSON.stringify(F("",e,[],t,0,new WeakSet))}catch{}return e.includes("=")&&!e.includes("{")?_(e,t):O(e,t)}(e,{sensitiveKeys:r.sensitiveKeys,redact:r.redact,kind:t}):e,d=y({text:h(e.request.body,"request-body"),maxLength:this.maxBodyLength}),u=y({text:h(e.response.body,"response-body"),maxLength:this.maxBodyLength}),g={type:"HTTP",operation:{name:a},resource_name:t,status:e.status?.toString(),subType:a,url:{full:n},http:{route:t,path:t,method:e.method,status:e.status?.toString(),request:{headers:s,method:e.method},response:{headers:o,status_code:e.status?.toString()}},error:e?.error?.type?{type:e.error?.type||"Unknown error"}:void 0,gc:{request:{body:d},response:{body:u}}},p={type:"network",timestamp:e?.timestamp&&!Number.isNaN(e.timestamp)?S(e.timestamp):void 0,end_timestamp:e?.end_time&&!Number.isNaN(e.end_time)?S(e.end_time):void 0,span_name:`${e.method} ${t}`,attributes:g};return l&&(p.traceId=l),c&&(p.spanId=c),this.enricher.enrich(p)}}async readBodyStreamCapped(e,t={}){if(!e)return"";const{timeoutMs:n,overflowPlaceholder:r,timeoutPlaceholder:i}=t,s=e.getReader(),o=new TextDecoder;let a,l="",c=0,h=!1,d=!1;const u=null!=n?new Promise((e=>{a=setTimeout((()=>e({timedOut:!0})),n)})):void 0;try{for(;;){const e=u?await Promise.race([s.read(),u]):await s.read();if("timedOut"in e){d=!0;break}const{done:t,value:n}=e;if(t)break;if(c+n.byteLength>=this.maxBodyLength){const e=n.subarray(0,this.maxBodyLength-c);l+=o.decode(e,{stream:!0}),h=!0;break}c+=n.byteLength,l+=o.decode(n,{stream:!0})}return l+=o.decode(),d&&null!=i?i:h&&null!=r?r:l}finally{clearTimeout(a);try{s.cancel()?.catch((()=>{}))}catch{}}}mimeEssence(e){return(e.split(";")[0]||"").trim().toLowerCase()}isTextualContentType(e){const t=this.mimeEssence(e);return!!t&&(!!t.startsWith("text/")||("application/x-www-form-urlencoded"===t||"application/javascript"===t||"application/ecmascript"===t||"application/graphql"===t||/^application\/([\w.-]+\+)?(json|xml)$/.test(t)))}binaryLabel(e){const t=this.mimeEssence(e);return t.startsWith("image/")?"[image data]":t.startsWith("audio/")?"[audio data]":t.startsWith("video/")?"[video data]":t.startsWith("font/")||t.startsWith("application/font")||"application/vnd.ms-fontobject"===t?"[font data]":"application/pdf"===t?"[pdf data]":"application/zip"===t||"application/gzip"===t||"application/x-gzip"===t||"application/x-tar"===t||"application/x-7z-compressed"===t||"application/x-rar-compressed"===t?"[archive data]":"application/wasm"===t?"[wasm data]":t.includes("protobuf")||t.startsWith("application/grpc")?"[protobuf data]":Ee}classifyByContentType(e){const t=(e||"").toLowerCase();return t.includes("multipart/form-data")?we:this.isTextualContentType(t)?null:this.binaryLabel(t)}capBodyText(e,t){return e&&(e.length>=this.maxBodyLength||(new TextEncoder).encode(e).length>=this.maxBodyLength)?t:e}async getRequestBody(e,t){try{if(!e.body)return"";const n=this.classifyByContentType(t);return null!=n?n:await this.readBodyStreamCapped(e.clone().body,{timeoutMs:this.requestBodyReadTimeoutMs,overflowPlaceholder:fe,timeoutPlaceholder:me})}catch{return me}}async getResponseBody(e){if(!e.body)return"";const t=e.headers?.get?.("content-type")??"";if("text/event-stream"===this.mimeEssence(t))return be;const n=this.classifyByContentType(t);return null!=n?n:await this.readBodyStreamCapped(e.clone().body,{timeoutMs:this.responseBodyReadTimeoutMs,overflowPlaceholder:ve,timeoutPlaceholder:ye})}initialize(){this.logger.log("[network-events-listener.initialize] called");const e=globalThis.fetch,t=globalThis.XMLHttpRequest.prototype.open,n=globalThis.XMLHttpRequest.prototype.send,r=globalThis.XMLHttpRequest.prototype.setRequestHeader;try{this.patchXHR(),this.patchFetch()}catch(i){return globalThis.fetch=e,globalThis.XMLHttpRequest.prototype.open=t,globalThis.XMLHttpRequest.prototype.send=n,globalThis.XMLHttpRequest.prototype.setRequestHeader=r,this.patched=null,void g(i)}this.patched={originalFetch:e,wrappedFetch:globalThis.fetch,originalXHROpen:t,wrappedXHROpen:globalThis.XMLHttpRequest.prototype.open,originalXHRSend:n,wrappedXHRSend:globalThis.XMLHttpRequest.prototype.send,originalXHRSetRequestHeader:r,wrappedXHRSetRequestHeader:globalThis.XMLHttpRequest.prototype.setRequestHeader},this.active=!0}destroy(){this.active=!1;const e=this.patched;e&&(globalThis.fetch===e.wrappedFetch&&(globalThis.fetch=e.originalFetch),globalThis.XMLHttpRequest.prototype.open===e.wrappedXHROpen&&(globalThis.XMLHttpRequest.prototype.open=e.originalXHROpen),globalThis.XMLHttpRequest.prototype.send===e.wrappedXHRSend&&(globalThis.XMLHttpRequest.prototype.send=e.originalXHRSend),globalThis.XMLHttpRequest.prototype.setRequestHeader===e.wrappedXHRSetRequestHeader&&(globalThis.XMLHttpRequest.prototype.setRequestHeader=e.originalXHRSetRequestHeader),this.patched=null)}shouldIgnoreRequest(e){try{const t=this.config.getConfig()?.getEndpoint();if(t&&e.includes(t))return!0;if([".tsx",".jsx",".css"].some((t=>e.toLowerCase().endsWith(t))))return!0;return(this.config.getConfig()?.options?.excludedUrls||[]).some((t=>{if(t instanceof RegExp)return t.test(e);if("string"==typeof t&&(t.includes("*")||t.includes("?"))){const n=t.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(n).test(e)}return e===t}))}catch(e){return g(e),!1}}queueEvent(e){try{this.logger.log("[network-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){g(e)}}patchXHR(){const e=this,t=globalThis.XMLHttpRequest.prototype.open,n=globalThis.XMLHttpRequest.prototype.send,r=globalThis.XMLHttpRequest.prototype.setRequestHeader;let i;globalThis.XMLHttpRequest.prototype.open=function(n,r,s=!0,o,a){if(!e.active)return t.apply(this,[n,r,s,o,a]);if(i=Date.now(),e.shouldIgnoreRequest(r.toString()))return t.apply(this,[n,r,s,o,a]);const l=new URL(r.toString(),globalThis.location.href).href;return this._requestMethod=n,this._requestUrl=l,this._requestHeaders={},t.apply(this,[n,r,s,o,a])},globalThis.XMLHttpRequest.prototype.setRequestHeader=function(t,n){return e.active?(this._requestHeaders&&(this._requestHeaders[t]=n),r.apply(this,[t,n])):r.apply(this,[t,n])},globalThis.XMLHttpRequest.prototype.send=function(...t){if(!e.active)return n.apply(this,t);const r=this._requestUrl?.toString();if(!r||e.shouldIgnoreRequest(r))return n.apply(this,t);if(e.shouldAddTraceHeader(r)){const t=e.config.getConfig(),n=e.getTraceIds();t?.options?.tracing?.origin?.name&&e.addHeaderToXhrRequest({request:this,headerName:t.options.tracing.origin.name,headerValue:t.options.tracing.origin.value}),n&&(t?.options?.tracing?.traceIdHeaderName&&e.addHeaderToXhrRequest({request:this,headerName:t.options.tracing.traceIdHeaderName,headerValue:n.decimalTraceId}),t?.options?.tracing?.spanIdHeaderName&&e.addHeaderToXhrRequest({request:this,headerName:t.options.tracing.spanIdHeaderName,headerValue:n.decimalSpanId}),Boolean(t?.options?.tracing?.propagationHeaders)&&t?.options?.tracing?.propagationHeaders?.forEach((t=>{e.addHeaderToXhrRequest({request:this,headerName:t,headerValue:n.traceparent})})),t?.options?.tracing?.propagationHeaders?.length||e.addHeaderToXhrRequest({request:this,headerName:"traceparent",headerValue:n.traceparent}))}return this._requestBody=t[0]||"",this.addEventListener("load",(()=>{const t=Date.now(),n={};this.getAllResponseHeaders().split(/\r?\n/).forEach((e=>{const[t,r]=e.split(": ");t&&r&&(n[t.trim()]=r.trim())}));const r=e.capBodyText(pe(this._requestBody),fe),s=""===this.responseType||"text"===this.responseType,o=s?this.responseText:this.response,a=(s?e.classifyByContentType(n["content-type"]||""):null)??e.capBodyText(pe(o),ve),l={timestamp:i,end_time:t,method:this._requestMethod,url:this._requestUrl,body:r,status:this.status,request:{headers:this._requestHeaders||{},body:r},response:{headers:n,body:a}};e.handleEvent(l)})),n.apply(this,t)}}normalizeHeaders(e,t){try{const n=e?new Headers(e):new Headers;return t?(t instanceof Headers?t.forEach(((e,t)=>n.set(t,e))):Array.isArray(t)?new Headers(t).forEach(((e,t)=>n.set(t,e))):"object"==typeof t&&Object.entries(t).forEach((([e,t])=>n.set(e,t))),n):n}catch{return new Headers}}addTraceHeaders(e){const t=this.config.getConfig(),n=this.getTraceIds();if(t?.options?.tracing?.origin?.name&&this.addHeaderToFetchRequest({init:e,headerName:t.options.tracing.origin.name,headerValue:t.options.tracing.origin.value}),!n)return;t?.options?.tracing?.traceIdHeaderName&&this.addHeaderToFetchRequest({init:e,headerName:t.options.tracing.traceIdHeaderName,headerValue:n.decimalTraceId}),t?.options?.tracing?.spanIdHeaderName&&this.addHeaderToFetchRequest({init:e,headerName:t.options.tracing.spanIdHeaderName,headerValue:n.decimalSpanId});const r=t?.options?.tracing?.propagationHeaders;(r?.length?r:["traceparent"]).forEach((t=>{this.addHeaderToFetchRequest({init:e,headerName:t,headerValue:n.traceparent})}))}extractHeadersRecord(e){const t={};return e instanceof Headers&&e.forEach(((e,n)=>{t[n]=e})),t}patchFetch(){const e=globalThis.fetch;globalThis.fetch=(...t)=>{if(!this.active)return e.apply(globalThis,t);const n=Date.now();let[r,i]=t;i={...i||{}},t[1]=i;const s=r instanceof Request,o=i?.method||(s?r.method:"GET"),a=r instanceof Request?r.url:r.toString();if(this.shouldIgnoreRequest(a))return e.apply(globalThis,t);const l=this.shouldAddTraceHeader(a);i.headers=this.normalizeHeaders(s?r.headers:void 0,i.headers),l&&this.addTraceHeaders(i);const c=this.extractHeadersRecord(i.headers),h=null!=i?.body?this.capBodyText(pe(i.body),fe):"",d=null!=i?.body?Promise.resolve(h):s?this.getRequestBody(r,"content-type"in c?c["content-type"]:r.headers.get("content-type")??""):Promise.resolve("");let u;return d.then((e=>{u=e})).catch((()=>{})),e.apply(globalThis,t).then((e=>{const t=Date.now(),r={};e.headers.forEach(((e,t)=>{r[t]=e}));const i={method:o,url:a,timestamp:n,body:"",status:e.status,end_time:t,request:{headers:c,body:""},response:{headers:r,body:""}},s=()=>{d.then((e=>{i.body=e,i.request.body=e,this.handleEvent(i)}))};return this.getResponseBody(e).then((e=>{i.response.body=e,s()})).catch((e=>{i.response.body=be,s(),this.logger.log("[network-events-listener.patchFetch] error",{error:e})})),e})).catch((e=>{const t=Date.now();let r="NetworkError";const i=e.message||"Unknown network error";e instanceof TypeError&&i.includes("Failed to fetch")?r="ERR_NETWORK_FAILURE":i.includes("Name not resolved")?r="ERR_NAME_NOT_RESOLVED":i.includes("Connection refused")&&(r="ERR_CONNECTION_REFUSED");const s=u??h,l={method:o,url:a,timestamp:n,body:s,status:0,end_time:t,request:{headers:c,body:s},response:{headers:{},body:""},error:{type:r}};throw this.handleEvent(l),e}))}}formatHeaders(e){const t=this.config.getPrivacy(),n="allow"===t.level,r=function(e,t={}){return e?Object.entries(e).reduce(((e,[n,r])=>{const i=n.toLowerCase(),s=z({key:n,value:r,path:[n],kind:"header",sensitive:R.includes(i)||L.test(i)||A(n,t.sensitiveKeys)},t.redact);return e[n]=null===s?"":String(s),e}),{}):e}(e,{sensitiveKeys:n?void 0:t.sensitiveKeys,redact:n?void 0:t.redact});return Object.entries(r)?.reduce(((e,[t,n])=>(e[t]=y({text:n}),e)),{})}extractTraceIds(e){const t=this.config.getConfig();let n="",r="";if(t?.options?.tracing?.traceIdHeaderName){const r=e[t.options.tracing.traceIdHeaderName];r&&"string"==typeof r&&(n=r)}if(t?.options?.tracing?.spanIdHeaderName){const n=e[t.options.tracing.spanIdHeaderName];n&&"string"==typeof n&&(r=n)}if(!n||!r){const t=this.extractTraceparentHeader(e);if(t){const e=t.split("-");4===e.length&&"00"===e[0]&&(!n&&e[1]&&32===e[1].length&&(n=e[1]),!r&&e[2]&&16===e[2].length&&(r=e[2]))}}return{traceId:n,spanId:r}}extractTraceparentHeader(e){const t=this.config.getConfig();if(t?.options?.tracing?.propagationHeaders?.length)for(const n of t.options.tracing.propagationHeaders){const t=e[n];if(t&&"string"==typeof t)return t}const n=e.traceparent;return n&&"string"==typeof n?n:""}getTraceIds(){const e=this.idGenerator.generateSpanId(),t=this.idGenerator.generateTraceId();let n,r;try{n=BigInt("0x"+t).toString(10),r=BigInt("0x"+e).toString(10)}catch(i){this.logger.log("[network-events-listener.getTraceIds] error",{error:i}),n=t,r=e}return{traceparent:`00-${t}-${e}-01`,traceId:t,spanId:e,decimalTraceId:n,decimalSpanId:r}}addHeaderToXhrRequest({request:e,headerName:t,headerValue:n}){if(this.logger.log("[network-events-listener.addHeaderToXhrRequest] called",{request:e,headerName:t,headerValue:n}),this.isValidHeaderName(t))try{e.setRequestHeader(t,n),e._requestHeaders[t]=n}catch(e){this.logger.log("[network-events-listener.addHeaderToXhrRequest] Error setting header",{error:e,headerName:t,headerValue:n})}else this.logger.log("[network-events-listener.addHeaderToXhrRequest] Invalid header name",{headerName:t})}addHeaderToFetchRequest({init:e,headerName:t,headerValue:n}){if(this.logger.log("[network-events-listener.addHeaderToFetchRequest] called",{init:e,headerName:t,headerValue:n}),this.isValidHeaderName(t))try{e.headers instanceof Headers?e.headers.set(t,n):e.headers={...e.headers,[t]:n}}catch(e){this.logger.log("[network-events-listener.addHeaderToFetchRequest] Error setting header",{error:e,headerName:t,headerValue:n})}else this.logger.log("[network-events-listener.addHeaderToFetchRequest] Invalid header name",{headerName:t})}isValidHeaderName(e){if(!e||"string"!=typeof e)return!1;return/^[a-zA-Z0-9!#$&'*+\-.^_`|~]+$/.test(e)}shouldAddTraceHeader(e){const t=this.config.getConfig();if(this.logger.log("[network-events-listener.shouldAddTraceHeader] called",{url:e,config:t}),!t?.options?.tracing?.propagationUrls?.length)return!1;const n=t.options.tracing.propagationUrls?.some((t=>{const n=t.replace(/\*/g,".*"),r=new RegExp(`^${n}$`),i=e.startsWith("/")?new URL(e,globalThis.location.href).pathname:e;return r.test(i)}));return this.logger.log("[network-events-listener.shouldAddTraceHeader] result",{url:e,result:n}),n}},ke=class extends U{constructor(){super(...arguments),this.handleEvent=(e,t)=>{this.logger.log("[errors-events-listener.handleEvent] called");try{let n;if(e instanceof Error)n=e,this.enhanceError(n);else if(e instanceof ErrorEvent){if(n=e.error||new Error(e.message||"Unknown error"),/Script error\.?/.test(n.message))return;this.enhanceError(n,e)}else{if(!(e instanceof PromiseRejectionEvent))return;n=this.createUnhandledRejectionError(e)}const r=this.buildEvent(n,t);this.queueEvent(r)}catch(e){g(e)}}}initialize(){w?.addEventListener("error",this.handleEvent),w?.addEventListener("unhandledrejection",this.handleEvent)}destroy(){w?.removeEventListener("error",this.handleEvent),w?.removeEventListener("unhandledrejection",this.handleEvent)}buildEvent(e,t){const n=this.config.getPrivacy(),r=n.shouldMaskErrors,i={sensitiveKeys:n.sensitiveKeys,redact:n.redact,kind:"error"},s=e.message||"Unknown error",o=r?O(s,i):s,a=r&&t?.metadata?B(t.metadata,i):t?.metadata,l={error_type:e.name||"Error",error_message:o,error_stacktrace:this.buildStackTrace(e),error_fingerprint:`${e.name}:${y({text:o,maxLength:400})}`,error_handled:t?.handled||!1,error_metadata:a};return this.enricher.enrich({type:"exception",attributes:l})}queueEvent(e){try{this.logger.log("[errors-events-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){g(e)}}enhanceError(e,t){const{filename:n,lineno:r,colno:i}=t||{};n&&!e.fileName&&Object.defineProperty(e,"fileName",{value:n}),r&&!e.lineNumber&&Object.defineProperty(e,"lineNumber",{value:r}),i&&!e.columnNumber&&Object.defineProperty(e,"columnNumber",{value:i})}createUnhandledRejectionError(e){let t;if(e.reason instanceof Error)t=e.reason;else{const n="object"==typeof e.reason?JSON.stringify(e.reason,null,2):String(e.reason);t=new Error(n),t.name="UnhandledRejection",Object.defineProperty(t,"originalReason",{value:e.reason,enumerable:!1})}return t}buildStackTrace(t){if(!t)return[];try{return e.parse(t).map((e=>({filename:e.fileName||"unknown",function:e.functionName||"anonymous",lineno:e.lineNumber||0,colno:e.columnNumber||0})))}catch(e){return[]}}},Ie=class extends U{constructor(e,{isEnabled:t}){if(super(e),this.currentUrl="",this.originalPushState=null,this.originalReplaceState=null,this.patchedPushState=null,this.patchedReplaceState=null,this.isInitialized=!1,this.isAutomaticNavigationEnabled=!1,this.activeNavigation=null,this.popStateHandler=()=>{this.handleLocationChange()},this.hashChangeHandler=()=>{this.handleLocationChange()},this.isInBrowserEnvironment()&&t)try{this.isAutomaticNavigationEnabled=t,this.currentUrl=w.location.href,this.originalPushState=history.pushState,this.originalReplaceState=history.replaceState}catch(e){g(e)}}isInBrowserEnvironment(){try{return void 0!==w&&void 0!==w.location&&void 0!==w.history&&"function"==typeof w.addEventListener}catch(e){return g(e),!1}}initialize(){try{if(this.logger.log("[navigation-listener.initialize] called"),!this.isInBrowserEnvironment()||!this.originalPushState||!this.originalReplaceState)return void this.logger.log("[navigation-listener.initialize] Browser environment not available, skipping initialization");if(!this.isAutomaticNavigationEnabled)return void this.logger.log("[navigation-listener.initialize] Automatic navigation is disabled, skipping initialization");const e=this.originalPushState,t=this.originalReplaceState,n=(...t)=>{const n=e.apply(history,t);return this.handleLocationChange(),n},r=(...e)=>{const n=t.apply(history,e);return this.handleLocationChange(),n};history.pushState=n,history.replaceState=r,this.patchedPushState=n,this.patchedReplaceState=r,w&&"function"==typeof w.addEventListener&&(w.addEventListener("popstate",this.popStateHandler),w.addEventListener("hashchange",this.hashChangeHandler)),this.isInitialized=!0}catch(e){g(e)}}destroy(){try{this.logger.log("[navigation-listener.destroy] called"),this.isInitialized&&this.originalPushState&&this.originalReplaceState&&(history.pushState===this.patchedPushState&&(history.pushState=this.originalPushState),history.replaceState===this.patchedReplaceState&&(history.replaceState=this.originalReplaceState)),this.patchedPushState=null,this.patchedReplaceState=null,w&&"function"==typeof w.removeEventListener&&(w.removeEventListener("popstate",this.popStateHandler),w.removeEventListener("hashchange",this.hashChangeHandler)),this.isInitialized=!1}catch(e){g(e)}}handleEvent(){try{this.logger.log("[navigation-listener.handleEvent] called");const e=this.buildEvent();this.queueEvent(e)}catch(e){g(e)}}buildEvent(){this.logger.log("[navigation-listener.buildEvent] called",w.location.href);const e=this.config.getPrivacy(),t="allow"===e.level,n=w.location.href,r=this.activeNavigation?.metadata,i={page_url:e.shouldMaskNetworkQueryParams?D(n,{sensitiveKeys:e.sensitiveKeys,redact:e.redact,kind:"query"}):n,metadata:!t&&r?B(r,{sensitiveKeys:e.sensitiveKeys,redact:e.redact}):r,duration_ms:this.activeNavigation?.duration_ms||0,start_timestamp:this.activeNavigation?.startTime||0,end_timestamp:this.activeNavigation?.endTime||0};return this.enricher.enrich({type:"navigation",attributes:i})}queueEvent(e){try{this.logger.log("[navigation-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){g(e)}}startNavigation(e){try{this.logger.log("[navigation-listener.startNavigation] called",e),this.activeNavigation={page_url:w?.location?.href||"",metadata:e,startTime:Date.now(),endTime:0,duration_ms:0}}catch(e){g(e)}}endNavigation(e){try{if(this.logger.log("[navigation-listener.endNavigation] called",e),!this.activeNavigation)return void this.logger.log("[navigation-listener.endNavigation] no active navigation found");this.logger.log("[navigation-listener.endNavigation] active navigation",this.activeNavigation),this.activeNavigation.endTime=Date.now(),this.activeNavigation.duration_ms=this.activeNavigation.endTime-this.activeNavigation.startTime,this.handleEvent()}catch(e){g(e)}}handleLocationChange(){try{if(!this.isInitialized)return;if(this.logger.log("[navigation-listener.handleLocationChange] called"),this.currentUrl===w.location.href)return;let e,t;try{e=new URL(w.location.href),t=new URL(this.currentUrl)}catch(e){return void g(e)}const n=e=>e.startsWith("#/"),r=n(e.hash)||n(t.hash);(e.pathname!==t.pathname||r&&e.hash!==t.hash)&&(this.currentUrl=w.location.href,this.handleEvent())}catch(e){g(e)}}},Te=class extends U{constructor(e){super(e),this.loadEventHandler=()=>{this.logger.log("load event"),this.handleEvent()}}initialize(){try{this.logger.log("[page-load-listener.initialize] called"),this.logger.log("globalThis",w),"complete"===w?.document?.readyState?(this.logger.log("Page already loaded, triggering event immediately"),this.handleEvent()):w?.addEventListener("load",this.loadEventHandler)}catch(e){this.logger.log("[page-load-listener.initialize] error",e),g(e)}}destroy(){w?.removeEventListener("load",this.loadEventHandler)}handleEvent(){try{this.logger.log("[page-load-listener.handleEvent] called");const e=this.buildEvent();this.queueEvent(e)}catch(e){g(e)}}buildEvent(){const e=performance.getEntriesByType("navigation")[0],t=e?e.loadEventEnd-e.startTime:0,n=performance.getEntriesByType("resource"),r={count:n.length,totalSize:0,totalDuration:0,byType:{}};n.forEach((e=>{const t=e,n=t.transferSize||0,i=t.duration,s=t.initiatorType;r.totalSize+=n,r.totalDuration+=i,r.byType[s]||(r.byType[s]={count:0,size:0,duration:0}),r.byType[s].count++,r.byType[s].size+=n,r.byType[s].duration+=i}));const i=this.config.getPrivacy(),s=i.shouldMaskNetworkQueryParams,o={sensitiveKeys:i.sensitiveKeys,redact:i.redact,kind:"query"},a=w?.location?.href||"",l=w?.document?.referrer||"",c={page_url:s?D(a,o):a,page_load_time:t,page_referrer:s?D(l,o):l,page_resources:r};return this.enricher.enrich({type:"pageload",attributes:c})}queueEvent(e){try{this.logger.log("[page-load-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){g(e)}}},Re=class extends U{constructor(){super(...arguments),this.handleEvent=e=>{try{if(!this.enricher.shouldSample())return;const t=this.buildEvent(e);this.queueEvent(t)}catch(e){g(e)}}}initialize(){t(this.handleEvent),n(this.handleEvent),r(this.handleEvent),i(this.handleEvent),s(this.handleEvent)}destroy(){}buildEvent(e){const t={performance_metric_name:e.name,performance_metric_value:e.value,performance_metric_id:e.id,performance_metric_navigation_type:e.navigationType||""};return this.enricher.enrich({type:"performance",attributes:t})}queueEvent(e){try{this.logger.log("[performance-listener.queueEvent] called"),e&&this.eventsPool.addEvent(e)}catch(e){g(e)}}},Le=class e{constructor(){if(this.worker=null,this.pending=new Map,this.nextId=0,this.consecutiveTimeouts=0,this.isAvailable=!1,this.logger=d.getInstance(),"undefined"==typeof Worker||"undefined"==typeof URL||"undefined"==typeof Blob)return;const e=new Blob(['!function(){"use strict";var r=Uint8Array,n=Uint16Array,e=Int32Array,t=new r([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),f=new r([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),o=new r([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),a=function(r,t){for(var f=new n(31),o=0;o<31;++o)f[o]=t+=1<<r[o-1];var a=new e(f[30]);for(o=1;o<30;++o)for(var i=f[o];i<f[o+1];++i)a[i]=i-f[o]<<5|o;return{b:f,r:a}},i=a(t,2),u=i.b,v=i.r;u[28]=258,v[258]=28;var s=a(f,0).r,l=new n(32768);for(Y=0;Y<32768;++Y)Q=(61680&(Q=(52428&(Q=(43690&Y)>>1|(21845&Y)<<1))>>2|(13107&Q)<<2))>>4|(3855&Q)<<4,l[Y]=((65280&Q)>>8|(255&Q)<<8)>>1;var c=function(r,e,t){for(var f=r.length,o=0,a=new n(e);o<f;++o)r[o]&&++a[r[o]-1];var i,u=new n(e);for(o=1;o<e;++o)u[o]=u[o-1]+a[o-1]<<1;for(i=new n(f),o=0;o<f;++o)r[o]&&(i[o]=l[u[r[o]-1]++]>>15-r[o]);return i},h=new r(288);for(Y=0;Y<144;++Y)h[Y]=8;for(Y=144;Y<256;++Y)h[Y]=9;for(Y=256;Y<280;++Y)h[Y]=7;for(Y=280;Y<288;++Y)h[Y]=8;var w=new r(32);for(Y=0;Y<32;++Y)w[Y]=5;var g=c(h,9),d=c(w,5),m=function(r){return(r+7)/8|0},p=function(n,e,t){return(null==t||t>n.length)&&(t=n.length),new r(n.subarray(e,t))},y=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>8},M=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>8,r[t+2]|=e>>16},b=function(e,t){for(var f=[],o=0;o<e.length;++o)e[o]&&f.push({s:o,f:e[o]});var a=f.length,i=f.slice();if(!a)return{t:U,l:0};if(1==a){var u=new r(f[0].s+1);return u[f[0].s]=1,{t:u,l:1}}f.sort((function(r,n){return r.f-n.f})),f.push({s:-1,f:25001});var v=f[0],s=f[1],l=0,c=1,h=2;for(f[0]={s:-1,f:v.f+s.f,l:v,r:s};c!=a-1;)v=f[f[l].f<f[h].f?l++:h++],s=f[l!=c&&f[l].f<f[h].f?l++:h++],f[c++]={s:-1,f:v.f+s.f,l:v,r:s};var w=i[0].s;for(o=1;o<a;++o)i[o].s>w&&(w=i[o].s);var g=new n(w+1),d=k(f[c-1],g,0);if(d>t){o=0;var m=0,p=d-t,y=1<<p;for(i.sort((function(r,n){return g[n.s]-g[r.s]||r.f-n.f}));o<a;++o){var M=i[o].s;if(!(g[M]>t))break;m+=y-(1<<d-g[M]),g[M]=t}for(m>>=p;m>0;){var b=i[o].s;g[b]<t?m-=1<<t-g[b]++-1:++o}for(;o>=0&&m;--o){var x=i[o].s;g[x]==t&&(--g[x],++m)}d=t}return{t:new r(g),l:d}},k=function(r,n,e){return-1==r.s?Math.max(k(r.l,n,e+1),k(r.r,n,e+1)):n[r.s]=e},x=function(r){for(var e=r.length;e&&!r[--e];);for(var t=new n(++e),f=0,o=r[0],a=1,i=function(r){t[f++]=r},u=1;u<=e;++u)if(r[u]==o&&u!=e)++a;else{if(!o&&a>2){for(;a>138;a-=138)i(32754);a>2&&(i(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(i(o),--a;a>6;a-=6)i(8304);a>2&&(i(a-3<<5|8208),a=0)}for(;a--;)i(o);a=1,o=r[u]}return{c:t.subarray(0,f),n:e}},A=function(r,n){for(var e=0,t=0;t<n.length;++t)e+=r[t]*n[t];return e},C=function(r,n,e){var t=e.length,f=m(n+2);r[f]=255&t,r[f+1]=t>>8,r[f+2]=255^r[f],r[f+3]=255^r[f+1];for(var o=0;o<t;++o)r[f+o+4]=e[o];return 8*(f+4+t)},T=function(r,e,a,i,u,v,s,l,m,p,k){y(e,k++,a),++u[256];for(var T=b(u,15),E=T.t,U=T.l,D=b(v,15),S=D.t,I=D.l,j=x(E),z=j.c,J=j.n,N=x(S),O=N.c,q=N.n,B=new n(19),F=0;F<z.length;++F)++B[31&z[F]];for(F=0;F<O.length;++F)++B[31&O[F]];for(var G=b(B,7),H=G.t,K=G.l,L=19;L>4&&!H[o[L-1]];--L);var P,Q,R,V,W=p+5<<3,X=A(u,h)+A(v,w)+s,Y=A(u,E)+A(v,S)+s+14+3*L+A(B,H)+2*B[16]+3*B[17]+7*B[18];if(m>=0&&W<=X&&W<=Y)return C(e,k,r.subarray(m,m+p));if(y(e,k,1+(Y<X)),k+=2,Y<X){P=c(E,U),Q=E,R=c(S,I),V=S;var Z=c(H,K);y(e,k,J-257),y(e,k+5,q-1),y(e,k+10,L-4),k+=14;for(F=0;F<L;++F)y(e,k+3*F,H[o[F]]);k+=3*L;for(var $=[z,O],_=0;_<2;++_){var rr=$[_];for(F=0;F<rr.length;++F){var nr=31&rr[F];y(e,k,Z[nr]),k+=H[nr],nr>15&&(y(e,k,rr[F]>>5&127),k+=rr[F]>>12)}}}else P=g,Q=h,R=d,V=w;for(F=0;F<l;++F){var er=i[F];if(er>255){M(e,k,P[(nr=er>>18&31)+257]),k+=Q[nr+257],nr>7&&(y(e,k,er>>23&31),k+=t[nr]);var tr=31&er;M(e,k,R[tr]),k+=V[tr],tr>3&&(M(e,k,er>>5&8191),k+=f[tr])}else M(e,k,P[er]),k+=Q[er]}return M(e,k,P[256]),k+Q[256]},E=new e([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),U=new r(0),D=function(){for(var r=new Int32Array(256),n=0;n<256;++n){for(var e=n,t=9;--t;)e=(1&e&&-306674912)^e>>>1;r[n]=e}return r}(),S=function(o,a,i,u,l){if(!l&&(l={l:1},a.dictionary)){var c=a.dictionary.subarray(-32768),h=new r(c.length+o.length);h.set(c),h.set(o,c.length),o=h,l.w=c.length}return function(o,a,i,u,l,c){var h=c.z||o.length,w=new r(u+h+5*(1+Math.ceil(h/7e3))+l),g=w.subarray(u,w.length-l),d=c.l,y=7&(c.r||0);if(a){y&&(g[0]=c.r>>3);for(var M=E[a-1],b=M>>13,k=8191&M,x=(1<<i)-1,A=c.p||new n(32768),U=c.h||new n(x+1),D=Math.ceil(i/3),S=2*D,I=function(r){return(o[r]^o[r+1]<<D^o[r+2]<<S)&x},j=new e(25e3),z=new n(288),J=new n(32),N=0,O=0,q=c.i||0,B=0,F=c.w||0,G=0;q+2<h;++q){var H=I(q),K=32767&q,L=U[H];if(A[K]=L,U[H]=K,F<=q){var P=h-q;if((N>7e3||B>24576)&&(P>423||!d)){y=T(o,g,0,j,z,J,O,B,G,q-G,y),B=N=O=0,G=q;for(var Q=0;Q<286;++Q)z[Q]=0;for(Q=0;Q<30;++Q)J[Q]=0}var R=2,V=0,W=k,X=K-L&32767;if(P>2&&H==I(q-X))for(var Y=Math.min(b,P)-1,Z=Math.min(32767,q),$=Math.min(258,P);X<=Z&&--W&&K!=L;){if(o[q+R]==o[q+R-X]){for(var _=0;_<$&&o[q+_]==o[q+_-X];++_);if(_>R){if(R=_,V=X,_>Y)break;var rr=Math.min(X,_-2),nr=0;for(Q=0;Q<rr;++Q){var er=q-X+Q&32767,tr=er-A[er]&32767;tr>nr&&(nr=tr,L=er)}}}X+=(K=L)-(L=A[K])&32767}if(V){j[B++]=268435456|v[R]<<18|s[V];var fr=31&v[R],or=31&s[V];O+=t[fr]+f[or],++z[257+fr],++J[or],F=q+R,++N}else j[B++]=o[q],++z[o[q]]}}for(q=Math.max(q,F);q<h;++q)j[B++]=o[q],++z[o[q]];y=T(o,g,d,j,z,J,O,B,G,q-G,y),d||(c.r=7&y|g[y/8|0]<<3,y-=7,c.h=U,c.p=A,c.i=q,c.w=F)}else{for(q=c.w||0;q<h+d;q+=65535){var ar=q+65535;ar>=h&&(g[y/8|0]=d,ar=h),y=C(g,y+1,o.subarray(q,ar))}c.i=h}return p(w,0,u+m(y)+l)}(o,null==a.level?6:a.level,null==a.mem?l.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(o.length)))):20:12+a.mem,i,u,l)},I=function(r,n,e){for(;e;++n)r[n]=e,e>>>=8};function j(r,n){n||(n={});var e=function(){var r=-1;return{p:function(n){for(var e=r,t=0;t<n.length;++t)e=D[255&e^n[t]]^e>>>8;r=e},d:function(){return~r}}}(),t=r.length;e.p(r);var f,o=S(r,n,10+((f=n).filename?f.filename.length+1:0),8),a=o.length;return function(r,n){var e=n.filename;if(r[0]=31,r[1]=139,r[2]=8,r[8]=n.level<2?4:9==n.level?2:0,r[9]=3,0!=n.mtime&&I(r,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),e){r[3]=8;for(var t=0;t<=e.length;++t)r[t+10]=e.charCodeAt(t)}}(o,n),I(o,a-8,e.d()),I(o,a-4,t),o}var z="undefined"!=typeof TextEncoder&&new TextEncoder,J="undefined"!=typeof TextDecoder&&new TextDecoder;try{J.decode(U,{stream:!0})}catch(r){}var N=Uint8Array,O=Uint16Array,q=Uint32Array,B=new N([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),F=new N([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),G=new N([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),H=function(r,n){for(var e=new O(31),t=0;t<31;++t)e[t]=n+=1<<r[t-1];var f=new q(e[30]);for(t=1;t<30;++t)for(var o=e[t];o<e[t+1];++o)f[o]=o-e[t]<<5|t;return[e,f]},K=H(B,2),L=K[0],P=K[1];L[28]=258,P[258]=28;var Q,R=H(F,0)[1],V=new O(32768);for(Y=0;Y<32768;++Y)Q=(61680&(Q=(52428&(Q=(43690&Y)>>>1|(21845&Y)<<1))>>>2|(13107&Q)<<2))>>>4|(3855&Q)<<4,V[Y]=((65280&Q)>>>8|(255&Q)<<8)>>>1;var W=function(r,n,e){for(var t=r.length,f=0,o=new O(n);f<t;++f)++o[r[f]-1];var a,i=new O(n);for(f=0;f<n;++f)i[f]=i[f-1]+o[f-1]<<1;for(a=new O(t),f=0;f<t;++f)a[f]=V[i[r[f]-1]++]>>>15-r[f];return a},X=new N(288);for(Y=0;Y<144;++Y)X[Y]=8;for(Y=144;Y<256;++Y)X[Y]=9;for(Y=256;Y<280;++Y)X[Y]=7;for(Y=280;Y<288;++Y)X[Y]=8;var Y,Z=new N(32);for(Y=0;Y<32;++Y)Z[Y]=5;var $=W(X,9),_=W(Z,5),rr=function(r){return(r/8|0)+(7&r&&1)},nr=function(r,n,e){(null==e||e>r.length)&&(e=r.length);var t=new(r instanceof O?O:r instanceof q?q:N)(e-n);return t.set(r.subarray(n,e)),t},er=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>>8},tr=function(r,n,e){e<<=7&n;var t=n/8|0;r[t]|=e,r[t+1]|=e>>>8,r[t+2]|=e>>>16},fr=function(r,n){for(var e=[],t=0;t<r.length;++t)r[t]&&e.push({s:t,f:r[t]});var f=e.length,o=e.slice();if(!f)return[new N(0),0];if(1==f){var a=new N(e[0].s+1);return a[e[0].s]=1,[a,1]}e.sort((function(r,n){return r.f-n.f})),e.push({s:-1,f:25001});var i=e[0],u=e[1],v=0,s=1,l=2;for(e[0]={s:-1,f:i.f+u.f,l:i,r:u};s!=f-1;)i=e[e[v].f<e[l].f?v++:l++],u=e[v!=s&&e[v].f<e[l].f?v++:l++],e[s++]={s:-1,f:i.f+u.f,l:i,r:u};var c=o[0].s;for(t=1;t<f;++t)o[t].s>c&&(c=o[t].s);var h=new O(c+1),w=or(e[s-1],h,0);if(w>n){t=0;var g=0,d=w-n,m=1<<d;for(o.sort((function(r,n){return h[n.s]-h[r.s]||r.f-n.f}));t<f;++t){var p=o[t].s;if(!(h[p]>n))break;g+=m-(1<<w-h[p]),h[p]=n}for(g>>>=d;g>0;){var y=o[t].s;h[y]<n?g-=1<<n-h[y]++-1:++t}for(;t>=0&&g;--t){var M=o[t].s;h[M]==n&&(--h[M],++g)}w=n}return[new N(h),w]},or=function(r,n,e){return-1==r.s?Math.max(or(r.l,n,e+1),or(r.r,n,e+1)):n[r.s]=e},ar=function(r){for(var n=r.length;n&&!r[--n];);for(var e=new O(++n),t=0,f=r[0],o=1,a=function(r){e[t++]=r},i=1;i<=n;++i)if(r[i]==f&&i!=n)++o;else{if(!f&&o>2){for(;o>138;o-=138)a(32754);o>2&&(a(o>10?o-11<<5|28690:o-3<<5|12305),o=0)}else if(o>3){for(a(f),--o;o>6;o-=6)a(8304);o>2&&(a(o-3<<5|8208),o=0)}for(;o--;)a(f);o=1,f=r[i]}return[e.subarray(0,t),n]},ir=function(r,n){for(var e=0,t=0;t<n.length;++t)e+=r[t]*n[t];return e},ur=function(r,n,e){var t=e.length,f=rr(n+2);r[f]=255&t,r[f+1]=t>>>8,r[f+2]=255^r[f],r[f+3]=255^r[f+1];for(var o=0;o<t;++o)r[f+o+4]=e[o];return 8*(f+4+t)},vr=function(r,n,e,t,f,o,a,i,u,v,s){er(n,s++,e),++f[256];for(var l=fr(f,15),c=l[0],h=l[1],w=fr(o,15),g=w[0],d=w[1],m=ar(c),p=m[0],y=m[1],M=ar(g),b=M[0],k=M[1],x=new O(19),A=0;A<p.length;++A)x[31&p[A]]++;for(A=0;A<b.length;++A)x[31&b[A]]++;for(var C=fr(x,7),T=C[0],E=C[1],U=19;U>4&&!T[G[U-1]];--U);var D,S,I,j,z=v+5<<3,J=ir(f,X)+ir(o,Z)+a,N=ir(f,c)+ir(o,g)+a+14+3*U+ir(x,T)+(2*x[16]+3*x[17]+7*x[18]);if(z<=J&&z<=N)return ur(n,s,r.subarray(u,u+v));if(er(n,s,1+(N<J)),s+=2,N<J){D=W(c,h),S=c,I=W(g,d),j=g;var q=W(T,E);er(n,s,y-257),er(n,s+5,k-1),er(n,s+10,U-4),s+=14;for(A=0;A<U;++A)er(n,s+3*A,T[G[A]]);s+=3*U;for(var H=[p,b],K=0;K<2;++K){var L=H[K];for(A=0;A<L.length;++A){var P=31&L[A];er(n,s,q[P]),s+=T[P],P>15&&(er(n,s,L[A]>>>5&127),s+=L[A]>>>12)}}}else D=$,S=X,I=_,j=Z;for(A=0;A<i;++A)if(t[A]>255){P=t[A]>>>18&31;tr(n,s,D[P+257]),s+=S[P+257],P>7&&(er(n,s,t[A]>>>23&31),s+=B[P]);var Q=31&t[A];tr(n,s,I[Q]),s+=j[Q],Q>3&&(tr(n,s,t[A]>>>5&8191),s+=F[Q])}else tr(n,s,D[t[A]]),s+=S[t[A]];return tr(n,s,D[256]),s+S[256]},sr=new q([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),lr=function(r,n,e,t,f){return function(r,n,e,t,f,o){var a=r.length,i=new N(t+a+5*(1+Math.floor(a/7e3))+f),u=i.subarray(t,i.length-f),v=0;if(!n||a<8)for(var s=0;s<=a;s+=65535){var l=s+65535;l<a?v=ur(u,v,r.subarray(s,l)):(u[s]=o,v=ur(u,v,r.subarray(s,a)))}else{for(var c=sr[n-1],h=c>>>13,w=8191&c,g=(1<<e)-1,d=new O(32768),m=new O(g+1),p=Math.ceil(e/3),y=2*p,M=function(n){return(r[n]^r[n+1]<<p^r[n+2]<<y)&g},b=new q(25e3),k=new O(288),x=new O(32),A=0,C=0,T=(s=0,0),E=0,U=0;s<a;++s){var D=M(s),S=32767&s,I=m[D];if(d[S]=I,m[D]=S,E<=s){var j=a-s;if((A>7e3||T>24576)&&j>423){v=vr(r,u,0,b,k,x,C,T,U,s-U,v),T=A=C=0,U=s;for(var z=0;z<286;++z)k[z]=0;for(z=0;z<30;++z)x[z]=0}var J=2,G=0,H=w,K=S-I&32767;if(j>2&&D==M(s-K))for(var L=Math.min(h,j)-1,Q=Math.min(32767,s),V=Math.min(258,j);K<=Q&&--H&&S!=I;){if(r[s+J]==r[s+J-K]){for(var W=0;W<V&&r[s+W]==r[s+W-K];++W);if(W>J){if(J=W,G=K,W>L)break;var X=Math.min(K,W-2),Y=0;for(z=0;z<X;++z){var Z=s-K+z+32768&32767,$=Z-d[Z]+32768&32767;$>Y&&(Y=$,I=Z)}}}K+=(S=I)-(I=d[S])+32768&32767}if(G){b[T++]=268435456|P[J]<<18|R[G];var _=31&P[J],er=31&R[G];C+=B[_]+F[er],++k[257+_],++x[er],E=s+J,++A}else b[T++]=r[s],++k[r[s]]}}v=vr(r,u,o,b,k,x,C,T,U,s-U,v)}return nr(i,0,t+rr(v)+f)}(r,null==n.level?6:n.level,null==n.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(r.length)))):12+n.mem,e,t,!0)};function cr(r,n){void 0===n&&(n={});var e=function(){var r=1,n=0;return{p:function(e){for(var t=r,f=n,o=e.length,a=0;a!=o;){for(var i=Math.min(a+5552,o);a<i;++a)f+=t+=e[a];t%=65521,f%=65521}r=t,n=f},d:function(){return(r>>>8<<16|(255&n)<<8|n>>>8)+2*((255&r)<<23)}}}();e.p(r);var t,f,o,a=lr(r,n,2,4);return t=a,f=n.level,o=0==f?0:f<6?1:9==f?3:2,t[0]=120,t[1]=o<<6|(o?32-2*o:1),function(r,n,e){for(;e;++n)r[n]=e,e>>>=8}(a,a.length-4,e.d()),a}var hr=r=>{const n={...r,v:"v1"};return function(r){for(var n="",e=0;e<r.length;){var t=r[e++];n+=String.fromCharCode(t)}return n}(cr(function(r,n){var e=r.length;if("undefined"!=typeof TextEncoder)return(new TextEncoder).encode(r);for(var t=new N(r.length+(r.length>>>1)),f=0,o=function(r){t[f++]=r},a=0;a<e;++a){if(f+5>t.length){var i=new N(f+8+(e-a<<1));i.set(t),t=i}var u=r.charCodeAt(a);u<128||n?o(u):u<2048?(o(192|u>>>6),o(128|63&u)):u>55295&&u<57344?(o(240|(u=65536+(1047552&u)|1023&r.charCodeAt(++a))>>>18),o(128|u>>>12&63),o(128|u>>>6&63),o(128|63&u)):(o(224|u>>>12),o(128|u>>>6&63),o(128|63&u))}return nr(t,0,f)}(JSON.stringify(n))))},wr=self;wr.onmessage=n=>{const e=n.data;if(!e||"number"!=typeof e.id||"pack-replay"!==e.op&&"encode-batch"!==e.op)return void(e&&"number"==typeof e.id&&wr.postMessage({id:e.id,ok:!1,error:"malformed message"}));const{id:t,op:f,payload:o}=e;try{if("pack-replay"===f){const r=o.events.map((r=>hr(r)));return void wr.postMessage({id:t,ok:!0,result:{packed:r}})}if("encode-batch"===f){const{json:n,compress:e}=o;if(!e){const r=(new TextEncoder).encode(n);return void wr.postMessage({id:t,ok:!0,result:{bytes:r,isCompressed:!1}},[r.buffer])}try{const e=j(function(n,e){if(z)return z.encode(n);for(var t=n.length,f=new r(n.length+(n.length>>1)),o=0,a=function(r){f[o++]=r},i=0;i<t;++i){if(o+5>f.length){var u=new r(o+8+(t-i<<1));u.set(f),f=u}var v=n.charCodeAt(i);v<128||e?a(v):v<2048?(a(192|v>>6),a(128|63&v)):v>55295&&v<57344?(a(240|(v=65536+(1047552&v)|1023&n.charCodeAt(++i))>>18),a(128|v>>12&63),a(128|v>>6&63),a(128|63&v)):(a(224|v>>12),a(128|v>>6&63),a(128|63&v))}return p(f,0,o)}(n));return void wr.postMessage({id:t,ok:!0,result:{bytes:e,isCompressed:!0}},[e.buffer])}catch{const r=(new TextEncoder).encode(n);return void wr.postMessage({id:t,ok:!0,result:{bytes:r,isCompressed:!1}},[r.buffer])}}wr.postMessage({id:t,ok:!1,error:"unknown op"})}catch(r){wr.postMessage({id:t,ok:!1,error:r instanceof Error?r.message:String(r)})}}}();'],{type:"application/javascript"}),t=URL.createObjectURL(e);try{this.worker=new Worker(t),Promise.resolve().then((()=>URL.revokeObjectURL(t))),this.worker.onmessage=e=>this.handleMessage(e.data),this.worker.onerror=e=>this.handleFatalFailure("worker onerror",e.message),this.worker.onmessageerror=()=>this.logger.log("[worker-client] worker onmessageerror — single message dropped, worker still alive"),this.isAvailable=!0,this.logger.log("[worker-client] worker spawned")}catch(e){URL.revokeObjectURL(t),this.logger.log("[worker-client] failed to spawn worker, falling back to main thread:",e),this.worker=null,this.isAvailable=!1}}static getInstance(){return e.instance||(e.instance=new e),e.instance}static __resetForTests(){e.instance&&e.instance.terminate(),e.instance=null}static async withFallback(t,n,r){const i=e.getInstance();if(!i.isAvailable)return n();try{return await t(i)}catch(e){return d.getInstance().log(`[${r}] worker call failed, using inline fallback:`,e),n()}}packReplay(e){return this.dispatch("pack-replay",{events:e}).then((e=>e.packed))}encodeBatch(e,t){return this.dispatch("encode-batch",{json:e,compress:t}).then((e=>({data:e.bytes,isCompressed:e.isCompressed})))}terminate(){if(this.worker){try{this.worker.terminate()}catch(e){this.logger.log("[worker-client] failed to terminate worker:",e)}this.worker=null}this.isAvailable=!1,this.rejectAllPending(new Error("worker terminated")),e.instance===this&&(e.instance=null)}dispatch(e,t){if(!this.worker||!this.isAvailable)return Promise.reject(new Error("worker not available"));const n=this.nextId++,r=this.worker;return new Promise(((i,s)=>{const o=setTimeout((()=>{this.pending.has(n)&&(this.pending.delete(n),this.consecutiveTimeouts+=1,this.consecutiveTimeouts>=3&&this.handleFatalFailure("worker latched after 3 consecutive timeouts"),s(new Error("worker request timed out")))}),1500);this.pending.set(n,{resolve:i,reject:s,timeoutId:o});try{r.postMessage({id:n,op:e,payload:t})}catch(e){clearTimeout(o),this.pending.delete(n),s(e instanceof Error?e:new Error(String(e)))}}))}handleMessage(e){const t=this.pending.get(e.id);t&&(clearTimeout(t.timeoutId),this.pending.delete(e.id),this.consecutiveTimeouts=0,e.ok?t.resolve(e.result):t.reject(new Error(e.error)))}handleFatalFailure(e,t){if(this.logger.log(`[worker-client] ${e}${t?": "+t:""}`),this.isAvailable=!1,this.rejectAllPending(new Error(e)),this.worker){try{this.worker.terminate()}catch{}this.worker=null}}rejectAllPending(e){for(const t of this.pending.values())clearTimeout(t.timeoutId),t.reject(e);this.pending.clear()}};Le.instance=null;var Me=Le;var xe=class{constructor(e){this.logger=d.getInstance(),this.stopFn=null,this.isRecording=!1,this.events=[],this.startTime=0,this.batchSize=3,this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0,this.sendTimerId=null,this.configManager=e.config,this.session=e.session,this.eventsPool=e.eventsPool,this.enricher=e.enricher}initialize(){this.logger.log("[session-replay-listener] initialize called"),this.isRecording?this.logger.log("[session-replay-listener] already recording"):this.startRecording()}startRecording(){try{this.startTime=Date.now(),this.events=[],this.isRecording=!0,this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0;const e=this.configManager.getConfig()?.options?.replay,t=e?.blockedSelectors?.filter(Boolean),n=t?.length?t.join(", "):void 0,r=Y(this.configManager),i=function(e){const t=e?.privacy,n=function(e){return"mask-sensitive"===e||"mask-all"===e||"allow"===e?e:void 0}(t?.level)??"mask-sensitive",r="allow"===n,i=X(t?.maskSelectors),s=t?.replay,o="function"==typeof s?.maskTextFn?s.maskTextFn:void 0,a="function"==typeof s?.maskInputFn?s.maskInputFn:void 0;let l;return l="mask-all"===n||!r&&void 0!==o?["*",...i].join(", "):"mask-sensitive"===n?["[data-private]",...i].join(", "):void 0,{maskTextSelector:l,maskAllInputs:!r,maskTextFn:o,maskInputFn:a}}(this.configManager.getConfig()?.providedOptions),s=i.maskInputFn??("allow"===r.level?void 0:(e,t)=>J(t,r)?"*".repeat(e.length):e);this.stopFn=o({...n?{blockSelector:n}:{},...i.maskTextSelector?{maskTextSelector:i.maskTextSelector}:{},maskAllInputs:i.maskAllInputs,...i.maskTextFn?{maskTextFn:i.maskTextFn}:{},...s?{maskInputFn:s}:{},slimDOMOptions:{script:!1,comment:!1,headWhitespace:!1},sampling:{mousemove:100,input:"last",scroll:150},checkoutEveryNms:3e4,emit:(e,t)=>{if(this.isRecording)try{this.events.push(e),t&&(this.batchContainsFullSnapshot=!0,this.fullSnapshotTimestamp=Date.now(),this.logger.log("[session-replay-listener] full snapshot captured at",this.fullSnapshotTimestamp)),this.events.length>=this.batchSize&&this.scheduleSendBatch()}catch(e){g(e),this.logger.log("[session-replay-listener] failed to process event in emit callback:",e)}}})||null,this.logger.log("[session-replay-listener] started recording with full snapshot interval:",3e4,"ms")}catch(e){g(e),this.logger.log("[session-replay-listener] failed to start recording:",e),this.isRecording=!1}}scheduleSendBatch(){null===this.sendTimerId&&(this.sendTimerId=w.setTimeout((()=>{this.sendTimerId=null,this.isRecording&&this.sendBatchAsync().catch((e=>{g(e),this.logger.log("[session-replay-listener] failed to send deferred batch:",e)}))}),0))}clearScheduledSend(){null!==this.sendTimerId&&(w.clearTimeout(this.sendTimerId),this.sendTimerId=null)}flushPendingSync(){this.clearScheduledSend(),0!==this.events.length&&this.sendBatchSync()}async sendBatchAsync(){if(0===this.events.length)return;const e=this.drainBatch(),t=this.session.getSessionId(),n=Me.getInstance();let r;if(n.isAvailable)try{r=await n.packReplay(e.events)}catch(t){g(t),this.logger.log("[session-replay-listener] worker pack failed, using inline fallback:",t),r=e.events.map((e=>a(e)))}else r=e.events.map((e=>a(e)));this.session.getSessionId()===t?this.enqueueReplayEvent(r,e.containsFullSnapshot,e.snapshotTimestamp):this.logger.log("[session-replay-listener] dropping packed batch: session rotated during pack",{drained:r.length})}sendBatchSync(){if(0===this.events.length)return;const e=this.drainBatch(),t=e.events.map((e=>a(e)));this.enqueueReplayEvent(t,e.containsFullSnapshot,e.snapshotTimestamp)}drainBatch(){const e=this.events,t=this.batchContainsFullSnapshot,n=this.fullSnapshotTimestamp;return this.events=[],this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0,{events:e,containsFullSnapshot:t,snapshotTimestamp:n}}enqueueReplayEvent(e,t,n){try{const r={_gc_replay_data:{events:e}};t&&(r.replay_is_full_snapshot=!0,r.replay_full_snapshot_timestamp=n);const i=this.enricher.enrich({type:"replay",attributes:r});this.eventsPool.addEvent(i),this.logger.log("[session-replay-listener] sent batch with",e.length,"events",t?"(includes full snapshot)":"")}catch(e){g(e),this.logger.log("[session-replay-listener] failed to send batch:",e)}}stopRecording(){if(this.isRecording)try{this.clearScheduledSend(),this.stopFn?.(),this.isRecording=!1,this.events.length>0&&this.sendBatchSync(),this.stopFn=null,this.batchContainsFullSnapshot=!1,this.fullSnapshotTimestamp=void 0}catch(e){g(e),this.logger.log("[session-replay-listener] failed to stop recording:",e)}}destroy(){this.stopRecording()}},qe=144e5,Ae=288e5,Ne=18e5,Ce="gcSample",He={eventSampleRate:1,sessionSampleRate:1,debug:!1,privacy:{level:"mask-sensitive"},enabledEvents:[],tracing:{propagationUrls:[],propagationHeaders:[],traceIdHeaderName:"",spanIdHeaderName:"",origin:{name:"",value:""}},transport:{batchSize:10,batchTimeout:1e4,compression:!0},replay:{},sessionMaxDuration:qe},ze=["pointerdown","keydown","scroll","touchstart","mousemove"],_e=class{constructor(e){this.logger=d.getInstance(),this.lastSignalMs=0,this.idleTimer=null,this.installed=!1,this.handleInput=()=>{const e=Date.now();if(!(e-this.lastSignalMs<3e4)){this.notePresence(e);try{this.callbacks.onPresence(e)}catch(e){g(e)}}},this.callbacks=e}initialize(){this.installed||(this.installed=!0,ze.forEach((e=>{try{w.addEventListener?.(e,this.handleInput,{capture:!0,passive:!0})}catch(e){g(e)}})),this.armIdleTimer(),this.logger.log("[user-presence-monitor] installed"))}notePresence(e){this.lastSignalMs=e,this.armIdleTimer()}resetIdleTimer(){this.armIdleTimer()}armIdleTimer(){try{this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=null,this.idleTimer=setTimeout((()=>{this.idleTimer=null,this.logger.log("[user-presence-monitor] user idle for",Ne,"ms");try{this.callbacks.onIdle()}catch(e){g(e)}}),Ne)}catch(e){g(e)}}destroy(){if(this.installed){this.installed=!1,ze.forEach((e=>{try{w.removeEventListener?.(e,this.handleInput,{capture:!0})}catch(e){g(e)}}));try{this.idleTimer&&clearTimeout(this.idleTimer)}catch(e){g(e)}finally{this.idleTimer=null}}}},Pe=class{constructor(e){this.logger=d.getInstance(),this.rotating=!1,this.session=e.session,this.pool=e.pool,this.idGenerator=e.idGenerator,this.activityEventTypes=e.activityEventTypes,this.ignoredEventTypes=e.ignoredEventTypes,this.hooks=e.hooks??{}}get isRotating(){return this.rotating}install(){this.pool.setBeforeEnqueueHook((e=>this.reconcileOnEnqueue(e))),this.pool.setFlushGate((()=>this.session.hasUserActivity()))}uninstall(e){this.pool.setBeforeEnqueueHook(null);try{e?.()}catch(e){g(e)}this.pool.setFlushGate(null)}reconcile(e,t){if(this.rotating)return;t&&this.session.isSessionInactive(e)&&this.rotate({reason:"inactivity gap"});const n=this.session.getSessionElapsedMs(e),r=this.session.getSessionMaxDuration(),i=n>=r;this.logger.log("[session-lifecycle] session reconcile",{userPresent:t,elapsedMs:n,maxDurationMs:r,expired:i}),i&&this.rotate({reason:"max session duration"}),this.hooks.onReconcile?.(t),t&&(this.session.setLastActivityMs(e),this.hooks.onPresenceStamped?.(e))}reconcileOnEnqueue(e){this.rotating||(this.ignoredEventTypes.has(e.type)?this.logger.log("[session-lifecycle] enqueue rotation check: ignoring heartbeat-style event",e.type):this.reconcile(Date.now(),this.activityEventTypes.has(e.type)))}rotateIfStale(e,t){(this.session.isSessionInactive(e)||this.session.isSessionExpired(e))&&this.rotate({reason:t})}rotate(e){if(this.rotating)return;this.rotating=!0;const t=(e,t)=>{try{this.logger.log(`[session-lifecycle] session rotation: ${e}`),t()}catch(t){g(t),this.logger.log(`[session-lifecycle] failed to ${e} during session rotation:`,t)}};try{const n=this.session.getSessionId();let r;t("capture host rotation context",(()=>{r=this.hooks.captureRotationContext?.()}));const i=this.session.hasUserActivity();this.logger.log("[session-lifecycle] session rotation start",{reason:e.reason,previousId:n,wasConfirmed:i}),t("host beforeRotate",(()=>this.hooks.beforeRotate?.())),t(i?"flush events":"discard unconfirmed events",(()=>i?this.pool.flush():this.pool.discardBuffer())),t("rotate session ids",(()=>{const e=this.idGenerator.generateId();this.session.setSessionId(e),this.session.setSessionStartTime(S(Date.now())),this.session.clearSamplingDecision(),this.logger.log("[session-lifecycle] session id rotated",{from:n,to:e})})),t("host afterRotate",(()=>this.hooks.afterRotate?.(r)))}finally{this.rotating=!1,this.logger.log("[session-lifecycle] session rotation complete",{reason:e.reason})}}},De=new Set(["dom.event"]),Fe=new Set(["replay"]),Oe=class{constructor(e){this.logger=d.getInstance(),this.idGenerator=new p,this.logEventsListener=null,this.domEventsListener=null,this.errorsEventsListener=null,this.networkEventsListener=null,this.navigationListener=null,this.performanceListener=null,this.pageLoadListener=null,this.sessionReplayListener=null,this.replayDesired=!1,this.presenceMonitor=null,this.configManager=e.config,this.session=e.session,this.eventsPool=e.eventsPool,this.enricher=e.enricher,this.manualEvents=new K({config:this.configManager,pool:this.eventsPool,enricher:this.enricher}),this.lifecycle=new Pe({session:this.session,pool:this.eventsPool,idGenerator:this.idGenerator,activityEventTypes:De,ignoredEventTypes:Fe,hooks:{captureRotationContext:()=>this.isReplayRecording(),beforeRotate:()=>this.stopReplayListener(),afterRotate:e=>this.syncReplayState(e),onReconcile:e=>this.syncReplayState(e),onPresenceStamped:e=>this.presenceMonitor?.notePresence(e)}})}listenerDeps(){return{config:this.configManager,eventsPool:this.eventsPool,enricher:this.enricher}}instrument(){this.logger.log("[instrumentation-manager.instrument] called"),this.lifecycle.install(),this.presenceMonitor?.destroy(),this.presenceMonitor=new _e({onPresence:e=>this.lifecycle.reconcile(e,!0),onIdle:()=>this.pauseReplayOnIdle()}),this.presenceMonitor.initialize();const e=this.configManager.getConfig(),t=e?.options?.enabledEvents,n=!t||0===t.length,r=[];(n||t?.includes("pageload"))&&(this.pageLoadListener=new Te(this.listenerDeps()),this.pageLoadListener.initialize(),r.push("pageload")),(n||t?.includes("dom"))&&(this.domEventsListener=new de(this.listenerDeps()),this.domEventsListener.initialize(),r.push("dom")),(n||t?.includes("logs"))&&(this.logEventsListener=new ge(this.listenerDeps()),this.logEventsListener.initialize(),r.push("logs")),(n||t?.includes("exceptions"))&&(this.errorsEventsListener=new ke(this.listenerDeps()),this.errorsEventsListener.initialize(),r.push("exceptions")),(n||t?.includes("network"))&&(this.networkEventsListener=new Se(this.listenerDeps()),this.networkEventsListener.initialize(),r.push("network")),(n||t?.includes("performance"))&&(this.performanceListener=new Re(this.listenerDeps()),this.performanceListener.initialize(),r.push("performance")),this.navigationListener=new Ie(this.listenerDeps(),{isEnabled:n||t?.includes("navigation")}),this.navigationListener.initialize(),r.push("navigation"),this.logger.log("[instrumentation-manager.instrument] initialized listeners based on config:",r)}sendCustomEvent(e){this.manualEvents.sendCustomEvent(e)}emitLog(e,t,n){this.logEventsListener&&this.manualEvents.emitLog(e,t,n)}captureException(e,t){try{this.logger.log("[instrumentation-manager.captureException] called",e),this.errorsEventsListener?.handleEvent(e,{handled:!0,metadata:t})}catch(e){g(e)}}isNavigationTrackingEnabled(){const e=this.configManager.getConfig();return e?.options?.enabledEvents?.includes("navigation")||0===e?.options?.enabledEvents?.length}startNavigation(e){this.logger.log("[instrumentation-manager.startNavigation] called",e),this.isNavigationTrackingEnabled()?this.logger.log("[instrumentation-manager.startNavigation] startNavigation called while navigation tracking is enabled. Ignoring. If you wish to track navigations manually, please disable navigation tracking via the enabledEvents array in the config."):this.navigationListener?.startNavigation(e)}endNavigation(e){this.logger.log("[instrumentation-manager.endNavigation] called",e),this.isNavigationTrackingEnabled()?this.logger.log("[instrumentation-manager.endNavigation] endNavigation called while navigation tracking is enabled. Ignoring. If you wish to track navigations manually, please disable navigation tracking via the enabledEvents array in the config."):this.navigationListener?.endNavigation(e)}isReplayRecording(){return null!==this.sessionReplayListener}restartReplayForConfigChange(){this.isReplayRecording()&&(this.logger.log("[instrumentation-manager] restarting replay to apply config change"),this.stopReplayListener(),this.startReplayListener())}startReplayRecording(){this.replayDesired=!0,this.isReplayRecording()?this.logger.log("[instrumentation-manager] replay recording already started"):(this.lifecycle.rotateIfStale(Date.now(),"replay start into stale session"),this.startReplayListener(),this.presenceMonitor?.resetIdleTimer())}stopReplayRecording(){this.replayDesired=!1,this.stopReplayListener()}flushPendingReplay(){this.sessionReplayListener?.flushPendingSync()}syncReplayState(e){this.replayDesired&&e&&!this.isReplayRecording()&&(this.logger.log("[instrumentation-manager] user present and replay desired — starting replay"),this.startReplayListener())}pauseReplayOnIdle(){this.isReplayRecording()&&(this.logger.log("[instrumentation-manager] pausing replay: user idle window elapsed"),this.stopReplayListener())}startReplayListener(){if(this.sessionReplayListener)this.logger.log("[instrumentation-manager] replay recording already started");else try{const e=new xe({...this.listenerDeps(),session:this.session});e.initialize(),this.sessionReplayListener=e,this.logger.log("[instrumentation-manager] started replay recording")}catch(e){g(e),this.logger.log("[instrumentation-manager] failed to start replay recording:",e)}}stopReplayListener(){this.sessionReplayListener?(this.sessionReplayListener.stopRecording(),this.sessionReplayListener=null):this.logger.log("[instrumentation-manager] cannot stop replay recording: replay listener not initialized")}uninstrument(){this.lifecycle.uninstall((()=>{this.presenceMonitor?.destroy(),this.presenceMonitor=null,this.domEventsListener?.destroy(),this.logEventsListener?.destroy(),this.errorsEventsListener?.destroy(),this.networkEventsListener?.destroy(),this.navigationListener?.destroy(),this.performanceListener?.destroy(),this.pageLoadListener?.destroy(),this.sessionReplayListener?.destroy(),this.sessionReplayListener=null,this.replayDesired=!1}))}};function Be(e){try{console.warn(e)}catch{}}function je(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}var Ke=["privacy","tracing","transport","replay"],Ue={tracing:"origin",privacy:"replay"};function Xe(e,t){if(!je(e))return e;const n={...e};return t&&je(n[t])&&(n[t]={...n[t]}),n}function Ye(e,t,n){const r={...e,...t};if(n){const i=e?.[n],s=t[n];je(i)&&je(s)?r[n]={...i,...s}:Object.hasOwn(t,n)&&!je(s)?r[n]=je(i)?{...i}:i:je(r[n])&&(r[n]={...r[n]})}return r}function $e(e,t){const n={...e,...t},r=t,i=e;for(const e of Ke){if(!Object.hasOwn(r,e)){je(i[e])&&(n[e]=Xe(i[e],Ue[e]));continue}const t=r[e];je(t)?n[e]=Ye(i[e],t,Ue[e]):n[e]=Xe(i[e],Ue[e])}return n}var We=class e{constructor(t){this.dsn=t?.dsn||"",this.appId=t?.appId||"",this.cluster=t?.cluster||"",this.apiKey=t?.apiKey||"",this.environment=t?.environment||"",this.namespace=t?.namespace||"",this.releaseId=t?.releaseId,this.user=t?.user||null,this.providedOptions={...t?.options||{}},this.options=$e(He,t?.options||{}),this.options.sessionMaxDuration=e.normalizeSessionMaxDuration(t?.options?.sessionMaxDuration),e.warnRemovedOptions(t?.options),e.stripRemovedOptions(this.providedOptions),e.stripRemovedOptions(this.options)}static stripRemovedOptions(t){const n=t;for(const t of e.REMOVED_OPTION_KEYS)Object.hasOwn(n,t)&&delete n[t]}static warnRemovedOptions(t){if(!t||"object"!=typeof t)return;const n=t;for(const t of e.REMOVED_OPTION_KEYS)Object.hasOwn(n,t)&&Be(`[groundcover] \`options.${t}\` was removed in 1.0.0 and is ignored. Configure masking via \`options.privacy\` instead — see the migration guide: https://github.com/groundcover-com/rum/tree/main/packages/browser#migrating-to-100`)}static normalizeSessionMaxDuration(e){return void 0===e?qe:"number"!=typeof e||!Number.isFinite(e)||e<6e4||e>Ae?(Be("[groundcover] sessionMaxDuration must be a finite number between 60000 ms (1 minute) and 28800000 ms (8 hours); falling back to the 4-hour default"),qe):e}getEndpoint(){return this.dsn?.startsWith("http")?this.dsn:`https://${this.dsn}`}updateConfig(t){t.options&&(e.warnRemovedOptions(t.options),this.providedOptions=$e(this.providedOptions||{},t.options),this.options=$e(this.options,t.options),void 0!==t.options.sessionMaxDuration&&(this.options.sessionMaxDuration=e.normalizeSessionMaxDuration(t.options.sessionMaxDuration)),e.stripRemovedOptions(this.providedOptions),e.stripRemovedOptions(this.options)),void 0!==t.user&&(this.user=null===t.user?null:{...this.user,...t.user}),t.appId&&(this.appId=t.appId),t.dsn&&(this.dsn=t.dsn),t.apiKey&&(this.apiKey=t.apiKey),t.cluster&&(this.cluster=t.cluster),t.environment&&(this.environment=t.environment),t.namespace&&(this.namespace=t.namespace),t.releaseId&&(this.releaseId=t.releaseId)}};We.REMOVED_OPTION_KEYS=["enableMasking","maskFields"];var Qe=We,Ge=class{constructor(){this.config=null,this.logger=d.getInstance(),this.privacyCache=null}initialize(e){this.config||(this.config=new Qe(e))}getConfig(){return this.config?this.config:(this.logger.log("[config-manager] configuration not initialized"),null)}getPrivacy(){return this.privacyCache||(this.privacyCache=function(e){const t=e?.privacy,n=function(e){return"mask-sensitive"===e||"mask-all"===e||"allow"===e?e:void 0}(t?.level)??"mask-sensitive",r="allow"===n,i=e=>!r&&(e??!0),s=i(t?.maskNetworkBodies),o=i(t?.maskNetworkQueryParams),a=i(t?.maskLogs),l=i(t?.maskErrors);return{level:n,maskNetworkBodies:s,maskNetworkQueryParams:o,maskLogs:a,maskErrors:l,shouldMaskNetworkBodies:!r&&s,shouldMaskNetworkQueryParams:!r&&o,shouldMaskLogs:!r&&a,shouldMaskErrors:!r&&l,sensitiveKeys:X(t?.sensitiveKeys),redact:"function"==typeof t?.redact?t.redact:void 0}}(this.config?.providedOptions)),this.privacyCache}updateConfig(e){this.logger.log("[config-manager] updateConfig called"),this.config?e&&(this.logger.log("[config-manager] updating options"),this.config.updateConfig(e),this.privacyCache=null):this.logger.log("[config-manager] configuration not initialized")}},Ve=He.transport?.batchSize??10,Je=He.transport?.batchTimeout??1e4;var Ze=class{constructor(e){this.events=[],this.timeoutId=null,this.logger=d.getInstance(),this.initialized=!1,this.noClusterWarned=!1,this.onBeforeEnqueue=null,this.flushGate=null,this.config=e.config,this.session=e.session,this.transporter=e.transporter,this.getDeviceAttributes=e.getDeviceAttributes,this.eventsToSkipFlush=e.eventsToSkipFlush}initialize(){try{if(this.initialized)return;this.scheduleFlush(),this.initialized=!0}catch(e){g(e)}}destroy(){try{null!==this.timeoutId&&(w.clearTimeout(this.timeoutId),this.timeoutId=null),this.events=[],this.initialized=!1}catch(e){g(e)}}setBeforeEnqueueHook(e){this.onBeforeEnqueue=e}setFlushGate(e){this.flushGate=e}discardBuffer(){this.events=[]}isFlushAllowed(){if(null===this.flushGate)return!0;try{return this.flushGate()}catch(e){return g(e),!0}}addEvent(e){var t;if(e&&this.initialized)try{const n=this.config.getConfig()?.options?.beforeSend,r=this.config.getConfig()?.options?.enrichEvent;let i=e;if(n&&!n(i))return;if(this.onBeforeEnqueue)try{this.onBeforeEnqueue(i)}catch(e){g(e)}if(r&&(i=r(i)),!this.isFlushAllowed()&&this.events.length>=500)return;this.events.push(i);const s=(t=this.config.getConfig()?.options?.transport?.batchSize,"number"==typeof t&&Number.isFinite(t)&&t>=0?t:Ve);this.events.length>=s&&!this.eventsToSkipFlush.includes(i.type)&&this.flush()}catch(e){g(e)}}flush({lifecycle:e=!1}={}){try{if(!this.initialized)return;if(!this.isFlushAllowed())return void this.scheduleFlush();if(!this.events?.length)return void this.scheduleFlush();if(!this.config.getConfig()?.cluster)return this.noClusterWarned||(this.noClusterWarned=!0,this.logger.log("[events-pool.flush] skipping flush: no cluster")),void this.scheduleFlush();this.noClusterWarned=!1;const t={sessionAttributes:this.getSessionAttributes(),events:this.events};e?this.transporter.send(t,{lifecycle:!0}):this.transporter.send(t),this.events=[],this.scheduleFlush()}catch(e){g(e)}}async flushSync(){try{if(!this.events?.length||!this.initialized)return;if(!this.isFlushAllowed())return void this.discardBuffer();if(!this.config.getConfig()?.cluster)return void this.logger.log("[events-pool.flush] skipping flush: no cluster");await this.transporter.send({sessionAttributes:this.getSessionAttributes(),events:this.events}),this.events=[]}catch(e){g(e)}}scheduleFlush(){try{null!==this.timeoutId&&(w.clearTimeout(this.timeoutId),this.timeoutId=null);const t=(e=this.config.getConfig()?.options?.transport?.batchTimeout,"number"==typeof e&&Number.isFinite(e)&&e>0?e:Je);this.timeoutId=w.setTimeout((()=>{this.timeoutId=null,this.flush()}),t)}catch(e){g(e)}var e}getSessionAttributes(){const e=this.config.getConfig();return{...this.getDeviceAttributes(),cluster:e?.cluster||"",env:e?.environment||"",namespace:e?.namespace||"",releaseId:e?.releaseId||"",session_id:this.session.getSessionId(),session_start_time:this.session.getSessionStartTime(),user:e?.user||{},"service.name":e?.appId}}},et=class{constructor(e){this.logger=d.getInstance(),this.config=e.config,this.enrichAttributes=e.enrichAttributes??null,this.idGenerator=e.idGenerator??new p}getPlatformAttributes(){if(!this.enrichAttributes)return{};try{return this.enrichAttributes()??{}}catch(e){return this.logger.log("[event-enricher] platform attribute contributor threw; continuing without it",e),{}}}shouldSample(){const e=this.config.getConfig()?.options?.eventSampleRate;return!(void 0!==e&&!Number.isNaN(e))||Math.random()<=e}formatEventObject(e,t="",n=new WeakSet,r=0){try{return r>=10?{[t||"depth_limit"]:"[Depth Limit]"}:I(e)?{[t||"dom_node"]:`[${e?.constructor?.name||"DomNode"}]`}:n.has(e)?{[t||"circular_reference"]:"[Circular]"}:(n.add(e),Object.entries(e).reduce(((e,[i,s])=>{const o=t?`${t}.${i}`:i;return"object"==typeof s&&null!==s?Array.isArray(s)?e[o]=s.map(((e,t)=>"object"==typeof e&&null!==e?this.formatEventObject(e,`${o}[${t}]`,n,r+1):e)):Object.assign(e,this.formatEventObject(s,o,n,r+1)):e[o]=s,e}),{}))}catch(e){return this.logger.log("[event-enricher.formatEventObject] Error formatting event object",e),{[t||"format_error"]:"[Error formatting object]"}}finally{n.delete(e)}}enrich(e){const t=S(Date.now()),n=this.idGenerator.generateId(),r=e.spanId||this.idGenerator.generateSpanId(),i=e.traceId||this.idGenerator.generateTraceId(),s=e.parentSpanId||"",o=this.formatEventObject(e.attributes||{}),a=this.getPlatformAttributes(),l={type:e.type,id:n,spanId:r,parentSpanId:s,traceId:i,attributes:{...o,...a}};return e.span_name&&(l.span_name=e.span_name),"network"===e.type?(l.start_timestamp=e.timestamp||t,l.end_timestamp=e?.end_timestamp):l.timestamp=t,l}};function tt(e,t){if(!t)return{data:(new TextEncoder).encode(e),isCompressed:!1};try{const t=l(e);return{data:c(t),isCompressed:!0}}catch(t){return{data:(new TextEncoder).encode(e),isCompressed:!1}}}var nt=class{constructor(e){this.logger=d.getInstance(),this.config=e.config,this.sendBatch=e.sendBatch,this.encodeAsync=e.encodeAsync??null}compressAsync(e,t){if(!this.encodeAsync)return Promise.resolve(tt(e,t));try{return this.encodeAsync(e,t).catch((()=>tt(e,t)))}catch{return Promise.resolve(tt(e,t))}}async send(e,{lifecycle:t=!1}={}){const n=this.config.getConfig();if(n)try{n?.options?.debug&&this.logger.log("Sending batch:",e,{groundcoverIgnore:!0});const r=n.apiKey,i=this.buildEndpoint();if(!r)return void this.logger.log("No API key found");const s=JSON.stringify(e),o=!!n?.options?.transport?.compression,{data:a,isCompressed:l}=t?tt(s,o):await this.compressAsync(s,o),c={"Content-Type":"application/json",apikey:r,"Content-Encoding":l?"gzip":""};this.sendBatch(i,{method:"POST",headers:c,body:a}).catch((e=>{this.logger.log("Network error while sending batch:",e,{groundcoverIgnore:!0})}))}catch(e){n?.options?.debug&&this.logger.log("Failed to send batch:",e,{groundcoverIgnore:!0})}}buildEndpoint(){const e=this.config.getConfig();return e?`${e.getEndpoint()}/json/rum`:""}},rt=class{constructor(e){this.storage=e}getItem(e){try{return this.storage?.getItem(e)??null}catch(e){return g(e),null}}setItem(e,t){try{this.storage?.setItem(e,t)}catch(e){g(e)}}removeItem(e){try{this.storage?.removeItem(e)}catch(e){g(e)}}getNumericItem(e,t=0){const n=this.getItem(e);if(null===n)return t;const r=Number(n);return Number.isFinite(r)?r:t}},it=class{constructor(e){this.sessionId=null,this.sessionStartTime=null,this.lastActivityMs=null,this.lastPersistedActivityMs=0,this.storage=e.storage,this.getMaxDurationMs=e.getMaxDurationMs??null}getSessionId(){if(this.sessionId)return this.sessionId;return this.storage.getItem("gcId")||""}setSessionId(e){this.sessionId=e,this.storage.setItem("gcId",e)}getSessionStartTime(){return this.sessionStartTime?this.sessionStartTime:this.storage.getNumericItem("gcStartTime",0)}setSessionStartTime(e){this.sessionStartTime=e,this.storage.setItem("gcStartTime",String(e)),this.lastActivityMs=null,this.lastPersistedActivityMs=0,this.storage.removeItem("gcLastActivity")}getLastActivityMs(){return null!==this.lastActivityMs?this.lastActivityMs:this.storage.getNumericItem("gcLastActivity",0)}setLastActivityMs(e){this.lastActivityMs=e,e-this.lastPersistedActivityMs>=6e4&&this.persistLastActivity()}persistLastActivity(){null!==this.lastActivityMs&&(this.lastPersistedActivityMs=this.lastActivityMs,this.storage.setItem("gcLastActivity",String(this.lastActivityMs)))}isSessionInactive(e=Date.now()){const t=this.getLastActivityMs(),n=t>0?t:k(this.getSessionStartTime());return n>0&&e-n>=Ne}hasUserActivity(){return this.getLastActivityMs()>0}clearSamplingDecision(){this.storage.removeItem(Ce)}clearSessionState(){this.sessionId=null,this.sessionStartTime=null,this.lastActivityMs=null,this.lastPersistedActivityMs=0,this.storage.removeItem("gcId"),this.storage.removeItem("gcStartTime"),this.storage.removeItem("gcLastActivity"),this.clearSamplingDecision()}getSessionMaxDuration(){return this.getMaxDurationMs?.()??qe}getSessionElapsedMs(e=Date.now()){const t=this.getSessionStartTime();return t?e-k(t):0}isSessionExpired(e=Date.now()){return this.getSessionElapsedMs(e)>=this.getSessionMaxDuration()}};function st(){const e=navigator.userAgent;let t="unknown",n="unknown";const r=navigator.platform||"unknown",i=/Mobile|Android|iPhone|iPad|iPod/i.test(e);return/Edg/.test(e)?(t="Edge",n=e.match(/Edg\/([\d.]+)/)?.[1]||n):/Chrome/.test(e)&&!/Chromium/.test(e)?(t="Chrome",n=e.match(/Chrome\/([\d.]+)/)?.[1]||n):/Firefox/.test(e)?(t="Firefox",n=e.match(/Firefox\/([\d.]+)/)?.[1]||n):/Safari/.test(e)&&!/Chrome/.test(e)?(t="Safari",n=e.match(/Version\/([\d.]+)/)?.[1]||n):/Trident/.test(e)?(t="Internet Explorer",n=/rv:([^)]+)\)/i.test(e)?e.match(/rv:([^)]+)\)/i)?.[1]||n:e.match(/MSIE ([^;]+)/)?.[1]||n):/OPR/.test(e)&&(t="Opera",n=e.match(/OPR\/([\d.]+)/)?.[1]||n),{userAgent:e,browser:{name:t,version:n,platform:r,language:navigator.language,mobile:i}}}var ot,at=["navigation","dom.event"],lt=class{constructor(e){this.core=null,this.hideWired=!1,this.hideHandler=()=>{try{if("undefined"==typeof document||"hidden"!==document.visibilityState)return;this.core?.session.persistLastActivity(),this.core?.pool.flush({lifecycle:!0})}catch(e){g(e)}},this.logger=d.initialize({debug:e.options?.debug||!1,prefix:"[groundcover]"}),this.logger.log("[session-manager] initialize called"),this.storage=new rt(function(){try{return void 0!==globalThis.sessionStorage?globalThis.sessionStorage:null}catch{return null}}()),this.idGenerator=new p;const t=new Ge;t.initialize(e);const n=new it({storage:this.storage,getMaxDurationMs:()=>t.getConfig()?.options?.sessionMaxDuration});!function({session:e,idGenerator:t,providedSessionId:n}){const r=d.getInstance();try{const i=e.getSessionId();n&&n!==i?(e.setSessionId(n),e.setSessionStartTime(S(Date.now())),e.clearSamplingDecision(),r.log("[session-bootstrap] using provided sessionId:",n)):n?(e.setSessionId(n),r.log("[session-bootstrap] continuing provided sessionId:",n)):i||e.setSessionId(t.generateId());const s=6e4,o=Date.now(),a=k(e.getSessionStartTime());if(a>0&&o-a>=-s){if(e.isSessionExpired(o)||e.isSessionInactive(o)){const n=e.isSessionExpired(o)?"persisted session past cap":"inactivity gap across reload",i=e.getSessionId(),s=t.generateId();e.setSessionId(s),e.setSessionStartTime(S(o)),e.clearSamplingDecision(),r.log(`[session-bootstrap] init-time rotation: ${n}`,{from:i,to:s})}}else e.setSessionStartTime(S(o))}catch(e){r.log("[session-bootstrap] session bootstrap failed:",e)}}({session:n,idGenerator:this.idGenerator,providedSessionId:e.sessionId});if(!function({storage:e,sessionSampleRate:t}){const n=d.getInstance();if(void 0===t||!Number.isFinite(t)||1===t)return!0;const r=t;try{const t=e.getItem(Ce);if(t){const e="1"===t;return n.log("[session-bootstrap] using stored sampling decision:",e),e}const i=Math.random()<r;return e.setItem(Ce,i?"1":"0"),n.log("[session-bootstrap] stored new sampling decision:",i),i}catch(e){n.log("[session-bootstrap] storage access failed:",e);const t=Math.random()<r;return n.log("[session-bootstrap] using fallback sampling decision:",t),t}}({storage:this.storage,sessionSampleRate:e.options?.sessionSampleRate}))return void this.logger.log("[session-manager] session is not sampled");const r=new nt({config:t,sendBatch:(e,t)=>fetch(e,t),encodeAsync:(e,t)=>Me.withFallback((n=>n.encodeBatch(e,t)),(()=>tt(e,t)),"transporter")}),i=new Ze({config:t,session:n,transporter:r,getDeviceAttributes:st,eventsToSkipFlush:at}),s=function(e){return()=>{let t="";try{t=w?.document?.title||""}catch(e){g(e)}try{const n=w?.location;if(!n)return{path:"",url:"",title:t};const r=n.hash&&!n.hash.match(/^#[a-z0-9-]+$/i)&&n.hash.startsWith("#/"),i=r?n.hash:n.pathname,s=e.getPrivacy(),o=s.shouldMaskNetworkQueryParams,a={sensitiveKeys:s.sensitiveKeys,redact:s.redact,kind:"query"};return{path:o&&r?D(i,a):i,url:o?D(n.href,a):n.href,title:t}}catch(e){return g(e),{path:"",url:"",title:t}}}}(t),o=new et({config:t,enrichAttributes:()=>({location:s()}),idGenerator:this.idGenerator}),a=new Oe({config:t,session:n,eventsPool:i,enricher:o});try{i.initialize(),Me.getInstance(),this.wireHideHandler(),a.instrument(),this.core={config:t,session:n,pool:i,instrumentation:a}}catch(e){this.logger.log("[session-manager] initialization failed — tearing down partial startup:",e);try{a.uninstrument()}catch(e){g(e)}throw i.destroy(),this.unwireHideHandler(),this.core=null,e}}wireHideHandler(){if(!this.hideWired&&"undefined"!=typeof document){this.hideWired=!0;try{document.addEventListener("visibilitychange",this.hideHandler)}catch(e){g(e)}}}unwireHideHandler(){if(this.hideWired&&"undefined"!=typeof document){this.hideWired=!1;try{document.removeEventListener("visibilitychange",this.hideHandler)}catch(e){g(e)}}}identifyUser(e){this.logger.log("[session-manager] identifyUser called"),this.core?this.core.config.updateConfig({user:e}):this.logger.log("[session-manager] cannot identify user: SDK not initialized")}updateConfig(e){if(!this.core)return void this.logger.log("[session-manager] cannot update config: SDK not initialized");this.core.config.updateConfig(e);const t=e.options,n=!!t&&"privacy"in t,r=!!t&&"object"==typeof t.replay&&null!==t.replay&&"blockedSelectors"in t.replay;(n||r)&&this.core.instrumentation.restartReplayForConfigChange()}sendCustomEvent(e){this.core?this.core.instrumentation.sendCustomEvent(e):this.logger.log("[session-manager] cannot send custom event: SDK not initialized")}startNavigation(e){this.core?this.core.instrumentation.startNavigation(e):this.logger.log("[session-manager] cannot start navigation: SDK not initialized")}endNavigation(e){this.core?this.core.instrumentation.endNavigation(e):this.logger.log("[session-manager] cannot end navigation: SDK not initialized")}captureException(e,t){this.core?this.core.instrumentation.captureException(e,t):this.logger.log("[session-manager] Cannot capture exception: SDK not initialized")}emitLog(e,t,n){this.core?this.core.instrumentation.emitLog(e,t,n):this.logger.log("[session-manager] Cannot emit log: SDK not initialized")}getSessionId(){return this.core?this.core.session.getSessionId():(this.logger.log("[session-manager] cannot get session ID: SDK not initialized"),"")}async setSessionId(e){if(this.logger.log("[session-manager] setSessionId called"),this.core)try{this.core.instrumentation.flushPendingReplay(),await this.core.pool.flushSync();const t=e||this.idGenerator.generateId();this.core.session.setSessionId(t),this.core.session.setSessionStartTime(S(Date.now())),this.logger.log("[session-manager] session ID set successfully:",t)}catch(e){this.logger.log("[session-manager] failed to set session ID:",e)}else this.logger.log("[session-manager] cannot set session ID: SDK not initialized")}startReplayRecording(){this.core?this.core.instrumentation.startReplayRecording():this.logger.log("[session-manager] cannot start replay recording: SDK not initialized")}stopReplayRecording(){this.core?this.core.instrumentation.stopReplayRecording():this.logger.log("[session-manager] cannot stop replay recording: SDK not initialized")}handoffForReinit(){const e=this.core;if(!e)return;const t=e.session.hasUserActivity();e.instrumentation.uninstrument(),t&&e.pool.flush({lifecycle:!0}),e.pool.destroy(),this.unwireHideHandler(),this.core=null}destroy(){const e=this.core;e&&(e.instrumentation.uninstrument(),e.pool.destroy(),this.unwireHideHandler(),Me.getInstance().terminate(),e.session.clearSessionState(),this.core=null)}},ct=new class{constructor(e){this.manager=e}emit(e,t,n){this.manager&&this.manager.emitLog(t,e,n)}log(e,t){this.emit("log",e,t)}info(e,t){this.emit("info",e,t)}warn(e,t){this.emit("warn",e,t)}error(e,t){this.emit("error",e,t)}debug(e,t){this.emit("debug",e,t)}trace(e,t){this.emit("trace",e,t)}};var ht={init:function(e){try{ot?.handoffForReinit(),ot=new lt({cluster:e?.cluster||"",environment:e?.environment||"",namespace:e?.namespace,releaseId:e?.releaseId,dsn:e?.dsn||"",appId:e?.appId||"",user:e?.user,apiKey:e?.apiKey||"",options:e?.options,sessionId:e?.sessionId}),ct.manager=ot}catch(e){g(e)}},identifyUser:function(e){ot?ot.identifyUser(e):console.warn("[groundcover] identifyUser: groundcover is not initialized. please call init() first")},sendCustomEvent:function(e){ot&&ot.sendCustomEvent(e)},captureException:function(e,t){ot&&ot.captureException(e,t)},logger:ct,updateConfig:function(e){if(ot)try{ot.updateConfig(e)}catch(e){g(e)}},startNavigation:function(e){ot?ot.startNavigation(e):console.warn("[groundcover] startNavigation: groundcover is not initialized. please call init() first")},endNavigation:function(e){ot?ot.endNavigation(e):console.warn("[groundcover] endNavigation: groundcover is not initialized. please call init() first")},getSessionId:function(){return ot?ot.getSessionId():(console.warn("[groundcover] getSessionId: groundcover is not initialized. please call init() first"),"")},setSessionId:async function(e){if(ot)try{await ot.setSessionId(e)}catch(e){console.error("[groundcover] setSessionId: failed to set session ID:",e)}else console.warn("[groundcover] setSessionId: groundcover is not initialized. please call init() first")},startReplayRecording:function(){ot?ot.startReplayRecording():console.warn("[groundcover] startReplayRecording: groundcover is not initialized. please call init() first")},stopReplayRecording:function(){ot?ot.stopReplayRecording():console.warn("[groundcover] stopReplayRecording: groundcover is not initialized. please call init() first")}};if("undefined"!=typeof window&&!window.groundcover)try{window.groundcover=ht}catch(e){console.warn("[groundcover] Failed to expose groundcover on window:",e)}var dt=ht;export{dt as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groundcover/browser",
3
- "version": "1.0.8-rc.6",
3
+ "version": "1.0.8-rc.7",
4
4
  "description": "groundcover Real User Monitoring (RUM) SDK for the browser \u2014 performance, errors, logs, distributed tracing and session replay",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",