@runtimescope/sdk 0.9.2 → 0.9.3

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,8 +1,8 @@
1
- var ae=Object.defineProperty;var ce=(e,t,o)=>t in e?ae(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var f=(e,t,o)=>ce(e,typeof t!="symbol"?t+"":t,o);var O=console.debug.bind(console),S=class S{constructor(t){f(this,"ws",null);f(this,"batch",[]);f(this,"offlineQueue",[]);f(this,"flushTimer",null);f(this,"reconnectTimer",null);f(this,"reconnectDelay",500);f(this,"reconnectAttempt",0);f(this,"connected",!1);f(this,"stopped",!1);f(this,"config");f(this,"commandHandler",null);f(this,"hasEverConnected",!1);f(this,"connectionWarningTimer",null);f(this,"visibilityHandler",null);f(this,"onlineHandler",null);this.config=t}connect(){this.stopped=!1,this.doConnect(),this.connectionWarningTimer=setTimeout(()=>{!this.hasEverConnected&&!this.stopped&&console.warn(`[RuntimeScope] SDK has not connected to ${this.config.serverUrl} after 10s. Is the collector running? Start it with: npx @runtimescope/collector`)},S.CONNECTION_WARNING_DELAY),typeof document<"u"&&(this.visibilityHandler=()=>{document.visibilityState==="visible"&&!this.connected&&!this.stopped&&(O("[RuntimeScope] Tab visible \u2014 attempting immediate reconnect"),this.resetReconnectState(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.doConnect())},document.addEventListener("visibilitychange",this.visibilityHandler)),typeof window<"u"&&(this.onlineHandler=()=>{!this.connected&&!this.stopped&&(O("[RuntimeScope] Network online \u2014 attempting immediate reconnect"),this.resetReconnectState(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.doConnect())},window.addEventListener("online",this.onlineHandler))}doConnect(){if(!this.stopped){try{this.ws=new WebSocket(this.config.serverUrl)}catch{this.scheduleReconnect();return}this.ws.onmessage=t=>{try{let o=JSON.parse(String(t.data));o.type==="command"&&o.payload&&this.commandHandler&&this.commandHandler(o.payload),o.type==="__server_restart"&&(O("[RuntimeScope] Server restart notice received \u2014 will reconnect immediately"),this.resetReconnectState()),o.type==="error"&&o.payload?.code==="AUTH_FAILED"&&(O("[RuntimeScope] Authentication failed \u2014 stopping reconnection"),this.stopped=!0)}catch{}},this.ws.onopen=()=>{if(this.connected=!0,this.hasEverConnected=!0,this.resetReconnectState(),O(`[RuntimeScope] Connected to ${this.config.serverUrl}`),this.sendRaw({type:"handshake",payload:{appName:this.config.appName,sdkVersion:this.config.sdkVersion,sessionId:this.config.sessionId,...this.config.authToken?{authToken:this.config.authToken}:{},...this.config.projectId?{projectId:this.config.projectId}:{}},timestamp:Date.now(),sessionId:this.config.sessionId}),this.offlineQueue.length>0){let t=this.offlineQueue.splice(0);for(let o of t)this.batch.push(o);this.flush()}this.flushTimer=setInterval(()=>this.flush(),this.config.flushIntervalMs)},this.ws.onclose=()=>{this.connected=!1,this.clearFlushTimer(),this.stopped||(O("[RuntimeScope] Disconnected, will reconnect..."),this.scheduleReconnect())},this.ws.onerror=()=>{O(`[RuntimeScope] WebSocket error connecting to ${this.config.serverUrl}`)}}}send(t){this.connected?(this.batch.push(t),this.batch.length>=this.config.batchSize&&this.flush()):this.offlineQueue.length<S.MAX_OFFLINE_QUEUE&&this.offlineQueue.push(t)}flush(){if(this.batch.length===0||!this.connected||!this.ws)return;let t=this.batch.splice(0);this.sendRaw({type:"event",payload:{events:t},timestamp:Date.now(),sessionId:this.config.sessionId})}sendRaw(t){if(this.ws&&this.ws.readyState===WebSocket.OPEN)try{this.ws.send(JSON.stringify(t))}catch{}}scheduleReconnect(){if(this.stopped||this.reconnectTimer)return;this.reconnectAttempt++;let t;if(this.reconnectAttempt<=S.FAST_RETRY_COUNT)t=S.FAST_RETRY_DELAY;else{let o=this.reconnectDelay*.25*(Math.random()*2-1);t=Math.min(this.reconnectDelay+o,S.MAX_RECONNECT_DELAY),this.reconnectDelay=Math.min(this.reconnectDelay*2,S.MAX_RECONNECT_DELAY)}this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.doConnect()},t)}resetReconnectState(){this.reconnectDelay=500,this.reconnectAttempt=0}clearFlushTimer(){this.flushTimer&&(clearInterval(this.flushTimer),this.flushTimer=null)}onCommand(t){this.commandHandler=t}sendCommandResponse(t,o,n){this.sendRaw({type:"command_response",requestId:t,command:o,payload:n,timestamp:Date.now(),sessionId:this.config.sessionId})}disconnect(){this.stopped=!0,this.clearFlushTimer(),this.connectionWarningTimer&&(clearTimeout(this.connectionWarningTimer),this.connectionWarningTimer=null),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.visibilityHandler&&typeof document<"u"&&(document.removeEventListener("visibilitychange",this.visibilityHandler),this.visibilityHandler=null),this.onlineHandler&&typeof window<"u"&&(window.removeEventListener("online",this.onlineHandler),this.onlineHandler=null),this.flush(),this.ws&&(this.ws.onclose=null,this.ws.onerror=null,this.ws.close(),this.ws=null),this.connected=!1,this.batch=[],this.offlineQueue=[]}};f(S,"MAX_OFFLINE_QUEUE",1e3),f(S,"MAX_RECONNECT_DELAY",3e4),f(S,"CONNECTION_WARNING_DELAY",1e4),f(S,"FAST_RETRY_COUNT",3),f(S,"FAST_RETRY_DELAY",500);var M=S;function m(){let e=new Uint8Array(8);return crypto.getRandomValues(e),Array.from(e,t=>t.toString(16).padStart(2,"0")).join("")}function U(){let e=new Uint8Array(16);return crypto.getRandomValues(e),Array.from(e,t=>t.toString(16).padStart(2,"0")).join("")}var ue=1e3,de=1e4,le=5e3,L=new Map,H=null,P=0;function pe(){P++,!H&&(H=setInterval(()=>{let e=Date.now()-de;for(let[t,o]of L)o<e&&L.delete(t)},le))}function fe(){P--,P<=0&&H&&(clearInterval(H),H=null,P=0)}function X(e,t,o,n){let r=window.fetch,u=new Set(o.map(a=>a.toLowerCase())),i=n?.captureBody??!1,s=n?.maxBodySize??65536;return pe(),window.fetch=async function(a,c){let l=performance.now(),p=typeof a=="string"?a:a instanceof URL?a.href:a.url,d=(c?.method??"GET").toUpperCase(),h=me(c?.headers,u),g=ge(c?.body),b=we(c?.body),R;i&&c?.body&&(R=ve(c.body,s));let _=`${d}:${p}:${l}`;if(L.size>=ue){let v=L.keys().next().value;v!==void 0&&L.delete(v)}L.set(_,Date.now());try{let v=await r.call(window,a,c),k=performance.now()-l,D=parseInt(v.headers.get("content-length")||"0",10),C=he(v.headers,u),w;if(i)try{let N=await v.clone().text();w=N.length>s?N.slice(0,s):N}catch{}let E={eventId:m(),sessionId:t,timestamp:Date.now(),eventType:"network",url:p,method:d,status:v.status,requestHeaders:h,responseHeaders:C,requestBodySize:g,responseBodySize:D,duration:k,ttfb:k,graphqlOperation:b,requestBody:R,responseBody:w,source:"fetch"};if(n?.beforeSend){let I=n.beforeSend(E);I&&e(I)}else e(E);return v}catch(v){let k=performance.now()-l,D="error",C="";v instanceof DOMException&&v.name==="AbortError"?(D="abort",C="Request aborted"):v instanceof Error&&(C=v.message);let w={eventId:m(),sessionId:t,timestamp:Date.now(),eventType:"network",url:p,method:d,status:0,requestHeaders:h,responseHeaders:{},requestBodySize:g,responseBodySize:0,duration:k,ttfb:0,graphqlOperation:b,requestBody:R,errorPhase:D,errorMessage:C,source:"fetch"};if(n?.beforeSend){let E=n.beforeSend(w);E&&e(E)}else e(w);throw v}},()=>{window.fetch=r,fe()}}function me(e,t){let o={};if(!e)return o;if(e instanceof Headers)e.forEach((n,r)=>{o[r]=t.has(r.toLowerCase())?"[REDACTED]":n});else if(Array.isArray(e))for(let[n,r]of e)o[n]=t.has(n.toLowerCase())?"[REDACTED]":r;else for(let[n,r]of Object.entries(e))o[n]=t.has(n.toLowerCase())?"[REDACTED]":r;return o}function he(e,t){let o={};return e.forEach((n,r)=>{o[r]=t.has(r.toLowerCase())?"[REDACTED]":n}),o}function ge(e){return e?typeof e=="string"?new Blob([e]).size:e instanceof Blob?e.size:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:e instanceof FormData?0:e instanceof URLSearchParams?new Blob([e.toString()]).size:0:0}function ve(e,t){if(e){if(typeof e=="string")return e.length>t?e.slice(0,t):e;if(e instanceof URLSearchParams){let o=e.toString();return o.length>t?o.slice(0,t):o}if(e instanceof FormData)return"[FormData]";if(e instanceof Blob)return`[Blob ${e.size} bytes]`;if(e instanceof ArrayBuffer)return`[ArrayBuffer ${e.byteLength} bytes]`;if(ArrayBuffer.isView(e))return`[TypedArray ${e.byteLength} bytes]`}}function we(e){if(!(!e||typeof e!="string"))try{let t=JSON.parse(e);if(typeof t.query=="string"){let o=t.query.trim(),n="query";o.startsWith("mutation")?n="mutation":o.startsWith("subscription")&&(n="subscription");let r=t.operationName||ye(o)||"anonymous";return{type:n,name:r}}}catch{}}function ye(e){return e.match(/^(?:query|mutation|subscription)\s+(\w+)/)?.[1]}function y(e,t=5){let o=new WeakSet;function n(r,u){if(u>t)return"[max depth]";if(r==null)return r;if(typeof r=="function")return`[Function: ${r.name||"anonymous"}]`;if(typeof r=="symbol"||typeof r=="bigint")return r.toString();if(typeof r!="object")return r;if(r instanceof Error)return{name:r.name,message:r.message,stack:r.stack};if(r instanceof Date)return r.toISOString();if(r instanceof RegExp)return r.toString();if(o.has(r))return"[Circular]";if(o.add(r),Array.isArray(r))return r.map(c=>n(c,u+1));let i={},s;try{s=Object.keys(r)}catch{return"[Object]"}let a=50;for(let c=0;c<Math.min(s.length,a);c++)try{i[s[c]]=n(r[s[c]],u+1)}catch{i[s[c]]="[Error accessing property]"}return s.length>a&&(i["..."]=`${s.length-a} more keys`),i}return n(e,0)}var W=["log","warn","error","info","debug","trace"];function V(e){if(!e)return;let t=e.split(`
2
- `).slice(3);for(let o of t){let n=o.match(/(?:at\s+)?(?:.*?\()?(.+?):(\d+):(\d+)\)?/);if(n&&!n[1].includes("interceptor")&&!n[1].includes("runtimescope"))return`${n[1]}:${n[2]}`}}function Q(e,t,o){let n={},r=new Map,u=new Map;for(let d of W)n[d]=console[d].bind(console),console[d]=(...h)=>{let g=new Error().stack,b=h.map(_=>typeof _=="string"?_:G(_)).join(" "),R={eventId:m(),sessionId:t,timestamp:Date.now(),eventType:"console",level:d,message:b,args:h.map(_=>y(_,3)),stackTrace:d==="error"||d==="trace"?g?.split(`
1
+ var ce=Object.defineProperty;var ue=(t,e,r)=>e in t?ce(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var f=(t,e,r)=>ue(t,typeof e!="symbol"?e+"":e,r);var D=console.debug.bind(console),S=class S{constructor(e){f(this,"ws",null);f(this,"batch",[]);f(this,"offlineQueue",[]);f(this,"flushTimer",null);f(this,"reconnectTimer",null);f(this,"reconnectDelay",500);f(this,"reconnectAttempt",0);f(this,"connected",!1);f(this,"stopped",!1);f(this,"config");f(this,"commandHandler",null);f(this,"hasEverConnected",!1);f(this,"connectionWarningTimer",null);f(this,"visibilityHandler",null);f(this,"onlineHandler",null);this.config=e}connect(){this.stopped=!1,this.doConnect(),this.connectionWarningTimer=setTimeout(()=>{!this.hasEverConnected&&!this.stopped&&console.warn(`[RuntimeScope] SDK has not connected to ${this.config.serverUrl} after 10s. Is the collector running? Start it with: npx @runtimescope/collector`)},S.CONNECTION_WARNING_DELAY),typeof document<"u"&&(this.visibilityHandler=()=>{document.visibilityState==="visible"&&!this.connected&&!this.stopped&&(D("[RuntimeScope] Tab visible \u2014 attempting immediate reconnect"),this.resetReconnectState(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.doConnect())},document.addEventListener("visibilitychange",this.visibilityHandler)),typeof window<"u"&&(this.onlineHandler=()=>{!this.connected&&!this.stopped&&(D("[RuntimeScope] Network online \u2014 attempting immediate reconnect"),this.resetReconnectState(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.doConnect())},window.addEventListener("online",this.onlineHandler))}doConnect(){if(!this.stopped){try{this.ws=new WebSocket(this.config.serverUrl)}catch{this.scheduleReconnect();return}this.ws.onmessage=e=>{try{let r=JSON.parse(String(e.data));r.type==="command"&&r.payload&&this.commandHandler&&this.commandHandler(r.payload),r.type==="__server_restart"&&(D("[RuntimeScope] Server restart notice received \u2014 will reconnect immediately"),this.resetReconnectState()),r.type==="error"&&r.payload?.code==="AUTH_FAILED"&&(D("[RuntimeScope] Authentication failed \u2014 stopping reconnection"),this.stopped=!0)}catch{}},this.ws.onopen=()=>{if(this.connected=!0,this.hasEverConnected=!0,this.resetReconnectState(),D(`[RuntimeScope] Connected to ${this.config.serverUrl}`),this.sendRaw({type:"handshake",payload:{appName:this.config.appName,sdkVersion:this.config.sdkVersion,sessionId:this.config.sessionId,...this.config.authToken?{authToken:this.config.authToken}:{},...this.config.projectId?{projectId:this.config.projectId}:{}},timestamp:Date.now(),sessionId:this.config.sessionId}),this.offlineQueue.length>0){let e=this.offlineQueue.splice(0);for(let r of e)this.batch.push(r);this.flush()}this.flushTimer=setInterval(()=>this.flush(),this.config.flushIntervalMs)},this.ws.onclose=()=>{this.connected=!1,this.clearFlushTimer(),this.stopped||(D("[RuntimeScope] Disconnected, will reconnect..."),this.scheduleReconnect())},this.ws.onerror=()=>{D(`[RuntimeScope] WebSocket error connecting to ${this.config.serverUrl}`)}}}send(e){this.connected?(this.batch.push(e),this.batch.length>=this.config.batchSize&&this.flush()):this.offlineQueue.length<S.MAX_OFFLINE_QUEUE&&this.offlineQueue.push(e)}flush(){if(this.batch.length===0||!this.connected||!this.ws)return;let e=this.batch.splice(0);this.sendRaw({type:"event",payload:{events:e},timestamp:Date.now(),sessionId:this.config.sessionId})}sendRaw(e){if(this.ws&&this.ws.readyState===WebSocket.OPEN)try{this.ws.send(JSON.stringify(e))}catch{}}scheduleReconnect(){if(this.stopped||this.reconnectTimer)return;this.reconnectAttempt++;let e;if(this.reconnectAttempt<=S.FAST_RETRY_COUNT)e=S.FAST_RETRY_DELAY;else{let r=this.reconnectDelay*.25*(Math.random()*2-1);e=Math.min(this.reconnectDelay+r,S.MAX_RECONNECT_DELAY),this.reconnectDelay=Math.min(this.reconnectDelay*2,S.MAX_RECONNECT_DELAY)}this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.doConnect()},e)}resetReconnectState(){this.reconnectDelay=500,this.reconnectAttempt=0}clearFlushTimer(){this.flushTimer&&(clearInterval(this.flushTimer),this.flushTimer=null)}onCommand(e){this.commandHandler=e}sendCommandResponse(e,r,s){this.sendRaw({type:"command_response",requestId:e,command:r,payload:s,timestamp:Date.now(),sessionId:this.config.sessionId})}disconnect(){this.stopped=!0,this.clearFlushTimer(),this.connectionWarningTimer&&(clearTimeout(this.connectionWarningTimer),this.connectionWarningTimer=null),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.visibilityHandler&&typeof document<"u"&&(document.removeEventListener("visibilitychange",this.visibilityHandler),this.visibilityHandler=null),this.onlineHandler&&typeof window<"u"&&(window.removeEventListener("online",this.onlineHandler),this.onlineHandler=null),this.flush(),this.ws&&(this.ws.onclose=null,this.ws.onerror=null,this.ws.close(),this.ws=null),this.connected=!1,this.batch=[],this.offlineQueue=[]}};f(S,"MAX_OFFLINE_QUEUE",1e3),f(S,"MAX_RECONNECT_DELAY",3e4),f(S,"CONNECTION_WARNING_DELAY",1e4),f(S,"FAST_RETRY_COUNT",3),f(S,"FAST_RETRY_DELAY",500);var M=S;function m(){let t=new Uint8Array(8);return crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,"0")).join("")}function X(){let t=new Uint8Array(16);return crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,"0")).join("")}var de=1e3,pe=1e4,le=5e3,L=new Map,H=null,P=0;function fe(){P++,!H&&(H=setInterval(()=>{let t=Date.now()-pe;for(let[e,r]of L)r<t&&L.delete(e)},le))}function me(){P--,P<=0&&H&&(clearInterval(H),H=null,P=0)}function W(t,e,r,s){let n=window.fetch,c=new Set(r.map(o=>o.toLowerCase())),a=s?.captureBody??!1,i=s?.maxBodySize??65536;return fe(),window.fetch=async function(o,u){let p=performance.now(),l=typeof o=="string"?o:o instanceof URL?o.href:o.url,d=(u?.method??"GET").toUpperCase(),h=he(u?.headers,c),g=ve(u?.body),b=ye(u?.body),E;a&&u?.body&&(E=we(u.body,i));let _=`${d}:${l}:${p}`;if(L.size>=de){let v=L.keys().next().value;v!==void 0&&L.delete(v)}L.set(_,Date.now());try{let v=await n.call(window,o,u),k=performance.now()-p,x=parseInt(v.headers.get("content-length")||"0",10),C=ge(v.headers,c),w;if(a)try{let O=await v.clone().text();w=O.length>i?O.slice(0,i):O}catch{}let R={eventId:m(),sessionId:e,timestamp:Date.now(),eventType:"network",url:l,method:d,status:v.status,requestHeaders:h,responseHeaders:C,requestBodySize:g,responseBodySize:x,duration:k,ttfb:k,graphqlOperation:b,requestBody:E,responseBody:w,source:"fetch"};if(s?.beforeSend){let I=s.beforeSend(R);I&&t(I)}else t(R);return v}catch(v){let k=performance.now()-p,x="error",C="";v instanceof DOMException&&v.name==="AbortError"?(x="abort",C="Request aborted"):v instanceof Error&&(C=v.message);let w={eventId:m(),sessionId:e,timestamp:Date.now(),eventType:"network",url:l,method:d,status:0,requestHeaders:h,responseHeaders:{},requestBodySize:g,responseBodySize:0,duration:k,ttfb:0,graphqlOperation:b,requestBody:E,errorPhase:x,errorMessage:C,source:"fetch"};if(s?.beforeSend){let R=s.beforeSend(w);R&&t(R)}else t(w);throw v}},()=>{window.fetch=n,me()}}function he(t,e){let r={};if(!t)return r;if(t instanceof Headers)t.forEach((s,n)=>{r[n]=e.has(n.toLowerCase())?"[REDACTED]":s});else if(Array.isArray(t))for(let[s,n]of t)r[s]=e.has(s.toLowerCase())?"[REDACTED]":n;else for(let[s,n]of Object.entries(t))r[s]=e.has(s.toLowerCase())?"[REDACTED]":n;return r}function ge(t,e){let r={};return t.forEach((s,n)=>{r[n]=e.has(n.toLowerCase())?"[REDACTED]":s}),r}function ve(t){return t?typeof t=="string"?new Blob([t]).size:t instanceof Blob?t.size:t instanceof ArrayBuffer||ArrayBuffer.isView(t)?t.byteLength:t instanceof FormData?0:t instanceof URLSearchParams?new Blob([t.toString()]).size:0:0}function we(t,e){if(t){if(typeof t=="string")return t.length>e?t.slice(0,e):t;if(t instanceof URLSearchParams){let r=t.toString();return r.length>e?r.slice(0,e):r}if(t instanceof FormData)return"[FormData]";if(t instanceof Blob)return`[Blob ${t.size} bytes]`;if(t instanceof ArrayBuffer)return`[ArrayBuffer ${t.byteLength} bytes]`;if(ArrayBuffer.isView(t))return`[TypedArray ${t.byteLength} bytes]`}}function ye(t){if(!(!t||typeof t!="string"))try{let e=JSON.parse(t);if(typeof e.query=="string"){let r=e.query.trim(),s="query";r.startsWith("mutation")?s="mutation":r.startsWith("subscription")&&(s="subscription");let n=e.operationName||Ee(r)||"anonymous";return{type:s,name:n}}}catch{}}function Ee(t){return t.match(/^(?:query|mutation|subscription)\s+(\w+)/)?.[1]}function y(t,e=5){let r=new WeakSet;function s(n,c){if(c>e)return"[max depth]";if(n==null)return n;if(typeof n=="function")return`[Function: ${n.name||"anonymous"}]`;if(typeof n=="symbol"||typeof n=="bigint")return n.toString();if(typeof n!="object")return n;if(n instanceof Error)return{name:n.name,message:n.message,stack:n.stack};if(n instanceof Date)return n.toISOString();if(n instanceof RegExp)return n.toString();if(r.has(n))return"[Circular]";if(r.add(n),Array.isArray(n))return n.map(u=>s(u,c+1));let a={},i;try{i=Object.keys(n)}catch{return"[Object]"}let o=50;for(let u=0;u<Math.min(i.length,o);u++)try{a[i[u]]=s(n[i[u]],c+1)}catch{a[i[u]]="[Error accessing property]"}return i.length>o&&(a["..."]=`${i.length-o} more keys`),a}return s(t,0)}var V=["log","warn","error","info","debug","trace"];function G(t){if(!t)return;let e=t.split(`
2
+ `).slice(3);for(let r of e){let s=r.match(/(?:at\s+)?(?:.*?\()?(.+?):(\d+):(\d+)\)?/);if(s&&!s[1].includes("interceptor")&&!s[1].includes("runtimescope"))return`${s[1]}:${s[2]}`}}function K(t,e,r){let s={},n=new Map,c=new Map;for(let d of V)s[d]=console[d].bind(console),console[d]=(...h)=>{let g=new Error().stack,b=h.map(_=>typeof _=="string"?_:Q(_)).join(" "),E={eventId:m(),sessionId:e,timestamp:Date.now(),eventType:"console",level:d,message:b,args:h.map(_=>y(_,3)),stackTrace:d==="error"||d==="trace"?g?.split(`
3
3
  `).slice(2).join(`
4
- `):void 0,sourceFile:V(g),source:"browser"};if(o){let _=o(R);_&&e(_)}else e(R);n[d](...h)};let i=console.assert?.bind(console);i&&(console.assert=(d,...h)=>{if(!d){let g=new Error().stack,b=`Assertion failed: ${h.map(R=>typeof R=="string"?R:G(R)).join(" ")}`;e({eventId:m(),sessionId:t,timestamp:Date.now(),eventType:"console",level:"error",message:b,args:h.map(R=>y(R,3)),stackTrace:g?.split(`
4
+ `):void 0,sourceFile:G(g),source:"browser"};if(r){let _=r(E);_&&t(_)}else t(E);s[d](...h)};let a=console.assert?.bind(console);a&&(console.assert=(d,...h)=>{if(!d){let g=new Error().stack,b=`Assertion failed: ${h.map(E=>typeof E=="string"?E:Q(E)).join(" ")}`;t({eventId:m(),sessionId:e,timestamp:Date.now(),eventType:"console",level:"error",message:b,args:h.map(E=>y(E,3)),stackTrace:g?.split(`
5
5
  `).slice(2).join(`
6
- `),sourceFile:V(g),source:"browser"})}i(d,...h)});let s=console.time?.bind(console),a=console.timeEnd?.bind(console);s&&(console.time=(d="default")=>{r.set(d,performance.now()),s(d)}),a&&(console.timeEnd=(d="default")=>{let h=r.get(d);if(h!==void 0){let g=performance.now()-h;r.delete(d),e({eventId:m(),sessionId:t,timestamp:Date.now(),eventType:"console",level:"info",message:`${d}: ${g.toFixed(2)}ms`,args:[{label:d,duration:g}],source:"browser"})}a(d)});let c=console.count?.bind(console),l=console.countReset?.bind(console);c&&(console.count=(d="default")=>{let h=(u.get(d)??0)+1;u.set(d,h),e({eventId:m(),sessionId:t,timestamp:Date.now(),eventType:"console",level:"info",message:`${d}: ${h}`,args:[{label:d,count:h}],source:"browser"}),c(d)}),l&&(console.countReset=(d="default")=>{u.delete(d),l(d)});let p=console.table?.bind(console);return p&&(console.table=(d,h)=>{e({eventId:m(),sessionId:t,timestamp:Date.now(),eventType:"console",level:"info",message:`[table] ${Array.isArray(d)?`${d.length} rows`:typeof d}`,args:[y(d,3)],source:"browser"}),p(d,h)}),()=>{for(let d of W)console[d]=n[d];i&&(console.assert=i),s&&(console.time=s),a&&(console.timeEnd=a),c&&(console.count=c),l&&(console.countReset=l),p&&(console.table=p)}}function G(e){try{return JSON.stringify(e)}catch{return String(e)}}function K(e,t,o,n){let r=new Set(o.map(p=>p.toLowerCase())),u=n?.captureBody??!1,i=n?.maxBodySize??65536,s=new AbortController,a=XMLHttpRequest.prototype.open,c=XMLHttpRequest.prototype.setRequestHeader,l=XMLHttpRequest.prototype.send;return XMLHttpRequest.prototype.open=function(p,d){return this.__rs_method=p.toUpperCase(),this.__rs_url=typeof d=="string"?d:d.href,this.__rs_headers={},a.apply(this,arguments)},XMLHttpRequest.prototype.setRequestHeader=function(p,d){return this.__rs_headers&&(this.__rs_headers[p.toLowerCase()]=r.has(p.toLowerCase())?"[REDACTED]":d),c.call(this,p,d)},XMLHttpRequest.prototype.send=function(p){let d=this.__rs_method??"GET",h=this.__rs_url??"",g=`${d}:${h}`,b=!1;for(let w of L.keys())if(w.startsWith(g)){b=!0;break}if(b)return this.__rs_fetchIntercepted=!0,l.call(this,p);let R={...this.__rs_headers??{}},_=performance.now(),v,k=0;if(p){if(typeof p=="string")k=new Blob([p]).size,u&&(v=p.length>i?p.slice(0,i):p);else if(p instanceof Blob)k=p.size,u&&(v=`[Blob ${p.size} bytes]`);else if(p instanceof ArrayBuffer)k=p.byteLength,u&&(v=`[ArrayBuffer ${p.byteLength} bytes]`);else if(p instanceof FormData)u&&(v="[FormData]");else if(p instanceof URLSearchParams){let w=p.toString();k=new Blob([w]).size,u&&(v=w.length>i?w.slice(0,i):w)}}let D=Ee(p),C=w=>{let E={eventId:m(),sessionId:t,timestamp:Date.now(),eventType:"network",url:h,method:d,status:0,requestHeaders:R,responseHeaders:{},requestBodySize:k,responseBodySize:0,duration:0,ttfb:0,graphqlOperation:D,requestBody:v,source:"xhr",...w};if(n?.beforeSend){let I=n.beforeSend(E);I&&e(I)}else e(E)};return this.addEventListener("loadend",()=>{let w=performance.now()-_;if(this.status>0){let E=Re(this.getAllResponseHeaders(),r),I=parseInt(this.getResponseHeader("content-length")||"0",10),N;if(u&&(this.responseType===""||this.responseType==="text"))try{let j=this.responseText;N=j.length>i?j.slice(0,i):j}catch{}C({status:this.status,responseHeaders:E,responseBodySize:I,responseBody:N,duration:w,ttfb:w})}else{let E="error",I="Network error";this.readyState===0||this.status,this.timeout>0&&w>=this.timeout&&(E="timeout",I=`Request timed out after ${this.timeout}ms`),C({duration:w,errorPhase:E,errorMessage:I})}},{once:!0,signal:s.signal}),l.call(this,p)},()=>{s.abort(),XMLHttpRequest.prototype.open=a,XMLHttpRequest.prototype.setRequestHeader=c,XMLHttpRequest.prototype.send=l}}function Re(e,t){let o={};if(!e)return o;for(let n of e.trim().split(/[\r\n]+/)){let r=n.indexOf(":");if(r===-1)continue;let u=n.slice(0,r).trim().toLowerCase(),i=n.slice(r+1).trim();o[u]=t.has(u)?"[REDACTED]":i}return o}function Ee(e){if(!(!e||typeof e!="string"))try{let t=JSON.parse(e);if(typeof t.query=="string"){let o=t.query.trim(),n="query";o.startsWith("mutation")?n="mutation":o.startsWith("subscription")&&(n="subscription");let r=t.operationName||Se(o)||"anonymous";return{type:n,name:r}}}catch{}}function Se(e){return e.match(/^(?:query|mutation|subscription)\s+(\w+)/)?.[1]}function J(e,t,o,n){let r=[],u=new Map;for(let[i,s]of Object.entries(o)){let a=be(s);if(a==="zustand"){let c=s;B(e,t,n?.beforeSend,{storeId:i,library:a,phase:"init",state:y(c.getState(),4)});let l=c.subscribe((p,d)=>{let h=Y(d,p);B(e,t,n?.beforeSend,{storeId:i,library:a,phase:"update",state:y(p,4),previousState:y(d,4),diff:h?y(h,3):void 0})});r.push(l)}else if(a==="redux"){let c=s;B(e,t,n?.beforeSend,{storeId:i,library:a,phase:"init",state:y(c.getState(),4)});let l,p=c.dispatch.bind(c);u.set(i,p),c.dispatch=g=>(g&&typeof g=="object"&&"type"in g&&(l={type:String(g.type),payload:g.payload}),p(g));let d=c.getState(),h=c.subscribe(()=>{let g=c.getState(),b=Y(d,g);B(e,t,n?.beforeSend,{storeId:i,library:a,phase:"update",state:y(g,4),previousState:y(d,4),diff:b?y(b,3):void 0,action:l?y(l,3):void 0}),d=g,l=void 0});r.push(h)}}return()=>{for(let i of r)i();for(let[i,s]of u){let a=o[i];a&&(a.dispatch=s)}}}function be(e){if(!e||typeof e!="object")return"unknown";let t=e;return typeof t.getState=="function"&&typeof t.setState=="function"&&typeof t.subscribe=="function"?"zustand":typeof t.dispatch=="function"&&typeof t.getState=="function"&&typeof t.subscribe=="function"?"redux":"unknown"}function Y(e,t){if(!e||!t||typeof e!="object"||typeof t!="object")return null;let o={},n=e,r=t,u=new Set([...Object.keys(n),...Object.keys(r)]);for(let i of u)n[i]!==r[i]&&(o[i]={from:n[i],to:r[i]});return Object.keys(o).length>0?o:null}function B(e,t,o,n){let r={eventId:m(),sessionId:t,timestamp:Date.now(),eventType:"state",...n};if(o){let u=o(r);u&&e(u)}else e(r)}var _e={LCP:[2500,4e3],FCP:[1800,3e3],CLS:[.1,.25],TTFB:[800,1800],FID:[100,300],INP:[200,500]};function Te(e,t){let[o,n]=_e[e]??[1/0,1/0];return t<=o?"good":t<=n?"needs-improvement":"poor"}var F=null;function Z(e,t,o){if(F)for(let s of F)try{s.disconnect()}catch{}let n=[];F=n;let r=(s,a,c)=>{let l={eventId:m(),sessionId:t,timestamp:Date.now(),eventType:"performance",metricName:s,value:Math.round(a*100)/100,rating:Te(s,a),element:c};if(o?.beforeSend){let p=o.beforeSend(l);p&&e(p)}else e(l)};x(n,"largest-contentful-paint",s=>{let a=s[s.length-1];if(!a)return;let c=a.element;r("LCP",a.startTime,c?.tagName?.toLowerCase())}),x(n,"paint",s=>{for(let a of s)a.name==="first-contentful-paint"&&r("FCP",a.startTime)});let u=0;x(n,"layout-shift",s=>{for(let a of s){let c=a;!c.hadRecentInput&&c.value&&(u+=c.value,r("CLS",u))}}),x(n,"first-input",s=>{let a=s[0];if(!a)return;let c=a;c.processingStart&&r("FID",c.processingStart-a.startTime)}),x(n,"navigation",s=>{let a=s[0];a&&r("TTFB",a.responseStart-a.requestStart)});let i=0;return x(n,"event",s=>{for(let a of s)a.duration>i&&(i=a.duration,r("INP",i))},{durationThreshold:16}),()=>{for(let s of n)try{s.disconnect()}catch{}F===n&&(F=null)}}function x(e,t,o,n){try{let r=new PerformanceObserver(u=>{o(u.getEntries())});r.observe({type:t,buffered:!0,...n}),e.push(r)}catch{}}var Ie=0,ke=1,ne=1e4,ee=100,Ce=6e4,te=500;function re(e,t,o){let n=new Map,r=o?.snapshotIntervalMs??5e3,u=null,i=Le();if(!i)return()=>{};let s=i.onCommitFiberRoot;return i._runtimescope_original=s,i.onCommitFiberRoot=(a,c)=>{if(s)try{s(a,c)}catch{}c.current&&$(c.current,n)},u=setInterval(()=>{Ae(n,e,t,o?.beforeSend)},r),()=>{u&&(clearInterval(u),u=null),i&&(i._runtimescope_original?i.onCommitFiberRoot=i._runtimescope_original:delete i.onCommitFiberRoot,delete i._runtimescope_original)}}function Le(){if(typeof window>"u")return null;let e=window;return e.__REACT_DEVTOOLS_GLOBAL_HOOK__||(e.__REACT_DEVTOOLS_GLOBAL_HOOK__={}),e.__REACT_DEVTOOLS_GLOBAL_HOOK__}function $(e,t){Oe(e,t),e.child&&$(e.child,t),e.sibling&&$(e.sibling,t)}function Oe(e,t){if(e.tag!==Ie&&e.tag!==ke)return;let o=De(e);if(!o)return;let n=Date.now(),r=e.alternate===null,u=e.actualDuration??0,i=Ne(e,r),s=t.get(o);s||(s={renderCount:0,totalDuration:0,lastRenderTime:0,lastRenderPhase:"mount",lastRenderCause:"unknown",renderTimestamps:[]},t.set(o,s)),s.renderCount++,s.totalDuration+=u,s.lastRenderTime=n,s.lastRenderPhase=r?"mount":"update",s.lastRenderCause=i??"unknown",s.renderTimestamps.push(n),s.renderTimestamps.length>ee&&(s.renderTimestamps=s.renderTimestamps.slice(-ee))}function De(e){if(e.type&&typeof e.type!="string")return e.type.displayName||e.type.name||void 0}function Ne(e,t){return t?"props":e.alternate?e.memoizedProps!==e.alternate.memoizedProps?"props":e.memoizedState!==e.alternate.memoizedState?"state":"parent":"unknown"}function xe(e){if(e.length<2)return 0;let t=Date.now(),o=t-ne,n=e.filter(u=>u>=o);if(n.length<2)return 0;let r=t-n[0];return r===0?0:n.length/(r/1e3)}function Ae(e,t,o,n){if(e.size===0)return;let r=[],u=[],i=0;for(let[c,l]of e){let p=xe(l.renderTimestamps),d=p>4||l.renderCount>20;r.push({componentName:c,renderCount:l.renderCount,totalDuration:Math.round(l.totalDuration*100)/100,avgDuration:l.renderCount>0?Math.round(l.totalDuration/l.renderCount*100)/100:0,lastRenderPhase:l.lastRenderPhase,lastRenderCause:l.lastRenderCause,renderVelocity:Math.round(p*100)/100,suspicious:d}),d&&u.push(c),i+=l.renderCount}r.sort((c,l)=>l.renderCount-c.renderCount);let s={eventId:m(),sessionId:o,timestamp:Date.now(),eventType:"render",profiles:r,snapshotWindowMs:ne,totalRenders:i,suspiciousComponents:u};if(n){let c=n(s);c&&t(c)}else t(s);let a=Date.now();for(let[c,l]of e)a-l.lastRenderTime>Ce?e.delete(c):(l.renderCount=0,l.totalDuration=0);if(e.size>te){let c=[...e.entries()].sort((p,d)=>p[1].lastRenderTime-d[1].lastRenderTime),l=e.size-te;for(let p=0;p<l;p++)e.delete(c[p][0])}}function oe(e,t,o){let n=u=>{let i,s,a;if(u instanceof ErrorEvent)i=u.message||"Uncaught error",s=u.error?.stack,a=u.filename?`${u.filename}:${u.lineno}:${u.colno}`:void 0;else{let l=u.target;if(l&&l!==window){let p=l.tagName?.toLowerCase()??"unknown",d=l.src??l.src??l.href??"unknown";i=`Failed to load resource: <${p}> ${d}`}else return}let c={eventId:m(),sessionId:t,timestamp:Date.now(),eventType:"console",level:"error",message:`[Uncaught] ${i}`,args:[y(i,3)],stackTrace:s,sourceFile:a};if(o){let l=o(c);l&&e(l)}else e(c)},r=u=>{let i=u.reason,s,a;if(i instanceof Error)s=i.message,a=i.stack;else if(typeof i=="string")s=i;else try{s=JSON.stringify(i)}catch{s=String(i)}let c={eventId:m(),sessionId:t,timestamp:Date.now(),eventType:"console",level:"error",message:`[Unhandled Rejection] ${s}`,args:[y(i,3)],stackTrace:a,sourceFile:void 0};if(o){let l=o(c);l&&e(l)}else e(c)};return window.addEventListener("error",n,!0),window.addEventListener("unhandledrejection",r),()=>{window.removeEventListener("error",n,!0),window.removeEventListener("unhandledrejection",r)}}function se(e,t){let o=window.location.href;function n(a,c){let l=o;l!==a&&(o=a,e({eventId:m(),sessionId:t,timestamp:Date.now(),eventType:"navigation",from:l,to:a,trigger:c}))}let r=history.pushState.bind(history),u=history.replaceState.bind(history);history.pushState=function(...a){r(...a),n(window.location.href,"pushState")},history.replaceState=function(...a){u(...a),n(window.location.href,"replaceState")};let i=()=>n(window.location.href,"popstate");window.addEventListener("popstate",i);let s=()=>n(window.location.href,"hashchange");return window.addEventListener("hashchange",s),()=>{history.pushState=r,history.replaceState=u,window.removeEventListener("popstate",i),window.removeEventListener("hashchange",s)}}function ie(e,t){let o=n=>{let r=n.target;if(!(r instanceof Element)||r.closest("[data-runtimescope]"))return;let u=He(r),i=Fe(r),s={eventId:m(),sessionId:t,timestamp:Date.now(),eventType:"ui",action:"click",target:u,...i&&{text:i}};e(s)};return document.addEventListener("click",o,!0),()=>{document.removeEventListener("click",o,!0)}}function He(e){let t=e.tagName.toLowerCase();if(e.id)return`${t}#${e.id}`;let o=e.getAttribute("data-testid")??e.getAttribute("data-test-id");if(o)return`${t}[data-testid="${o}"]`;let n=e.getAttribute("role"),r=e.getAttribute("aria-label");if(n&&r)return`${t}[role="${n}"][aria-label="${r}"]`;let u=e.className;if(typeof u=="string"&&u.trim()){let s=u.split(/\s+/).find(a=>a.length>2&&!a.startsWith("_")&&!a.includes("__"));if(s)return`${t}.${s}`}let i=e.parentElement;if(i){let s=i.children,a=Array.from(s).filter(c=>c.tagName===e.tagName);if(a.length>1){let c=a.indexOf(e)+1;return`${t}:nth-child(${c})`}}return t}function Fe(e){let t=e.getAttribute("aria-label");if(t)return t.slice(0,80);let o=e.innerText??e.textContent;if(!o)return;let n=o.trim().replace(/\s+/g," ");if(n.length!==0)return n.length>80?n.slice(0,77)+"...":n}var q="0.9.2",A=console.debug.bind(console),z=Symbol.for("__runtimescope_originals__");function Me(){let e=globalThis;return e[z]||(e[z]={fetch:window.fetch,xhrOpen:XMLHttpRequest.prototype.open,xhrSend:XMLHttpRequest.prototype.send,xhrSetRequestHeader:XMLHttpRequest.prototype.setRequestHeader,consoleMethods:{log:console.log.bind(console),warn:console.warn.bind(console),error:console.error.bind(console),info:console.info.bind(console),debug:console.debug.bind(console),trace:console.trace.bind(console)}}),e[z]}var T=class{static get sessionId(){return this._sessionId}static get isConnected(){return this._state==="started"}static shouldSample(){if(this._sampleRate<1&&Math.random()>this._sampleRate)return!1;if(this._maxEventsPerSecond!==void 0){let t=Date.now();if(t-this._windowStart>=1e3&&(this._windowCount=0,this._windowStart=t),this._windowCount>=this._maxEventsPerSecond)return!1;this._windowCount++}return!0}static connect(t={}){if(t.enabled===!1)return;if(!!!(t.serverUrl||t.endpoint)&&typeof window<"u"){let s=window.location?.hostname;if(s&&s!=="localhost"&&s!=="127.0.0.1"&&!s.startsWith("192.168.")&&!s.startsWith("10.")){A("[RuntimeScope] No endpoint configured and not on localhost \u2014 SDK disabled for production");return}}this._state==="started"&&(A("[RuntimeScope] Already connected \u2014 disconnecting before re-init"),this.disconnect());let n={serverUrl:t.serverUrl??t.endpoint??"ws://localhost:9090",appName:t.appName??"unknown",captureNetwork:t.captureNetwork??!0,captureConsole:t.captureConsole??!0,captureXhr:t.captureXhr??!0,captureBody:t.captureBody??!1,maxBodySize:t.maxBodySize??65536,capturePerformance:t.capturePerformance??!0,captureRenders:t.captureRenders??!0,captureNavigation:t.captureNavigation??!0,captureClicks:t.captureClicks??!0,stores:t.stores??{},beforeSend:t.beforeSend,redactHeaders:t.redactHeaders??["authorization","cookie"],batchSize:t.batchSize??50,flushIntervalMs:t.flushIntervalMs??100};Me(),this._sessionId=U(),this._state="started",this.transport=new M({serverUrl:n.serverUrl,appName:n.appName,sessionId:this._sessionId,sdkVersion:q,authToken:t.authToken,projectId:t.projectId,batchSize:n.batchSize,flushIntervalMs:n.flushIntervalMs}),this._sampleRate=t.sampleRate??1,this._maxEventsPerSecond=t.maxEventsPerSecond,this._windowCount=0,this._windowStart=Date.now(),this._user=t.user,this.transport.connect(),A(`[RuntimeScope] SDK v${q} initializing \u2014 app: ${n.appName}, server: ${n.serverUrl}`);let r=s=>{s.eventType!=="session"&&s.eventType!=="custom"&&s.eventType!=="ui"&&!this.shouldSample()||this.transport?.send(s)};r({eventId:m(),sessionId:this._sessionId,timestamp:Date.now(),eventType:"session",appName:n.appName,connectedAt:Date.now(),sdkVersion:q,buildMeta:t.buildMeta,user:this._user,projectId:t.projectId});let u=this._sessionId;this.transport.onCommand(s=>{this.handleCommand(s,r,u)}),n.captureNetwork&&this.restoreFns.push(X(r,this._sessionId,n.redactHeaders,{captureBody:n.captureBody,maxBodySize:n.maxBodySize,beforeSend:n.beforeSend})),n.captureXhr&&this.restoreFns.push(K(r,this._sessionId,n.redactHeaders,{captureBody:n.captureBody,maxBodySize:n.maxBodySize,beforeSend:n.beforeSend})),n.captureConsole&&this.restoreFns.push(Q(r,this._sessionId,n.beforeSend)),t.captureErrors!==!1&&this.restoreFns.push(oe(r,this._sessionId,n.beforeSend)),Object.keys(n.stores).length>0&&this.restoreFns.push(J(r,this._sessionId,n.stores,{beforeSend:n.beforeSend})),n.capturePerformance&&this.restoreFns.push(Z(r,this._sessionId,{beforeSend:n.beforeSend})),n.captureRenders&&this.restoreFns.push(re(r,this._sessionId,{beforeSend:n.beforeSend})),n.captureNavigation&&this.restoreFns.push(se(r,this._sessionId)),n.captureClicks&&this.restoreFns.push(ie(r,this._sessionId));let i=[n.captureNetwork&&"fetch",n.captureXhr&&"xhr",n.captureConsole&&"console, errors",Object.keys(n.stores).length>0&&"state",n.capturePerformance&&"performance",n.captureRenders&&"renders",n.captureNavigation&&"navigation",n.captureClicks&&"clicks"].filter(Boolean);A(`[RuntimeScope] Interceptors active \u2014 ${i.join(", ")}`),this._sampleRate<1&&A(`[RuntimeScope] Sampling at ${(this._sampleRate*100).toFixed(0)}%`),this._maxEventsPerSecond!==void 0&&A(`[RuntimeScope] Rate limited to ${this._maxEventsPerSecond} events/sec`)}static handleCommand(t,o,n){if(t.command==="capture_dom_snapshot"){let r=t.params?.maxSize??5e5,u=document.documentElement.outerHTML,i=u.length>r;i&&(u=u.slice(0,r));let s={eventId:m(),sessionId:n,timestamp:Date.now(),eventType:"dom_snapshot",html:u,url:window.location.href,viewport:{width:window.innerWidth,height:window.innerHeight},scrollPosition:{x:window.scrollX,y:window.scrollY},elementCount:document.querySelectorAll("*").length,truncated:i};o(s),this.transport?.sendCommandResponse(t.requestId,t.command,s)}else this.transport?.sendCommandResponse(t.requestId,t.command,{error:"Unknown command"})}static init(t={}){return this.connect(t)}static track(t,o){if(!this.transport||!this._sessionId)return;let n={eventId:m(),sessionId:this._sessionId,timestamp:Date.now(),eventType:"custom",name:t,properties:o};this.transport.send(n)}static setUser(t){this._user=t??void 0,this.transport&&this._sessionId&&this.transport.send({eventId:m(),sessionId:this._sessionId,timestamp:Date.now(),eventType:"session",appName:"user_update",connectedAt:Date.now(),sdkVersion:q,user:this._user})}static addBreadcrumb(t,o){if(!this.transport||!this._sessionId)return;let n={eventId:m(),sessionId:this._sessionId,timestamp:Date.now(),eventType:"ui",action:"breadcrumb",target:"manual",text:t,...o&&{data:o}};this.transport.send(n)}static disconnect(){for(let o of this.restoreFns)try{o()}catch{}this.restoreFns=[];let t=globalThis[z];if(t){window.fetch!==t.fetch&&(window.fetch=t.fetch);for(let[o,n]of Object.entries(t.consoleMethods)){let r=console;r[o]!==n&&(r[o]=n)}}this.transport?.disconnect(),this.transport=null,this._sessionId=null,this._state="stopped"}};f(T,"transport",null),f(T,"restoreFns",[]),f(T,"_sessionId",null),f(T,"_state","stopped"),f(T,"_sampleRate",1),f(T,"_maxEventsPerSecond"),f(T,"_windowCount",0),f(T,"_windowStart",0),f(T,"_user");var St=T;export{T as RuntimeScope,St as default};
6
+ `),sourceFile:G(g),source:"browser"})}a(d,...h)});let i=console.time?.bind(console),o=console.timeEnd?.bind(console);i&&(console.time=(d="default")=>{n.set(d,performance.now()),i(d)}),o&&(console.timeEnd=(d="default")=>{let h=n.get(d);if(h!==void 0){let g=performance.now()-h;n.delete(d),t({eventId:m(),sessionId:e,timestamp:Date.now(),eventType:"console",level:"info",message:`${d}: ${g.toFixed(2)}ms`,args:[{label:d,duration:g}],source:"browser"})}o(d)});let u=console.count?.bind(console),p=console.countReset?.bind(console);u&&(console.count=(d="default")=>{let h=(c.get(d)??0)+1;c.set(d,h),t({eventId:m(),sessionId:e,timestamp:Date.now(),eventType:"console",level:"info",message:`${d}: ${h}`,args:[{label:d,count:h}],source:"browser"}),u(d)}),p&&(console.countReset=(d="default")=>{c.delete(d),p(d)});let l=console.table?.bind(console);return l&&(console.table=(d,h)=>{t({eventId:m(),sessionId:e,timestamp:Date.now(),eventType:"console",level:"info",message:`[table] ${Array.isArray(d)?`${d.length} rows`:typeof d}`,args:[y(d,3)],source:"browser"}),l(d,h)}),()=>{for(let d of V)console[d]=s[d];a&&(console.assert=a),i&&(console.time=i),o&&(console.timeEnd=o),u&&(console.count=u),p&&(console.countReset=p),l&&(console.table=l)}}function Q(t){try{return JSON.stringify(t)}catch{return String(t)}}function Y(t,e,r,s){let n=new Set(r.map(l=>l.toLowerCase())),c=s?.captureBody??!1,a=s?.maxBodySize??65536,i=new AbortController,o=XMLHttpRequest.prototype.open,u=XMLHttpRequest.prototype.setRequestHeader,p=XMLHttpRequest.prototype.send;return XMLHttpRequest.prototype.open=function(l,d){return this.__rs_method=l.toUpperCase(),this.__rs_url=typeof d=="string"?d:d.href,this.__rs_headers={},o.apply(this,arguments)},XMLHttpRequest.prototype.setRequestHeader=function(l,d){return this.__rs_headers&&(this.__rs_headers[l.toLowerCase()]=n.has(l.toLowerCase())?"[REDACTED]":d),u.call(this,l,d)},XMLHttpRequest.prototype.send=function(l){let d=this.__rs_method??"GET",h=this.__rs_url??"",g=`${d}:${h}`,b=!1;for(let w of L.keys())if(w.startsWith(g)){b=!0;break}if(b)return this.__rs_fetchIntercepted=!0,p.call(this,l);let E={...this.__rs_headers??{}},_=performance.now(),v,k=0;if(l){if(typeof l=="string")k=new Blob([l]).size,c&&(v=l.length>a?l.slice(0,a):l);else if(l instanceof Blob)k=l.size,c&&(v=`[Blob ${l.size} bytes]`);else if(l instanceof ArrayBuffer)k=l.byteLength,c&&(v=`[ArrayBuffer ${l.byteLength} bytes]`);else if(l instanceof FormData)c&&(v="[FormData]");else if(l instanceof URLSearchParams){let w=l.toString();k=new Blob([w]).size,c&&(v=w.length>a?w.slice(0,a):w)}}let x=Se(l),C=w=>{let R={eventId:m(),sessionId:e,timestamp:Date.now(),eventType:"network",url:h,method:d,status:0,requestHeaders:E,responseHeaders:{},requestBodySize:k,responseBodySize:0,duration:0,ttfb:0,graphqlOperation:x,requestBody:v,source:"xhr",...w};if(s?.beforeSend){let I=s.beforeSend(R);I&&t(I)}else t(R)};return this.addEventListener("loadend",()=>{let w=performance.now()-_;if(this.status>0){let R=Re(this.getAllResponseHeaders(),n),I=parseInt(this.getResponseHeader("content-length")||"0",10),O;if(c&&(this.responseType===""||this.responseType==="text"))try{let q=this.responseText;O=q.length>a?q.slice(0,a):q}catch{}C({status:this.status,responseHeaders:R,responseBodySize:I,responseBody:O,duration:w,ttfb:w})}else{let R="error",I="Network error";this.readyState===0||this.status,this.timeout>0&&w>=this.timeout&&(R="timeout",I=`Request timed out after ${this.timeout}ms`),C({duration:w,errorPhase:R,errorMessage:I})}},{once:!0,signal:i.signal}),p.call(this,l)},()=>{i.abort(),XMLHttpRequest.prototype.open=o,XMLHttpRequest.prototype.setRequestHeader=u,XMLHttpRequest.prototype.send=p}}function Re(t,e){let r={};if(!t)return r;for(let s of t.trim().split(/[\r\n]+/)){let n=s.indexOf(":");if(n===-1)continue;let c=s.slice(0,n).trim().toLowerCase(),a=s.slice(n+1).trim();r[c]=e.has(c)?"[REDACTED]":a}return r}function Se(t){if(!(!t||typeof t!="string"))try{let e=JSON.parse(t);if(typeof e.query=="string"){let r=e.query.trim(),s="query";r.startsWith("mutation")?s="mutation":r.startsWith("subscription")&&(s="subscription");let n=e.operationName||be(r)||"anonymous";return{type:s,name:n}}}catch{}}function be(t){return t.match(/^(?:query|mutation|subscription)\s+(\w+)/)?.[1]}function Z(t,e,r,s){let n=[],c=new Map;for(let[a,i]of Object.entries(r)){let o=_e(i);if(o==="zustand"){let u=i;B(t,e,s?.beforeSend,{storeId:a,library:o,phase:"init",state:y(u.getState(),4)});let p=u.subscribe((l,d)=>{let h=J(d,l);B(t,e,s?.beforeSend,{storeId:a,library:o,phase:"update",state:y(l,4),previousState:y(d,4),diff:h?y(h,3):void 0})});n.push(p)}else if(o==="redux"){let u=i;B(t,e,s?.beforeSend,{storeId:a,library:o,phase:"init",state:y(u.getState(),4)});let p,l=u.dispatch.bind(u);c.set(a,l),u.dispatch=g=>(g&&typeof g=="object"&&"type"in g&&(p={type:String(g.type),payload:g.payload}),l(g));let d=u.getState(),h=u.subscribe(()=>{let g=u.getState(),b=J(d,g);B(t,e,s?.beforeSend,{storeId:a,library:o,phase:"update",state:y(g,4),previousState:y(d,4),diff:b?y(b,3):void 0,action:p?y(p,3):void 0}),d=g,p=void 0});n.push(h)}}return()=>{for(let a of n)a();for(let[a,i]of c){let o=r[a];o&&(o.dispatch=i)}}}function _e(t){if(!t||typeof t!="object")return"unknown";let e=t;return typeof e.getState=="function"&&typeof e.setState=="function"&&typeof e.subscribe=="function"?"zustand":typeof e.dispatch=="function"&&typeof e.getState=="function"&&typeof e.subscribe=="function"?"redux":"unknown"}function J(t,e){if(!t||!e||typeof t!="object"||typeof e!="object")return null;let r={},s=t,n=e,c=new Set([...Object.keys(s),...Object.keys(n)]);for(let a of c)s[a]!==n[a]&&(r[a]={from:s[a],to:n[a]});return Object.keys(r).length>0?r:null}function B(t,e,r,s){let n={eventId:m(),sessionId:e,timestamp:Date.now(),eventType:"state",...s};if(r){let c=r(n);c&&t(c)}else t(n)}var Te={LCP:[2500,4e3],FCP:[1800,3e3],CLS:[.1,.25],TTFB:[800,1800],FID:[100,300],INP:[200,500]};function Ie(t,e){let[r,s]=Te[t]??[1/0,1/0];return e<=r?"good":e<=s?"needs-improvement":"poor"}var F=null;function ee(t,e,r){if(F)for(let i of F)try{i.disconnect()}catch{}let s=[];F=s;let n=(i,o,u)=>{let p={eventId:m(),sessionId:e,timestamp:Date.now(),eventType:"performance",metricName:i,value:Math.round(o*100)/100,rating:Ie(i,o),element:u};if(r?.beforeSend){let l=r.beforeSend(p);l&&t(l)}else t(p)};A(s,"largest-contentful-paint",i=>{let o=i[i.length-1];if(!o)return;let u=o.element;n("LCP",o.startTime,u?.tagName?.toLowerCase())}),A(s,"paint",i=>{for(let o of i)o.name==="first-contentful-paint"&&n("FCP",o.startTime)});let c=0;A(s,"layout-shift",i=>{for(let o of i){let u=o;!u.hadRecentInput&&u.value&&(c+=u.value,n("CLS",c))}}),A(s,"first-input",i=>{let o=i[0];if(!o)return;let u=o;u.processingStart&&n("FID",u.processingStart-o.startTime)}),A(s,"navigation",i=>{let o=i[0];o&&n("TTFB",o.responseStart-o.requestStart)});let a=0;return A(s,"event",i=>{for(let o of i)o.duration>a&&(a=o.duration,n("INP",a))},{durationThreshold:16}),()=>{for(let i of s)try{i.disconnect()}catch{}F===s&&(F=null)}}function A(t,e,r,s){try{let n=new PerformanceObserver(c=>{r(c.getEntries())});n.observe({type:e,buffered:!0,...s}),t.push(n)}catch{}}var ke=0,Ce=1,re=1e4,te=100,Le=6e4,ne=500;function se(t,e,r){let s=new Map,n=r?.snapshotIntervalMs??5e3,c=null,a=De();if(!a)return()=>{};let i=a.onCommitFiberRoot;return a._runtimescope_original=i,a.onCommitFiberRoot=(o,u)=>{if(i)try{i(o,u)}catch{}u.current&&z(u.current,s)},c=setInterval(()=>{He(s,t,e,r?.beforeSend)},n),()=>{c&&(clearInterval(c),c=null),a&&(a._runtimescope_original?a.onCommitFiberRoot=a._runtimescope_original:delete a.onCommitFiberRoot,delete a._runtimescope_original)}}function De(){if(typeof window>"u")return null;let t=window;return t.__REACT_DEVTOOLS_GLOBAL_HOOK__||(t.__REACT_DEVTOOLS_GLOBAL_HOOK__={}),t.__REACT_DEVTOOLS_GLOBAL_HOOK__}function z(t,e){Ne(t,e),t.child&&z(t.child,e),t.sibling&&z(t.sibling,e)}function Ne(t,e){if(t.tag!==ke&&t.tag!==Ce)return;let r=xe(t);if(!r)return;let s=Date.now(),n=t.alternate===null,c=t.actualDuration??0,a=Oe(t,n),i=e.get(r);i||(i={renderCount:0,totalDuration:0,lastRenderTime:0,lastRenderPhase:"mount",lastRenderCause:"unknown",renderTimestamps:[]},e.set(r,i)),i.renderCount++,i.totalDuration+=c,i.lastRenderTime=s,i.lastRenderPhase=n?"mount":"update",i.lastRenderCause=a??"unknown",i.renderTimestamps.push(s),i.renderTimestamps.length>te&&(i.renderTimestamps=i.renderTimestamps.slice(-te))}function xe(t){if(t.type&&typeof t.type!="string")return t.type.displayName||t.type.name||void 0}function Oe(t,e){return e?"props":t.alternate?t.memoizedProps!==t.alternate.memoizedProps?"props":t.memoizedState!==t.alternate.memoizedState?"state":"parent":"unknown"}function Ae(t){if(t.length<2)return 0;let e=Date.now(),r=e-re,s=t.filter(c=>c>=r);if(s.length<2)return 0;let n=e-s[0];return n===0?0:s.length/(n/1e3)}function He(t,e,r,s){if(t.size===0)return;let n=[],c=[],a=0;for(let[u,p]of t){let l=Ae(p.renderTimestamps),d=l>4||p.renderCount>20;n.push({componentName:u,renderCount:p.renderCount,totalDuration:Math.round(p.totalDuration*100)/100,avgDuration:p.renderCount>0?Math.round(p.totalDuration/p.renderCount*100)/100:0,lastRenderPhase:p.lastRenderPhase,lastRenderCause:p.lastRenderCause,renderVelocity:Math.round(l*100)/100,suspicious:d}),d&&c.push(u),a+=p.renderCount}n.sort((u,p)=>p.renderCount-u.renderCount);let i={eventId:m(),sessionId:r,timestamp:Date.now(),eventType:"render",profiles:n,snapshotWindowMs:re,totalRenders:a,suspiciousComponents:c};if(s){let u=s(i);u&&e(u)}else e(i);let o=Date.now();for(let[u,p]of t)o-p.lastRenderTime>Le?t.delete(u):(p.renderCount=0,p.totalDuration=0);if(t.size>ne){let u=[...t.entries()].sort((l,d)=>l[1].lastRenderTime-d[1].lastRenderTime),p=t.size-ne;for(let l=0;l<p;l++)t.delete(u[l][0])}}function oe(t,e,r){let s=c=>{let a,i,o;if(c instanceof ErrorEvent)a=c.message||"Uncaught error",i=c.error?.stack,o=c.filename?`${c.filename}:${c.lineno}:${c.colno}`:void 0;else{let p=c.target;if(p&&p!==window){let l=p.tagName?.toLowerCase()??"unknown",d=p.src??p.src??p.href??"unknown";a=`Failed to load resource: <${l}> ${d}`}else return}let u={eventId:m(),sessionId:e,timestamp:Date.now(),eventType:"console",level:"error",message:`[Uncaught] ${a}`,args:[y(a,3)],stackTrace:i,sourceFile:o};if(r){let p=r(u);p&&t(p)}else t(u)},n=c=>{let a=c.reason,i,o;if(a instanceof Error)i=a.message,o=a.stack;else if(typeof a=="string")i=a;else try{i=JSON.stringify(a)}catch{i=String(a)}let u={eventId:m(),sessionId:e,timestamp:Date.now(),eventType:"console",level:"error",message:`[Unhandled Rejection] ${i}`,args:[y(a,3)],stackTrace:o,sourceFile:void 0};if(r){let p=r(u);p&&t(p)}else t(u)};return window.addEventListener("error",s,!0),window.addEventListener("unhandledrejection",n),()=>{window.removeEventListener("error",s,!0),window.removeEventListener("unhandledrejection",n)}}function ie(t,e){let r=window.location.href;function s(o,u){let p=r;p!==o&&(r=o,t({eventId:m(),sessionId:e,timestamp:Date.now(),eventType:"navigation",from:p,to:o,trigger:u}))}let n=history.pushState.bind(history),c=history.replaceState.bind(history);history.pushState=function(...o){n(...o),s(window.location.href,"pushState")},history.replaceState=function(...o){c(...o),s(window.location.href,"replaceState")};let a=()=>s(window.location.href,"popstate");window.addEventListener("popstate",a);let i=()=>s(window.location.href,"hashchange");return window.addEventListener("hashchange",i),()=>{history.pushState=n,history.replaceState=c,window.removeEventListener("popstate",a),window.removeEventListener("hashchange",i)}}function ae(t,e){let r=s=>{let n=s.target;if(!(n instanceof Element)||n.closest("[data-runtimescope]"))return;let c=Fe(n),a=Me(n),i={eventId:m(),sessionId:e,timestamp:Date.now(),eventType:"ui",action:"click",target:c,...a&&{text:a}};t(i)};return document.addEventListener("click",r,!0),()=>{document.removeEventListener("click",r,!0)}}function Fe(t){let e=t.tagName.toLowerCase();if(t.id)return`${e}#${t.id}`;let r=t.getAttribute("data-testid")??t.getAttribute("data-test-id");if(r)return`${e}[data-testid="${r}"]`;let s=t.getAttribute("role"),n=t.getAttribute("aria-label");if(s&&n)return`${e}[role="${s}"][aria-label="${n}"]`;let c=t.className;if(typeof c=="string"&&c.trim()){let i=c.split(/\s+/).find(o=>o.length>2&&!o.startsWith("_")&&!o.includes("__"));if(i)return`${e}.${i}`}let a=t.parentElement;if(a){let i=a.children,o=Array.from(i).filter(u=>u.tagName===t.tagName);if(o.length>1){let u=o.indexOf(t)+1;return`${e}:nth-child(${u})`}}return e}function Me(t){let e=t.getAttribute("aria-label");if(e)return e.slice(0,80);let r=t.innerText??t.textContent;if(!r)return;let s=r.trim().replace(/\s+/g," ");if(s.length!==0)return s.length>80?s.slice(0,77)+"...":s}function U(t){let e=t.startsWith("runtimescopes://");if(!t.startsWith("runtimescope://")&&!e)throw new Error("Invalid RuntimeScope DSN: must start with runtimescope:// or runtimescopes://");let r=new URL(t.replace(/^runtimescopes?:\/\//,"http://")),s=r.username;if(!s||!s.startsWith("proj_"))throw new Error("Invalid RuntimeScope DSN: missing projectId (expected proj_xxx@host)");let n=r.hostname,c=r.port?parseInt(r.port):9091,a=c-1,i=r.pathname.replace(/^\//,"")||void 0,o=e?"wss":"ws",u=e?"https":"http";return{projectId:s,wsEndpoint:`${o}://${n}:${a}`,httpEndpoint:`${u}://${n}:${c}`,appName:i,tls:e}}function Pe(t){let e=t.tls?"runtimescopes":"runtimescope",r=t.host??"localhost",s=t.port??9091,n=t.appName?`/${t.appName}`:"";return`${e}://${t.projectId}@${r}:${s}${n}`}var j="0.9.3",N=console.debug.bind(console),$=Symbol.for("__runtimescope_originals__");function Be(){let t=globalThis;return t[$]||(t[$]={fetch:window.fetch,xhrOpen:XMLHttpRequest.prototype.open,xhrSend:XMLHttpRequest.prototype.send,xhrSetRequestHeader:XMLHttpRequest.prototype.setRequestHeader,consoleMethods:{log:console.log.bind(console),warn:console.warn.bind(console),error:console.error.bind(console),info:console.info.bind(console),debug:console.debug.bind(console),trace:console.trace.bind(console)}}),t[$]}var T=class{static get sessionId(){return this._sessionId}static get isConnected(){return this._state==="started"}static shouldSample(){if(this._sampleRate<1&&Math.random()>this._sampleRate)return!1;if(this._maxEventsPerSecond!==void 0){let e=Date.now();if(e-this._windowStart>=1e3&&(this._windowCount=0,this._windowStart=e),this._windowCount>=this._maxEventsPerSecond)return!1;this._windowCount++}return!0}static connect(e={}){if(e.enabled===!1)return;let r=!1;if(e.dsn)try{let o=U(e.dsn);e={...e,serverUrl:o.wsEndpoint,projectId:o.projectId,...o.appName&&!e.appName?{appName:o.appName}:{}},r=!0}catch(o){N("[RuntimeScope] Invalid DSN:",o.message)}if(!(!!(e.serverUrl||e.endpoint)||r)&&typeof window<"u"){let o=window.location?.hostname;if(o&&o!=="localhost"&&o!=="127.0.0.1"&&!o.startsWith("192.168.")&&!o.startsWith("10.")){N("[RuntimeScope] No endpoint configured and not on localhost \u2014 SDK disabled for production");return}}this._state==="started"&&(N("[RuntimeScope] Already connected \u2014 disconnecting before re-init"),this.disconnect());let n={serverUrl:e.serverUrl??e.endpoint??"ws://localhost:9090",appName:e.appName??"unknown",captureNetwork:e.captureNetwork??!0,captureConsole:e.captureConsole??!0,captureXhr:e.captureXhr??!0,captureBody:e.captureBody??!1,maxBodySize:e.maxBodySize??65536,capturePerformance:e.capturePerformance??!0,captureRenders:e.captureRenders??!0,captureNavigation:e.captureNavigation??!0,captureClicks:e.captureClicks??!0,stores:e.stores??{},beforeSend:e.beforeSend,redactHeaders:e.redactHeaders??["authorization","cookie"],batchSize:e.batchSize??50,flushIntervalMs:e.flushIntervalMs??100};Be(),this._sessionId=X(),this._state="started",this.transport=new M({serverUrl:n.serverUrl,appName:n.appName,sessionId:this._sessionId,sdkVersion:j,authToken:e.authToken,projectId:e.projectId,batchSize:n.batchSize,flushIntervalMs:n.flushIntervalMs}),this._sampleRate=e.sampleRate??1,this._maxEventsPerSecond=e.maxEventsPerSecond,this._windowCount=0,this._windowStart=Date.now(),this._user=e.user,this.transport.connect(),N(`[RuntimeScope] SDK v${j} initializing \u2014 app: ${n.appName}, server: ${n.serverUrl}`);let c=o=>{o.eventType!=="session"&&o.eventType!=="custom"&&o.eventType!=="ui"&&!this.shouldSample()||this.transport?.send(o)};c({eventId:m(),sessionId:this._sessionId,timestamp:Date.now(),eventType:"session",appName:n.appName,connectedAt:Date.now(),sdkVersion:j,buildMeta:e.buildMeta,user:this._user,projectId:e.projectId});let a=this._sessionId;this.transport.onCommand(o=>{this.handleCommand(o,c,a)}),n.captureNetwork&&this.restoreFns.push(W(c,this._sessionId,n.redactHeaders,{captureBody:n.captureBody,maxBodySize:n.maxBodySize,beforeSend:n.beforeSend})),n.captureXhr&&this.restoreFns.push(Y(c,this._sessionId,n.redactHeaders,{captureBody:n.captureBody,maxBodySize:n.maxBodySize,beforeSend:n.beforeSend})),n.captureConsole&&this.restoreFns.push(K(c,this._sessionId,n.beforeSend)),e.captureErrors!==!1&&this.restoreFns.push(oe(c,this._sessionId,n.beforeSend)),Object.keys(n.stores).length>0&&this.restoreFns.push(Z(c,this._sessionId,n.stores,{beforeSend:n.beforeSend})),n.capturePerformance&&this.restoreFns.push(ee(c,this._sessionId,{beforeSend:n.beforeSend})),n.captureRenders&&this.restoreFns.push(se(c,this._sessionId,{beforeSend:n.beforeSend})),n.captureNavigation&&this.restoreFns.push(ie(c,this._sessionId)),n.captureClicks&&this.restoreFns.push(ae(c,this._sessionId));let i=[n.captureNetwork&&"fetch",n.captureXhr&&"xhr",n.captureConsole&&"console, errors",Object.keys(n.stores).length>0&&"state",n.capturePerformance&&"performance",n.captureRenders&&"renders",n.captureNavigation&&"navigation",n.captureClicks&&"clicks"].filter(Boolean);N(`[RuntimeScope] Interceptors active \u2014 ${i.join(", ")}`),this._sampleRate<1&&N(`[RuntimeScope] Sampling at ${(this._sampleRate*100).toFixed(0)}%`),this._maxEventsPerSecond!==void 0&&N(`[RuntimeScope] Rate limited to ${this._maxEventsPerSecond} events/sec`)}static handleCommand(e,r,s){if(e.command==="capture_dom_snapshot"){let n=e.params?.maxSize??5e5,c=document.documentElement.outerHTML,a=c.length>n;a&&(c=c.slice(0,n));let i={eventId:m(),sessionId:s,timestamp:Date.now(),eventType:"dom_snapshot",html:c,url:window.location.href,viewport:{width:window.innerWidth,height:window.innerHeight},scrollPosition:{x:window.scrollX,y:window.scrollY},elementCount:document.querySelectorAll("*").length,truncated:a};r(i),this.transport?.sendCommandResponse(e.requestId,e.command,i)}else this.transport?.sendCommandResponse(e.requestId,e.command,{error:"Unknown command"})}static init(e={}){return this.connect(e)}static track(e,r){if(!this.transport||!this._sessionId)return;let s={eventId:m(),sessionId:this._sessionId,timestamp:Date.now(),eventType:"custom",name:e,properties:r};this.transport.send(s)}static setUser(e){this._user=e??void 0,this.transport&&this._sessionId&&this.transport.send({eventId:m(),sessionId:this._sessionId,timestamp:Date.now(),eventType:"session",appName:"user_update",connectedAt:Date.now(),sdkVersion:j,user:this._user})}static addBreadcrumb(e,r){if(!this.transport||!this._sessionId)return;let s={eventId:m(),sessionId:this._sessionId,timestamp:Date.now(),eventType:"ui",action:"breadcrumb",target:"manual",text:e,...r&&{data:r}};this.transport.send(s)}static disconnect(){for(let r of this.restoreFns)try{r()}catch{}this.restoreFns=[];let e=globalThis[$];if(e){window.fetch!==e.fetch&&(window.fetch=e.fetch);for(let[r,s]of Object.entries(e.consoleMethods)){let n=console;n[r]!==s&&(n[r]=s)}}this.transport?.disconnect(),this.transport=null,this._sessionId=null,this._state="stopped"}};f(T,"transport",null),f(T,"restoreFns",[]),f(T,"_sessionId",null),f(T,"_state","stopped"),f(T,"_sampleRate",1),f(T,"_maxEventsPerSecond"),f(T,"_windowCount",0),f(T,"_windowStart",0),f(T,"_user");var It=T;export{T as RuntimeScope,Pe as buildDsn,It as default,U as parseDsn};
7
7
  if(typeof RuntimeScope!=="undefined"&&RuntimeScope.RuntimeScope){RuntimeScope=RuntimeScope.RuntimeScope;}
8
8
  //# sourceMappingURL=index.js.map