scout-error 0.3.2 → 0.3.4

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/react.js CHANGED
@@ -1,5 +1,5 @@
1
- var H=Object.defineProperty,W=Object.defineProperties;var X=Object.getOwnPropertyDescriptors;var x=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var I=(e,n,t)=>n in e?H(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,l=(e,n)=>{for(var t in n||(n={}))B.call(n,t)&&I(e,t,n[t]);if(x)for(var t of x(n))j.call(n,t)&&I(e,t,n[t]);return e},U=(e,n)=>W(e,X(n));var w=(e,n,t)=>new Promise((s,i)=>{var r=c=>{try{u(t.next(c))}catch(f){i(f)}},o=c=>{try{u(t.throw(c))}catch(f){i(f)}},u=c=>c.done?s(c.value):Promise.resolve(c.value).then(r,o);u((t=t.apply(e,n)).next())});import te from"react";var V={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},a=l({},V),O,g={environment:typeof window!="undefined"&&((O=window.location)==null?void 0:O.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.3.2",project:null,release:null,version:null,app:null},k={clicks:0,scrolls:0},M=null,D=!1,_=null,h={},E=[],q=30;var S=console.warn;var P=console.log;function C(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function z(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",C("user")),localStorage.getItem("__scoutUserId")),n=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",C("session")),sessionStorage.getItem("__scoutSessionId"));return M=M||C("pageload"),{pageloadId:M,userId:e,sessionId:n}}function J(){var t,s,i;if((s=(t=window._uaParserResult)==null?void 0:t.browser)!=null&&s.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((i=[{p:/Chrome.*Mobile/,n:"Chrome Mobile"},{p:/Chrome/,n:"Chrome"},{p:/Firefox.*Mobile/,n:"Firefox Mobile"},{p:/Firefox/,n:"Firefox"},{p:/Safari.*Mobile/,n:"Safari Mobile"},{p:/Safari/,n:"Safari"},{p:/MSIE|Trident/,n:"Internet Explorer"},{p:/Edge/,n:"Edge"}].find(r=>e.match(r.p)))==null?void 0:i.n)||"Unknown"}function G(){var t,s,i;if((s=(t=window._uaParserResult)==null?void 0:t.os)!=null&&s.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((i=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(r=>e.match(r.p)))==null?void 0:i.n)||"Unknown"}function K(){var n,t,s,i,r,o,u,c,f,d;let e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:e?e.effectiveType:"unknown",userAgent:navigator.userAgent,width:window.innerWidth,height:window.innerHeight,screenWidth:screen.width,screenHeight:screen.height,errorTimestamp:Date.now(),timeLocale:Intl.DateTimeFormat().resolvedOptions().timeZone,browserLocale:navigator.language||navigator.userLanguage,sessionTime:Math.round(performance.now()/1e3),deviceMemory:navigator.deviceMemory||"unknown",timezoneOffset:new Date().getTimezoneOffset(),cookiesEnabled:navigator.cookieEnabled,url:window.location.href,host:window.location.host,referrer:document.referrer,browser:J(),browserVersion:((t=(n=window._uaParserResult)==null?void 0:n.browser)==null?void 0:t.version)||null,os:G(),osVersion:((i=(s=window._uaParserResult)==null?void 0:s.os)==null?void 0:i.version)||null,deviceType:((o=(r=window._uaParserResult)==null?void 0:r.device)==null?void 0:o.type)||null,deviceModel:((c=(u=window._uaParserResult)==null?void 0:u.device)==null?void 0:c.model)||null,deviceVendor:((d=(f=window._uaParserResult)==null?void 0:f.device)==null?void 0:d.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:k.clicks,userScrolls:k.scrolls}}function v(e){return!a.ignoreErrors||!Array.isArray(a.ignoreErrors)?!1:a.ignoreErrors.some(n=>typeof n=="string"?e.includes(n):n instanceof RegExp?n.test(e):!1)}function A(e,n){let t=new AbortController,s=setTimeout(()=>t.abort(),5e3),i={"Content-Type":"application/json"};return a.token&&(i["X-Ingest-Token"]=a.token),fetch(e,{method:"POST",headers:i,body:JSON.stringify(n),signal:t.signal}).then(r=>(clearTimeout(s),r)).catch(()=>{clearTimeout(s)})}function y(e){let n=(e[0]||"")+"",t=[...e];return n.replace(/%[sdj]/g,s=>{let i=t.shift();return s==="%s"?String(i):s==="%d"?Number(i):s==="%j"?JSON.stringify(i):s})}function N(e,n){let t=document.createElement("script");t.src=e,t.async=!0,n&&(t.onload=n),document.head.appendChild(t)}function Z(e,n,t){return w(this,null,function*(){var s;try{let i=yield fetch(e);if(!i.ok)return null;let r=yield i.text(),o=r.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),u=r.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(o)c=JSON.parse(atob(o[1]));else if(u){let F=new URL(u[1],e).href,T=yield fetch(F);if(!T.ok)return null;c=yield T.json()}else return null;if(!((s=window.sourceMap)!=null&&s.SourceMapConsumer))return null;let d=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:n,column:t});if(!d.source)return null;let b=c.sources.indexOf(d.source),L=null;return c.sourcesContent&&c.sourcesContent[b]&&(L=c.sourcesContent[b]),{originalSource:d.source,originalLine:d.line,originalColumn:d.column,originalName:d.name,snippet:L}}catch(i){return null}})}function p(e){E.push(l({timestamp:Date.now()},e)),E.length>q&&E.shift()}function m(e){return w(this,null,function*(){let n=a.browserDetails?K():{},t=Object.assign(e,n,g,z());if(_&&(t.user=_),Object.keys(h).length&&(t.context=l({},h)),t.breadcrumbs=E.slice(),a.sampleRate&&Math.random()<1-parseFloat(a.sampleRate)){a.debug&&P("[Scout] Suppressed by sampling");return}if(a.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let s=e.errorTrace.split(`
2
- `),i=[s[0]];for(let r=1;r<s.length;r++)!s[r].includes("/scout")&&!s[r].includes("scout.js")&&!s[r].includes("scout-error")&&i.push(s[r]);i.length>1&&(e.errorTrace=i.join(`
3
- `))}catch(s){}if((e.errorTrace||e.stack)&&!e.source)try{let s=e.errorTrace||e.stack,i=s?s.split(`
4
- `):[];for(let r=1;r<i.length;r++){let o=i[r].trim().match(/(http.*?):(\d+):(\d+)/);if(o){e.source=o[1],e.lineno=parseInt(o[2],10),e.colno=parseInt(o[3],10);break}}}catch(s){}if(a.debug&&P("[Scout] Sending:",t),a.endpoint&&A(a.endpoint,t),a.handleSourceMaps&&e.source&&e.lineno)try{let s=yield Z(e.source,e.lineno,e.colno||0);if(s){let i=U(l({},t),{originalSource:s.originalSource,originalLine:s.originalLine,originalColumn:s.originalColumn,originalName:s.originalName,highlightLineNumber:s.originalLine});s.snippet&&(i.snippet=s.snippet),a.endpoint&&A(a.endpoint,i)}}catch(s){}})}function R(e){a.enabled&&m(e)}function Q(e){_=e}function Y(e){h=l(l({},h),e)}function ee(e,n){h[e]=n}function re(){if(a.trackUserInteractions){document.addEventListener("click",o=>{k.clicks++;let u=o.target,c=u.tagName?u.tagName.toLowerCase():"",f=(u.textContent||"").trim().slice(0,50);p({category:"click",message:c+(f?": "+f:"")})});let r=0;window.addEventListener("scroll",()=>{let o=Date.now();o-r>100&&(k.scrolls++,r=o)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),p({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{p({category:"navigation",message:window.location.href})});let n=window.fetch;window.fetch=function(r,o){let u=typeof r=="string"?r:(r==null?void 0:r.url)||"",c=(o==null?void 0:o.method)||"GET",f=Date.now();return n.apply(this,arguments).then(d=>(p({category:"fetch",message:`${c} ${u}`,data:{status:d.status,duration:Date.now()-f}}),d)).catch(d=>{throw p({category:"fetch",message:`${c} ${u}`,data:{error:d.message,duration:Date.now()-f}}),d})};let t=XMLHttpRequest.prototype.open,s=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(r,o){return this._scoutMethod=r,this._scoutUrl=o,t.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let r=this,o=Date.now();return r.addEventListener("loadend",()=>{p({category:"xhr",message:`${r._scoutMethod||"GET"} ${r._scoutUrl||""}`,data:{status:r.status,duration:Date.now()-o}})}),s.apply(this,arguments)},a.addErrorEventListener&&window.addEventListener("error",r=>w(this,null,function*(){if(a.enabled){try{let o=r.error?r.error.stack:"No stack trace available";if(v(r.message))return;a.sendErrors&&m({type:"window.onerror",message:r.message,source:r.filename,lineno:r.lineno,colno:r.colno,errorTrace:o})}catch(o){S("[Scout] Error handler failure:",o)}a.selfHealingErrors&&r.preventDefault()}})),a.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",r=>{if(a.enabled){try{let o=r.reason,u=(o==null?void 0:o.stack)||"No stack trace available";if(v((o==null?void 0:o.message)||""))return;a.sendErrors&&m({type:"Unhandled Promise Rejection",message:(o==null?void 0:o.message)||"Unhandled Promise Rejection",reason:r.reason,errorTrace:u})}catch(o){S("[Scout] Rejection handler failure:",o)}a.selfHealingErrors&&r.preventDefault()}}),a.overrideConsoleError&&(console.error=function(...r){if(a.enabled)try{let o=new Error().stack;if(v(y(r)))return;a.sendErrors&&m({type:"console.error",errorTrace:o,args:y(r)})}catch(o){S("[Scout] console.error override failure:",o)}}),a.overrideConsoleWarn&&(console.warn=function(...r){if(a.enabled)try{let o=new Error().stack;if(v(y(r)))return;a.sendErrors&&m({type:"console.warn",errorTrace:o,args:y(r)})}catch(o){S("[Scout] console.warn override failure:",o)}});let i=a.endpoint?new URL(a.endpoint).origin:"";a.loadUAParser&&a.browserDetails&&i&&N(`${i}/vendor/ua-parser.min.js`,()=>{typeof UAParser!="undefined"&&(window._uaParserResult=new UAParser().getResult())}),a.handleSourceMaps&&i&&N(`${i}/vendor/source-map.min.js`)}function ne(e={},n={}){if(e.user&&(_=e.user,delete e.user),D){g=l(l({},g),e),a=l(l({},a),n);return}g=l(l({},g),e),a=l(l({},a),n),D=!0,typeof window!="undefined"&&re()}typeof window!="undefined"&&(window.Scout={init:ne,setScope:e=>{g=l(l({},g),e)},setConfig:e=>{a=l(l({},a),e)},setUser:Q,setContext:Y,setTag:ee,addBreadcrumb:p,error:R});var $=class extends te.Component{constructor(n){super(n),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(n,t){R({message:n.message,stack:n.stack,errorTrace:n.stack,component:(t==null?void 0:t.componentStack)||"",type:"react-error-boundary"})}render(){return this.state.hasError?this.props.fallback||null:this.props.children}};export{$ as ScoutErrorBoundary};
1
+ var H=Object.defineProperty,W=Object.defineProperties;var X=Object.getOwnPropertyDescriptors;var b=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,V=Object.prototype.propertyIsEnumerable;var I=(e,t,o)=>t in e?H(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,u=(e,t)=>{for(var o in t||(t={}))B.call(t,o)&&I(e,o,t[o]);if(b)for(var o of b(t))V.call(t,o)&&I(e,o,t[o]);return e},U=(e,t)=>W(e,X(t));var h=(e,t,o)=>new Promise((l,i)=>{var r=a=>{try{c(o.next(a))}catch(d){i(d)}},n=a=>{try{c(o.throw(a))}catch(d){i(d)}},c=a=>a.done?l(a.value):Promise.resolve(a.value).then(r,n);c((o=o.apply(e,t)).next())});import oe from"react";var q={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},s=u({},q),O,g={environment:typeof window!="undefined"&&((O=window.location)==null?void 0:O.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.3.4",project:null,release:null,version:null,app:null},v={clicks:0,scrolls:0},C=null,D=!1,k=null,_={},E=[],z=30;var w=console.warn;var P=console.log;function M(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function J(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",M("user")),localStorage.getItem("__scoutUserId")),t=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",M("session")),sessionStorage.getItem("__scoutSessionId"));return C=C||M("pageload"),{pageloadId:C,userId:e,sessionId:t}}function G(){var o,l,i;if((l=(o=window._uaParserResult)==null?void 0:o.browser)!=null&&l.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((i=[{p:/Chrome.*Mobile/,n:"Chrome Mobile"},{p:/Chrome/,n:"Chrome"},{p:/Firefox.*Mobile/,n:"Firefox Mobile"},{p:/Firefox/,n:"Firefox"},{p:/Safari.*Mobile/,n:"Safari Mobile"},{p:/Safari/,n:"Safari"},{p:/MSIE|Trident/,n:"Internet Explorer"},{p:/Edge/,n:"Edge"}].find(r=>e.match(r.p)))==null?void 0:i.n)||"Unknown"}function K(){var o,l,i;if((l=(o=window._uaParserResult)==null?void 0:o.os)!=null&&l.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((i=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(r=>e.match(r.p)))==null?void 0:i.n)||"Unknown"}function Z(){var t,o,l,i,r,n,c,a,d,f;let e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:e?e.effectiveType:"unknown",userAgent:navigator.userAgent,width:window.innerWidth,height:window.innerHeight,screenWidth:screen.width,screenHeight:screen.height,errorTimestamp:Date.now(),timeLocale:Intl.DateTimeFormat().resolvedOptions().timeZone,browserLocale:navigator.language||navigator.userLanguage,sessionTime:Math.round(performance.now()/1e3),deviceMemory:navigator.deviceMemory||"unknown",timezoneOffset:new Date().getTimezoneOffset(),cookiesEnabled:navigator.cookieEnabled,url:window.location.href,host:window.location.host,referrer:document.referrer,browser:G(),browserVersion:((o=(t=window._uaParserResult)==null?void 0:t.browser)==null?void 0:o.version)||null,os:K(),osVersion:((i=(l=window._uaParserResult)==null?void 0:l.os)==null?void 0:i.version)||null,deviceType:((n=(r=window._uaParserResult)==null?void 0:r.device)==null?void 0:n.type)||null,deviceModel:((a=(c=window._uaParserResult)==null?void 0:c.device)==null?void 0:a.model)||null,deviceVendor:((f=(d=window._uaParserResult)==null?void 0:d.device)==null?void 0:f.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:v.clicks,userScrolls:v.scrolls}}function S(e){return!s.ignoreErrors||!Array.isArray(s.ignoreErrors)?!1:s.ignoreErrors.some(t=>typeof t=="string"?e.includes(t):t instanceof RegExp?t.test(e):!1)}function N(e,t){let o=new AbortController,l=setTimeout(()=>o.abort(),5e3),i={"Content-Type":"application/json"};return s.token&&(i["X-Ingest-Token"]=s.token),fetch(e,{method:"POST",headers:i,body:JSON.stringify(t),signal:o.signal}).then(r=>(clearTimeout(l),r)).catch(()=>{clearTimeout(l)})}function y(e){let t=(e[0]||"")+"",o=[...e];return t.replace(/%[sdj]/g,l=>{let i=o.shift();return l==="%s"?String(i):l==="%d"?Number(i):l==="%j"?JSON.stringify(i):l})}function A(e,t){let o=document.createElement("script");o.src=e,o.async=!0,t&&(o.onload=t),document.head.appendChild(o)}function Q(e,t,o){return h(this,null,function*(){var l;try{let i=yield fetch(e);if(!i.ok)return null;let r=yield i.text(),n=r.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),c=r.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),a;if(n)a=JSON.parse(atob(n[1]));else if(c){let $=new URL(c[1],e).href,T=yield fetch($);if(!T.ok)return null;a=yield T.json()}else return null;if(!((l=window.sourceMap)!=null&&l.SourceMapConsumer))return null;let f=new window.sourceMap.SourceMapConsumer(a).originalPositionFor({line:t,column:o});if(!f.source)return null;let R=a.sources.indexOf(f.source),x=null;return a.sourcesContent&&a.sourcesContent[R]&&(x=a.sourcesContent[R]),{originalSource:f.source,originalLine:f.line,originalColumn:f.column,originalName:f.name,snippet:x}}catch(i){return null}})}function p(e){E.push(u({timestamp:Date.now()},e)),E.length>z&&E.shift()}var Y=new Set(["type","message","args","stack","errorTrace","source","lineno","colno","reason","snippet","highlightLineNumber","originalSource","originalLine","originalColumn","originalName","context","user","breadcrumbs","timestamp","errorTimestamp"]);function m(e){return h(this,null,function*(){e=u({},e||{});let t={};for(let n of Object.keys(e))n!=="context"&&!Y.has(n)&&(t[n]=e[n],delete e[n]);if(s.sampleRate&&Math.random()<1-parseFloat(s.sampleRate)){s.debug&&P("[Scout] Suppressed by sampling");return}if(s.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let n=e.errorTrace.split(`
2
+ `),c=[n[0]];for(let a=1;a<n.length;a++)!n[a].includes("/scout")&&!n[a].includes("scout.js")&&!n[a].includes("scout-error")&&c.push(n[a]);c.length>1&&(e.errorTrace=c.join(`
3
+ `))}catch(n){}if((e.errorTrace||e.stack)&&!e.source)try{let n=e.errorTrace||e.stack,c=n?n.split(`
4
+ `):[];for(let a=1;a<c.length;a++){let d=c[a].trim().match(/(http.*?):(\d+):(\d+)/);if(d){e.source=d[1],e.lineno=parseInt(d[2],10),e.colno=parseInt(d[3],10);break}}}catch(n){}let o=e.context&&typeof e.context=="object"?e.context:{},l=u(u(u({},_),t),o),i=s.browserDetails?Z():{},r=Object.assign({},e,i,g,J());if(k&&(r.user=k),Object.keys(l).length&&(r.context=l),r.breadcrumbs=E.slice(),s.debug&&P("[Scout] Sending:",r),s.endpoint&&N(s.endpoint,r),s.handleSourceMaps&&e.source&&e.lineno)try{let n=yield Q(e.source,e.lineno,e.colno||0);if(n){let c=U(u({},r),{originalSource:n.originalSource,originalLine:n.originalLine,originalColumn:n.originalColumn,originalName:n.originalName,highlightLineNumber:n.originalLine});n.snippet&&(c.snippet=n.snippet),s.endpoint&&N(s.endpoint,c)}}catch(n){}})}function L(e){s.enabled&&m(e)}function j(e){k=e}function ee(e){_=u(u({},_),e)}function ne(e,t){_[e]=t}function re(){if(s.trackUserInteractions){document.addEventListener("click",n=>{v.clicks++;let c=n.target,a=c.tagName?c.tagName.toLowerCase():"",d=(c.textContent||"").trim().slice(0,50);p({category:"click",message:a+(d?": "+d:"")})});let r=0;window.addEventListener("scroll",()=>{let n=Date.now();n-r>100&&(v.scrolls++,r=n)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),p({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{p({category:"navigation",message:window.location.href})});let t=window.fetch;window.fetch=function(r,n){let c=typeof r=="string"?r:(r==null?void 0:r.url)||"",a=(n==null?void 0:n.method)||"GET",d=Date.now();return t.apply(this,arguments).then(f=>(p({category:"fetch",message:`${a} ${c}`,data:{status:f.status,duration:Date.now()-d}}),f)).catch(f=>{throw p({category:"fetch",message:`${a} ${c}`,data:{error:f.message,duration:Date.now()-d}}),f})};let o=XMLHttpRequest.prototype.open,l=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(r,n){return this._scoutMethod=r,this._scoutUrl=n,o.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let r=this,n=Date.now();return r.addEventListener("loadend",()=>{p({category:"xhr",message:`${r._scoutMethod||"GET"} ${r._scoutUrl||""}`,data:{status:r.status,duration:Date.now()-n}})}),l.apply(this,arguments)},s.addErrorEventListener&&window.addEventListener("error",r=>h(this,null,function*(){if(s.enabled){try{let n=r.error?r.error.stack:"No stack trace available";if(S(r.message))return;s.sendErrors&&m({type:"window.onerror",message:r.message,source:r.filename,lineno:r.lineno,colno:r.colno,errorTrace:n})}catch(n){w("[Scout] Error handler failure:",n)}s.selfHealingErrors&&r.preventDefault()}})),s.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",r=>{if(s.enabled){try{let n=r.reason,c=(n==null?void 0:n.stack)||"No stack trace available";if(S((n==null?void 0:n.message)||""))return;s.sendErrors&&m({type:"Unhandled Promise Rejection",message:(n==null?void 0:n.message)||"Unhandled Promise Rejection",reason:r.reason,errorTrace:c})}catch(n){w("[Scout] Rejection handler failure:",n)}s.selfHealingErrors&&r.preventDefault()}}),s.overrideConsoleError&&(console.error=function(...r){if(s.enabled)try{let n=new Error().stack;if(S(y(r)))return;s.sendErrors&&m({type:"console.error",errorTrace:n,args:y(r)})}catch(n){w("[Scout] console.error override failure:",n)}}),s.overrideConsoleWarn&&(console.warn=function(...r){if(s.enabled)try{let n=new Error().stack;if(S(y(r)))return;s.sendErrors&&m({type:"console.warn",errorTrace:n,args:y(r)})}catch(n){w("[Scout] console.warn override failure:",n)}});let i=s.endpoint?new URL(s.endpoint).origin:"";s.loadUAParser&&s.browserDetails&&i&&A(`${i}/vendor/ua-parser.min.js`,()=>{typeof UAParser!="undefined"&&(window._uaParserResult=new UAParser().getResult())}),s.handleSourceMaps&&i&&A(`${i}/vendor/source-map.min.js`)}function te(e={},t={}){if(e.user&&(k=e.user,delete e.user),D){g=u(u({},g),e),s=u(u({},s),t);return}g=u(u({},g),e),s=u(u({},s),t),D=!0,typeof window!="undefined"&&re()}typeof window!="undefined"&&(window.Scout={init:te,setScope:e=>{g=u(u({},g),e)},setConfig:e=>{s=u(u({},s),e)},setUser:j,setContext:ee,setTag:ne,addBreadcrumb:p,error:L});var F=class extends oe.Component{constructor(t){super(t),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(t,o){L({message:t.message,stack:t.stack,errorTrace:t.stack,component:(o==null?void 0:o.componentStack)||"",type:"react-error-boundary"})}render(){return this.state.hasError?this.props.fallback||null:this.props.children}};export{F as ScoutErrorBoundary};
5
5
  //# sourceMappingURL=react.js.map
package/dist/react.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/react.js", "../src/index.js"],
4
- "sourcesContent": ["/**\n * Scout.js React Error Boundary\n *\n * Usage:\n * import { init } from 'scoutjs'\n * import { ScoutErrorBoundary } from 'scoutjs/react'\n *\n * init({ app: 'My App', project: 'my-project' }, { endpoint: '...' })\n *\n * <ScoutErrorBoundary>\n * <App />\n * </ScoutErrorBoundary>\n */\n\nimport React from 'react'\nimport { captureError } from './index.js'\n\nexport class ScoutErrorBoundary extends React.Component {\n constructor(props) {\n super(props)\n this.state = { hasError: false }\n }\n\n static getDerivedStateFromError() {\n return { hasError: true }\n }\n\n componentDidCatch(error, errorInfo) {\n captureError({\n message: error.message,\n stack: error.stack,\n errorTrace: error.stack,\n component: errorInfo?.componentStack || '',\n type: 'react-error-boundary',\n })\n }\n\n render() {\n if (this.state.hasError) {\n return this.props.fallback || null\n }\n return this.props.children\n }\n}\n", "/**\n * Scout.js Browser SDK\n *\n * Captures errors, unhandled rejections, and console output.\n * Collects browser telemetry, session tracking, and source maps.\n *\n * Usage:\n * import { init, captureError } from 'scout-error'\n * init({ app: 'My App', project: 'my-project' }, { endpoint: 'https://...' })\n */\n\n// UA Parser and Source Map are loaded at runtime from the same host as the endpoint\n// to avoid CDN/CSP issues. For npm/bundler users (Vue/React/Node), import them directly.\n\nconst defaultConfig = {\n trackUserInteractions: true,\n selfHealingErrors: false,\n attachStacktrace: true,\n handleSourceMaps: true,\n browserDetails: true,\n warnOnCapture: false,\n loadUAParser: true,\n ignoreErrors: null,\n sendErrors: true,\n sampleRate: 1.0,\n enabled: true,\n debug: false,\n endpoint: '',\n token: null,\n\n overrideOnError: false,\n overrideOnUnhandledRejection: false,\n addErrorEventListener: true,\n addUnhandledRejectionEventListener: true,\n\n overrideConsoleLog: false,\n overrideConsoleWarn: false,\n overrideConsoleInfo: false,\n overrideConsoleError: true,\n}\n\nlet config = { ...defaultConfig }\n\nlet scope = {\n environment: typeof window !== 'undefined' && window.location?.hostname === 'localhost' ? 'development' : 'production',\n sdk: 'javascript',\n sdkVersion: __SDK_VERSION__,\n project: null,\n release: null,\n version: null,\n app: null,\n}\n\nconst userInteractions = { clicks: 0, scrolls: 0 }\nlet pageloadId = null\nlet initialized = false\nlet userContext = null\nlet customContext = {}\nconst breadcrumbs = []\nconst MAX_BREADCRUMBS = 30\n\n// Save originals before any overrides\nconst _consoleError = console.error\nconst _consoleWarn = console.warn\nconst _consoleInfo = console.info\nconst _consoleLog = console.log\n\n// --- Utilities ---\n\nfunction generateId(prefix) {\n return `${prefix}_${Math.random().toString(36).substr(2, 9)}`\n}\n\nfunction getIds() {\n const userId = localStorage.getItem('__scoutUserId') || (localStorage.setItem('__scoutUserId', generateId('user')), localStorage.getItem('__scoutUserId'))\n const sessionId = sessionStorage.getItem('__scoutSessionId') || (sessionStorage.setItem('__scoutSessionId', generateId('session')), sessionStorage.getItem('__scoutSessionId'))\n pageloadId = pageloadId || generateId('pageload')\n return { pageloadId, userId, sessionId }\n}\n\nfunction getBrowser() {\n if (window._uaParserResult?.browser?.name) return window._uaParserResult.browser.name\n const ua = navigator.userAgent\n const map = [\n { p: /Chrome.*Mobile/, n: 'Chrome Mobile' },\n { p: /Chrome/, n: 'Chrome' },\n { p: /Firefox.*Mobile/, n: 'Firefox Mobile' },\n { p: /Firefox/, n: 'Firefox' },\n { p: /Safari.*Mobile/, n: 'Safari Mobile' },\n { p: /Safari/, n: 'Safari' },\n { p: /MSIE|Trident/, n: 'Internet Explorer' },\n { p: /Edge/, n: 'Edge' },\n ]\n return map.find(b => ua.match(b.p))?.n || 'Unknown'\n}\n\nfunction getOS() {\n if (window._uaParserResult?.os?.name) return window._uaParserResult.os.name\n const ua = navigator.userAgent\n const map = [\n { p: /Win/, n: 'Windows' },\n { p: /Mac/, n: 'Mac OS' },\n { p: /X11|Linux/, n: 'Linux' },\n { p: /Android/, n: 'Android' },\n { p: /iPhone|iPad/, n: 'iOS' },\n ]\n return map.find(o => ua.match(o.p))?.n || 'Unknown'\n}\n\nfunction captureBrowserDetails() {\n const conn = navigator.connection || navigator.mozConnection || navigator.webkitConnection\n return {\n connectionType: conn ? conn.effectiveType : 'unknown',\n userAgent: navigator.userAgent,\n width: window.innerWidth,\n height: window.innerHeight,\n screenWidth: screen.width,\n screenHeight: screen.height,\n errorTimestamp: Date.now(),\n timeLocale: Intl.DateTimeFormat().resolvedOptions().timeZone,\n browserLocale: navigator.language || navigator.userLanguage,\n sessionTime: Math.round(performance.now() / 1000),\n deviceMemory: navigator.deviceMemory || 'unknown',\n timezoneOffset: new Date().getTimezoneOffset(),\n cookiesEnabled: navigator.cookieEnabled,\n url: window.location.href,\n host: window.location.host,\n referrer: document.referrer,\n browser: getBrowser(),\n browserVersion: window._uaParserResult?.browser?.version || null,\n os: getOS(),\n osVersion: window._uaParserResult?.os?.version || null,\n deviceType: window._uaParserResult?.device?.type || null,\n deviceModel: window._uaParserResult?.device?.model || null,\n deviceVendor: window._uaParserResult?.device?.vendor || null,\n loadTime: Math.max(0, performance.timing.loadEventEnd - performance.timing.navigationStart),\n userClicks: userInteractions.clicks,\n userScrolls: userInteractions.scrolls,\n }\n}\n\nfunction shouldIgnoreError(msg) {\n if (!config.ignoreErrors || !Array.isArray(config.ignoreErrors)) return false\n return config.ignoreErrors.some(pattern => {\n if (typeof pattern === 'string') return msg.includes(pattern)\n if (pattern instanceof RegExp) return pattern.test(msg)\n return false\n })\n}\n\nfunction postData(url, data) {\n const controller = new AbortController()\n const timeout = setTimeout(() => controller.abort(), 5000)\n\n const headers = { 'Content-Type': 'application/json' }\n if (config.token) headers['X-Ingest-Token'] = config.token\n\n return fetch(url, {\n method: 'POST',\n headers,\n body: JSON.stringify(data),\n signal: controller.signal,\n })\n .then(r => { clearTimeout(timeout); return r })\n .catch(() => { clearTimeout(timeout) })\n}\n\nfunction argsToString(args) {\n const fmt = (args[0] || '') + ''\n const rest = [...args]\n return fmt.replace(/%[sdj]/g, (m) => {\n const v = rest.shift()\n if (m === '%s') return String(v)\n if (m === '%d') return Number(v)\n if (m === '%j') return JSON.stringify(v)\n return m\n })\n}\n\nfunction _loadScript(src, onload) {\n const s = document.createElement('script')\n s.src = src\n s.async = true\n if (onload) s.onload = onload\n document.head.appendChild(s)\n}\n\n// --- Source Maps ---\n\nasync function resolveSourceMap(sourceUrl, lineno, colno) {\n try {\n // Fetch the JS file to find sourceMappingURL\n const jsResponse = await fetch(sourceUrl)\n if (!jsResponse.ok) return null\n const jsCode = await jsResponse.text()\n\n const inlineMatch = jsCode.match(/\\/\\/# sourceMappingURL=data:application\\/json;base64,([^\\s]+)/)\n const externalMatch = jsCode.match(/\\/\\/# sourceMappingURL=(?!data:)([^\\s]+)/)\n\n let sourceMapData\n if (inlineMatch) {\n sourceMapData = JSON.parse(atob(inlineMatch[1]))\n } else if (externalMatch) {\n const mapURL = new URL(externalMatch[1], sourceUrl).href\n const mapResponse = await fetch(mapURL)\n if (!mapResponse.ok) return null\n sourceMapData = await mapResponse.json()\n } else {\n return null\n }\n\n if (!window.sourceMap?.SourceMapConsumer) return null\n const consumer = new window.sourceMap.SourceMapConsumer(sourceMapData)\n const pos = consumer.originalPositionFor({ line: lineno, column: colno })\n\n if (!pos.source) return null\n\n // Extract the original source snippet\n const sourceIndex = sourceMapData.sources.indexOf(pos.source)\n let snippet = null\n if (sourceMapData.sourcesContent && sourceMapData.sourcesContent[sourceIndex]) {\n snippet = sourceMapData.sourcesContent[sourceIndex]\n }\n\n return {\n originalSource: pos.source,\n originalLine: pos.line,\n originalColumn: pos.column,\n originalName: pos.name,\n snippet,\n }\n } catch (e) {\n return null\n }\n}\n\n// --- Breadcrumbs ---\n\nfunction _addBreadcrumb(crumb) {\n breadcrumbs.push({ timestamp: Date.now(), ...crumb })\n if (breadcrumbs.length > MAX_BREADCRUMBS) breadcrumbs.shift()\n}\n\n// --- Core ---\n\nasync function pushErrorEvent(obj) {\n const details = config.browserDetails ? captureBrowserDetails() : {}\n const event = Object.assign(obj, details, scope, getIds())\n\n if (userContext) event.user = userContext\n if (Object.keys(customContext).length) event.context = { ...customContext }\n event.breadcrumbs = breadcrumbs.slice()\n\n if (config.sampleRate && Math.random() < (1 - parseFloat(config.sampleRate))) {\n if (config.debug) _consoleLog('[Scout] Suppressed by sampling')\n return\n }\n\n if (!config.attachStacktrace) obj.errorTrace = null\n\n // Strip scout's own frames from stack traces (for console.error/warn captures)\n if (obj.errorTrace) {\n try {\n const lines = obj.errorTrace.split('\\n')\n const filtered = [lines[0]]\n for (let i = 1; i < lines.length; i++) {\n if (!lines[i].includes('/scout') && !lines[i].includes('scout.js') && !lines[i].includes('scout-error')) {\n filtered.push(lines[i])\n }\n }\n if (filtered.length > 1) obj.errorTrace = filtered.join('\\n')\n } catch (e) { /* ignore */ }\n }\n\n if ((obj.errorTrace || obj.stack) && !obj.source) {\n try {\n const stack = obj.errorTrace || obj.stack\n const lines = stack ? stack.split('\\n') : []\n // Find the first frame with a source location (skip the error message line)\n for (let i = 1; i < lines.length; i++) {\n const match = lines[i].trim().match(/(http.*?):(\\d+):(\\d+)/)\n if (match) {\n obj.source = match[1]\n obj.lineno = parseInt(match[2], 10)\n obj.colno = parseInt(match[3], 10)\n break\n }\n }\n } catch (e) { /* ignore */ }\n }\n\n // Send the event immediately \u2014 don't let source map resolution block it\n if (config.debug) _consoleLog('[Scout] Sending:', event)\n if (config.endpoint) postData(config.endpoint, event)\n\n // Resolve source maps after sending (best-effort, non-blocking)\n if (config.handleSourceMaps && obj.source && obj.lineno) {\n try {\n const resolved = await resolveSourceMap(obj.source, obj.lineno, obj.colno || 0)\n if (resolved) {\n const enriched = {\n ...event,\n originalSource: resolved.originalSource,\n originalLine: resolved.originalLine,\n originalColumn: resolved.originalColumn,\n originalName: resolved.originalName,\n highlightLineNumber: resolved.originalLine,\n }\n if (resolved.snippet) enriched.snippet = resolved.snippet\n if (config.endpoint) postData(config.endpoint, enriched)\n }\n } catch (e) { /* fail silently */ }\n }\n}\n\n/**\n * Manually capture an error object.\n */\nexport function captureError(event) {\n if (!config.enabled) return\n pushErrorEvent(event)\n}\n\n/**\n * Set identified user info. Call after login.\n * @param {{ id?: string, email?: string, name?: string }} user\n */\nexport function setUser(user) {\n userContext = user\n}\n\n/**\n * Merge custom key-value context attached to all future errors.\n * @param {Object} ctx\n */\nexport function setContext(ctx) {\n customContext = { ...customContext, ...ctx }\n}\n\n/**\n * Set a single context tag.\n */\nexport function setTag(key, value) {\n customContext[key] = value\n}\n\n/**\n * Manually add a breadcrumb.\n * @param {{ category?: string, message?: string, data?: Object }} crumb\n */\nexport function addBreadcrumb(crumb) {\n _addBreadcrumb(crumb)\n}\n\n// --- Setup ---\n\nfunction setupListeners() {\n // Click tracking + breadcrumbs\n if (config.trackUserInteractions) {\n document.addEventListener('click', (e) => {\n userInteractions.clicks++\n const el = e.target\n const tag = el.tagName ? el.tagName.toLowerCase() : ''\n const text = (el.textContent || '').trim().slice(0, 50)\n _addBreadcrumb({ category: 'click', message: tag + (text ? ': ' + text : '') })\n })\n let lastScroll = 0\n window.addEventListener('scroll', () => {\n const now = Date.now()\n if (now - lastScroll > 100) { userInteractions.scrolls++; lastScroll = now }\n })\n }\n\n // Navigation breadcrumbs\n const origPushState = history.pushState\n history.pushState = function() {\n origPushState.apply(this, arguments)\n _addBreadcrumb({ category: 'navigation', message: window.location.href })\n }\n window.addEventListener('popstate', () => {\n _addBreadcrumb({ category: 'navigation', message: window.location.href })\n })\n\n // Fetch breadcrumbs\n const origFetch = window.fetch\n window.fetch = function(input, init) {\n const url = typeof input === 'string' ? input : (input?.url || '')\n const method = init?.method || 'GET'\n const start = Date.now()\n return origFetch.apply(this, arguments).then(response => {\n _addBreadcrumb({ category: 'fetch', message: `${method} ${url}`, data: { status: response.status, duration: Date.now() - start } })\n return response\n }).catch(err => {\n _addBreadcrumb({ category: 'fetch', message: `${method} ${url}`, data: { error: err.message, duration: Date.now() - start } })\n throw err\n })\n }\n\n // XHR breadcrumbs\n const origOpen = XMLHttpRequest.prototype.open\n const origSend = XMLHttpRequest.prototype.send\n XMLHttpRequest.prototype.open = function(method, url) {\n this._scoutMethod = method\n this._scoutUrl = url\n return origOpen.apply(this, arguments)\n }\n XMLHttpRequest.prototype.send = function() {\n const self = this\n const start = Date.now()\n self.addEventListener('loadend', () => {\n _addBreadcrumb({ category: 'xhr', message: `${self._scoutMethod || 'GET'} ${self._scoutUrl || ''}`, data: { status: self.status, duration: Date.now() - start } })\n })\n return origSend.apply(this, arguments)\n }\n\n // Error event listener\n if (config.addErrorEventListener) {\n window.addEventListener('error', async (event) => {\n if (!config.enabled) return\n try {\n const errorTrace = event.error ? event.error.stack : 'No stack trace available'\n if (shouldIgnoreError(event.message)) return\n if (config.sendErrors) {\n pushErrorEvent({\n type: 'window.onerror',\n message: event.message,\n source: event.filename,\n lineno: event.lineno,\n colno: event.colno,\n errorTrace,\n })\n }\n } catch (e) {\n _consoleWarn('[Scout] Error handler failure:', e)\n }\n if (config.selfHealingErrors) event.preventDefault()\n })\n }\n\n // Unhandled rejection listener\n if (config.addUnhandledRejectionEventListener) {\n window.addEventListener('unhandledrejection', (event) => {\n if (!config.enabled) return\n try {\n const error = event.reason\n const errorTrace = error?.stack || 'No stack trace available'\n if (shouldIgnoreError(error?.message || '')) return\n if (config.sendErrors) {\n pushErrorEvent({\n type: 'Unhandled Promise Rejection',\n message: error?.message || 'Unhandled Promise Rejection',\n reason: event.reason,\n errorTrace,\n })\n }\n } catch (e) {\n _consoleWarn('[Scout] Rejection handler failure:', e)\n }\n if (config.selfHealingErrors) event.preventDefault()\n })\n }\n\n // Console overrides\n if (config.overrideConsoleError) {\n console.error = function (...args) {\n if (!config.enabled) return\n try {\n const errorTrace = new Error().stack\n if (shouldIgnoreError(argsToString(args))) return\n if (config.sendErrors) pushErrorEvent({ type: 'console.error', errorTrace, args: argsToString(args) })\n } catch (e) { _consoleWarn('[Scout] console.error override failure:', e) }\n }\n }\n\n if (config.overrideConsoleWarn) {\n console.warn = function (...args) {\n if (!config.enabled) return\n try {\n const errorTrace = new Error().stack\n if (shouldIgnoreError(argsToString(args))) return\n if (config.sendErrors) pushErrorEvent({ type: 'console.warn', errorTrace, args: argsToString(args) })\n } catch (e) { _consoleWarn('[Scout] console.warn override failure:', e) }\n }\n }\n\n // Load UA Parser and Source Map from endpoint host (self-hosted, no CDN)\n const baseUrl = config.endpoint ? new URL(config.endpoint).origin : ''\n if (config.loadUAParser && config.browserDetails && baseUrl) {\n _loadScript(`${baseUrl}/vendor/ua-parser.min.js`, () => {\n if (typeof UAParser !== 'undefined') {\n window._uaParserResult = new UAParser().getResult()\n }\n })\n }\n if (config.handleSourceMaps && baseUrl) {\n _loadScript(`${baseUrl}/vendor/source-map.min.js`)\n }\n}\n\n/**\n * Initialize Scout error tracking.\n *\n * @param {Object} scopeOptions - { app, project, version, environment, user }\n * @param {Object} configOptions - { endpoint, token, sampleRate, debug, ... }\n */\nexport function init(scopeOptions = {}, configOptions = {}) {\n // Extract user from scope if provided\n if (scopeOptions.user) {\n userContext = scopeOptions.user\n delete scopeOptions.user\n }\n\n if (initialized) {\n scope = { ...scope, ...scopeOptions }\n config = { ...config, ...configOptions }\n return\n }\n\n scope = { ...scope, ...scopeOptions }\n config = { ...config, ...configOptions }\n initialized = true\n\n if (typeof window !== 'undefined') {\n setupListeners()\n }\n}\n\n// Expose window.Scout immediately on load (before init is called)\n// This overwrites the ES5 no-op stub with real methods\nif (typeof window !== 'undefined') {\n window.Scout = {\n init,\n setScope: (s) => { scope = { ...scope, ...s } },\n setConfig: (c) => { config = { ...config, ...c } },\n setUser,\n setContext,\n setTag,\n addBreadcrumb: _addBreadcrumb,\n error: captureError,\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["React", "defaultConfig", "config", "__spreadValues", "_a", "scope", "userInteractions", "pageloadId", "initialized", "userContext", "customContext", "breadcrumbs", "MAX_BREADCRUMBS", "_consoleWarn", "_consoleLog", "generateId", "prefix", "getIds", "userId", "sessionId", "pageloadId", "getBrowser", "_a", "_b", "_c", "ua", "b", "getOS", "o", "captureBrowserDetails", "_d", "_e", "_f", "_g", "_h", "_i", "_j", "conn", "userInteractions", "shouldIgnoreError", "msg", "config", "pattern", "postData", "url", "data", "controller", "timeout", "headers", "argsToString", "args", "fmt", "rest", "m", "v", "_loadScript", "src", "onload", "s", "resolveSourceMap", "sourceUrl", "lineno", "colno", "__async", "jsResponse", "jsCode", "inlineMatch", "externalMatch", "sourceMapData", "mapURL", "mapResponse", "pos", "sourceIndex", "snippet", "e", "_addBreadcrumb", "crumb", "breadcrumbs", "__spreadValues", "MAX_BREADCRUMBS", "pushErrorEvent", "obj", "details", "event", "scope", "userContext", "customContext", "lines", "filtered", "i", "stack", "match", "resolved", "enriched", "__spreadProps", "captureError", "setUser", "user", "setContext", "ctx", "setTag", "key", "value", "setupListeners", "config", "e", "userInteractions", "el", "tag", "text", "_addBreadcrumb", "lastScroll", "now", "origPushState", "origFetch", "input", "init", "url", "method", "start", "response", "err", "origOpen", "origSend", "self", "event", "__async", "errorTrace", "shouldIgnoreError", "pushErrorEvent", "_consoleWarn", "error", "args", "argsToString", "baseUrl", "_loadScript", "scopeOptions", "configOptions", "userContext", "initialized", "scope", "__spreadValues", "s", "c", "setUser", "setContext", "setTag", "captureError", "ScoutErrorBoundary", "React", "props", "error", "errorInfo", "captureError"]
4
+ "sourcesContent": ["/**\n * Scout.js React Error Boundary\n *\n * Usage:\n * import { init } from 'scoutjs'\n * import { ScoutErrorBoundary } from 'scoutjs/react'\n *\n * init({ app: 'My App', project: 'my-project' }, { endpoint: '...' })\n *\n * <ScoutErrorBoundary>\n * <App />\n * </ScoutErrorBoundary>\n */\n\nimport React from 'react'\nimport { captureError } from './index.js'\n\nexport class ScoutErrorBoundary extends React.Component {\n constructor(props) {\n super(props)\n this.state = { hasError: false }\n }\n\n static getDerivedStateFromError() {\n return { hasError: true }\n }\n\n componentDidCatch(error, errorInfo) {\n captureError({\n message: error.message,\n stack: error.stack,\n errorTrace: error.stack,\n component: errorInfo?.componentStack || '',\n type: 'react-error-boundary',\n })\n }\n\n render() {\n if (this.state.hasError) {\n return this.props.fallback || null\n }\n return this.props.children\n }\n}\n", "/**\n * Scout.js Browser SDK\n *\n * Captures errors, unhandled rejections, and console output.\n * Collects browser telemetry, session tracking, and source maps.\n *\n * Usage:\n * import { init, captureError } from 'scout-error'\n * init({ app: 'My App', project: 'my-project' }, { endpoint: 'https://...' })\n */\n\n// UA Parser and Source Map are loaded at runtime from the same host as the endpoint\n// to avoid CDN/CSP issues. For npm/bundler users (Vue/React/Node), import them directly.\n\nconst defaultConfig = {\n trackUserInteractions: true,\n selfHealingErrors: false,\n attachStacktrace: true,\n handleSourceMaps: true,\n browserDetails: true,\n warnOnCapture: false,\n loadUAParser: true,\n ignoreErrors: null,\n sendErrors: true,\n sampleRate: 1.0,\n enabled: true,\n debug: false,\n endpoint: '',\n token: null,\n\n overrideOnError: false,\n overrideOnUnhandledRejection: false,\n addErrorEventListener: true,\n addUnhandledRejectionEventListener: true,\n\n overrideConsoleLog: false,\n overrideConsoleWarn: false,\n overrideConsoleInfo: false,\n overrideConsoleError: true,\n}\n\nlet config = { ...defaultConfig }\n\nlet scope = {\n environment: typeof window !== 'undefined' && window.location?.hostname === 'localhost' ? 'development' : 'production',\n sdk: 'javascript',\n sdkVersion: __SDK_VERSION__,\n project: null,\n release: null,\n version: null,\n app: null,\n}\n\nconst userInteractions = { clicks: 0, scrolls: 0 }\nlet pageloadId = null\nlet initialized = false\nlet userContext = null\nlet customContext = {}\nconst breadcrumbs = []\nconst MAX_BREADCRUMBS = 30\n\n// Save originals before any overrides\nconst _consoleError = console.error\nconst _consoleWarn = console.warn\nconst _consoleInfo = console.info\nconst _consoleLog = console.log\n\n// --- Utilities ---\n\nfunction generateId(prefix) {\n return `${prefix}_${Math.random().toString(36).substr(2, 9)}`\n}\n\nfunction getIds() {\n const userId = localStorage.getItem('__scoutUserId') || (localStorage.setItem('__scoutUserId', generateId('user')), localStorage.getItem('__scoutUserId'))\n const sessionId = sessionStorage.getItem('__scoutSessionId') || (sessionStorage.setItem('__scoutSessionId', generateId('session')), sessionStorage.getItem('__scoutSessionId'))\n pageloadId = pageloadId || generateId('pageload')\n return { pageloadId, userId, sessionId }\n}\n\nfunction getBrowser() {\n if (window._uaParserResult?.browser?.name) return window._uaParserResult.browser.name\n const ua = navigator.userAgent\n const map = [\n { p: /Chrome.*Mobile/, n: 'Chrome Mobile' },\n { p: /Chrome/, n: 'Chrome' },\n { p: /Firefox.*Mobile/, n: 'Firefox Mobile' },\n { p: /Firefox/, n: 'Firefox' },\n { p: /Safari.*Mobile/, n: 'Safari Mobile' },\n { p: /Safari/, n: 'Safari' },\n { p: /MSIE|Trident/, n: 'Internet Explorer' },\n { p: /Edge/, n: 'Edge' },\n ]\n return map.find(b => ua.match(b.p))?.n || 'Unknown'\n}\n\nfunction getOS() {\n if (window._uaParserResult?.os?.name) return window._uaParserResult.os.name\n const ua = navigator.userAgent\n const map = [\n { p: /Win/, n: 'Windows' },\n { p: /Mac/, n: 'Mac OS' },\n { p: /X11|Linux/, n: 'Linux' },\n { p: /Android/, n: 'Android' },\n { p: /iPhone|iPad/, n: 'iOS' },\n ]\n return map.find(o => ua.match(o.p))?.n || 'Unknown'\n}\n\nfunction captureBrowserDetails() {\n const conn = navigator.connection || navigator.mozConnection || navigator.webkitConnection\n return {\n connectionType: conn ? conn.effectiveType : 'unknown',\n userAgent: navigator.userAgent,\n width: window.innerWidth,\n height: window.innerHeight,\n screenWidth: screen.width,\n screenHeight: screen.height,\n errorTimestamp: Date.now(),\n timeLocale: Intl.DateTimeFormat().resolvedOptions().timeZone,\n browserLocale: navigator.language || navigator.userLanguage,\n sessionTime: Math.round(performance.now() / 1000),\n deviceMemory: navigator.deviceMemory || 'unknown',\n timezoneOffset: new Date().getTimezoneOffset(),\n cookiesEnabled: navigator.cookieEnabled,\n url: window.location.href,\n host: window.location.host,\n referrer: document.referrer,\n browser: getBrowser(),\n browserVersion: window._uaParserResult?.browser?.version || null,\n os: getOS(),\n osVersion: window._uaParserResult?.os?.version || null,\n deviceType: window._uaParserResult?.device?.type || null,\n deviceModel: window._uaParserResult?.device?.model || null,\n deviceVendor: window._uaParserResult?.device?.vendor || null,\n loadTime: Math.max(0, performance.timing.loadEventEnd - performance.timing.navigationStart),\n userClicks: userInteractions.clicks,\n userScrolls: userInteractions.scrolls,\n }\n}\n\nfunction shouldIgnoreError(msg) {\n if (!config.ignoreErrors || !Array.isArray(config.ignoreErrors)) return false\n return config.ignoreErrors.some(pattern => {\n if (typeof pattern === 'string') return msg.includes(pattern)\n if (pattern instanceof RegExp) return pattern.test(msg)\n return false\n })\n}\n\nfunction postData(url, data) {\n const controller = new AbortController()\n const timeout = setTimeout(() => controller.abort(), 5000)\n\n const headers = { 'Content-Type': 'application/json' }\n if (config.token) headers['X-Ingest-Token'] = config.token\n\n return fetch(url, {\n method: 'POST',\n headers,\n body: JSON.stringify(data),\n signal: controller.signal,\n })\n .then(r => { clearTimeout(timeout); return r })\n .catch(() => { clearTimeout(timeout) })\n}\n\nfunction argsToString(args) {\n const fmt = (args[0] || '') + ''\n const rest = [...args]\n return fmt.replace(/%[sdj]/g, (m) => {\n const v = rest.shift()\n if (m === '%s') return String(v)\n if (m === '%d') return Number(v)\n if (m === '%j') return JSON.stringify(v)\n return m\n })\n}\n\nfunction _loadScript(src, onload) {\n const s = document.createElement('script')\n s.src = src\n s.async = true\n if (onload) s.onload = onload\n document.head.appendChild(s)\n}\n\n// --- Source Maps ---\n\nasync function resolveSourceMap(sourceUrl, lineno, colno) {\n try {\n // Fetch the JS file to find sourceMappingURL\n const jsResponse = await fetch(sourceUrl)\n if (!jsResponse.ok) return null\n const jsCode = await jsResponse.text()\n\n const inlineMatch = jsCode.match(/\\/\\/# sourceMappingURL=data:application\\/json;base64,([^\\s]+)/)\n const externalMatch = jsCode.match(/\\/\\/# sourceMappingURL=(?!data:)([^\\s]+)/)\n\n let sourceMapData\n if (inlineMatch) {\n sourceMapData = JSON.parse(atob(inlineMatch[1]))\n } else if (externalMatch) {\n const mapURL = new URL(externalMatch[1], sourceUrl).href\n const mapResponse = await fetch(mapURL)\n if (!mapResponse.ok) return null\n sourceMapData = await mapResponse.json()\n } else {\n return null\n }\n\n if (!window.sourceMap?.SourceMapConsumer) return null\n const consumer = new window.sourceMap.SourceMapConsumer(sourceMapData)\n const pos = consumer.originalPositionFor({ line: lineno, column: colno })\n\n if (!pos.source) return null\n\n // Extract the original source snippet\n const sourceIndex = sourceMapData.sources.indexOf(pos.source)\n let snippet = null\n if (sourceMapData.sourcesContent && sourceMapData.sourcesContent[sourceIndex]) {\n snippet = sourceMapData.sourcesContent[sourceIndex]\n }\n\n return {\n originalSource: pos.source,\n originalLine: pos.line,\n originalColumn: pos.column,\n originalName: pos.name,\n snippet,\n }\n } catch (e) {\n return null\n }\n}\n\n// --- Breadcrumbs ---\n\nfunction _addBreadcrumb(crumb) {\n breadcrumbs.push({ timestamp: Date.now(), ...crumb })\n if (breadcrumbs.length > MAX_BREADCRUMBS) breadcrumbs.shift()\n}\n\n// --- Core ---\n\n// Known top-level event fields the SDK and server understand.\n// Anything else passed to captureError gets auto-promoted into context\n// so the admin UI's Context section can render it.\nconst KNOWN_EVENT_FIELDS = new Set([\n 'type', 'message', 'args', 'stack', 'errorTrace',\n 'source', 'lineno', 'colno', 'reason',\n 'snippet', 'highlightLineNumber',\n 'originalSource', 'originalLine', 'originalColumn', 'originalName',\n 'context', 'user', 'breadcrumbs',\n 'timestamp', 'errorTimestamp',\n])\n\nasync function pushErrorEvent(obj) {\n // Don't mutate the caller's object\n obj = { ...(obj || {}) }\n\n // Auto-promote unknown top-level keys into context (e.g. status, textStatus,\n // errorThrown, etc. that callers commonly pass alongside an error)\n const promoted = {}\n for (const k of Object.keys(obj)) {\n if (k !== 'context' && !KNOWN_EVENT_FIELDS.has(k)) {\n promoted[k] = obj[k]\n delete obj[k]\n }\n }\n\n if (config.sampleRate && Math.random() < (1 - parseFloat(config.sampleRate))) {\n if (config.debug) _consoleLog('[Scout] Suppressed by sampling')\n return\n }\n\n if (!config.attachStacktrace) obj.errorTrace = null\n\n // Strip scout's own frames from stack traces (for console.error/warn captures)\n if (obj.errorTrace) {\n try {\n const lines = obj.errorTrace.split('\\n')\n const filtered = [lines[0]]\n for (let i = 1; i < lines.length; i++) {\n if (!lines[i].includes('/scout') && !lines[i].includes('scout.js') && !lines[i].includes('scout-error')) {\n filtered.push(lines[i])\n }\n }\n if (filtered.length > 1) obj.errorTrace = filtered.join('\\n')\n } catch (e) { /* ignore */ }\n }\n\n if ((obj.errorTrace || obj.stack) && !obj.source) {\n try {\n const stack = obj.errorTrace || obj.stack\n const lines = stack ? stack.split('\\n') : []\n // Find the first frame with a source location (skip the error message line)\n for (let i = 1; i < lines.length; i++) {\n const match = lines[i].trim().match(/(http.*?):(\\d+):(\\d+)/)\n if (match) {\n obj.source = match[1]\n obj.lineno = parseInt(match[2], 10)\n obj.colno = parseInt(match[3], 10)\n break\n }\n }\n } catch (e) { /* ignore */ }\n }\n\n // Merge precedence: global customContext < auto-promoted < user's inline context\n // (so an explicit `context: { foo: 1 }` always wins over an accidental top-level foo)\n const inlineContext = (obj.context && typeof obj.context === 'object') ? obj.context : {}\n const mergedContext = { ...customContext, ...promoted, ...inlineContext }\n\n const details = config.browserDetails ? captureBrowserDetails() : {}\n const event = Object.assign({}, obj, details, scope, getIds())\n\n if (userContext) event.user = userContext\n if (Object.keys(mergedContext).length) event.context = mergedContext\n event.breadcrumbs = breadcrumbs.slice()\n\n // Send the event immediately \u2014 don't let source map resolution block it\n if (config.debug) _consoleLog('[Scout] Sending:', event)\n if (config.endpoint) postData(config.endpoint, event)\n\n // Resolve source maps after sending (best-effort, non-blocking)\n if (config.handleSourceMaps && obj.source && obj.lineno) {\n try {\n const resolved = await resolveSourceMap(obj.source, obj.lineno, obj.colno || 0)\n if (resolved) {\n const enriched = {\n ...event,\n originalSource: resolved.originalSource,\n originalLine: resolved.originalLine,\n originalColumn: resolved.originalColumn,\n originalName: resolved.originalName,\n highlightLineNumber: resolved.originalLine,\n }\n if (resolved.snippet) enriched.snippet = resolved.snippet\n if (config.endpoint) postData(config.endpoint, enriched)\n }\n } catch (e) { /* fail silently */ }\n }\n}\n\n/**\n * Manually capture an error object.\n */\nexport function captureError(event) {\n if (!config.enabled) return\n pushErrorEvent(event)\n}\n\n/**\n * Set identified user info. Call after login.\n * @param {{ id?: string, email?: string, name?: string }} user\n */\nexport function setUser(user) {\n userContext = user\n}\n\n/**\n * Merge custom key-value context attached to all future errors.\n * @param {Object} ctx\n */\nexport function setContext(ctx) {\n customContext = { ...customContext, ...ctx }\n}\n\n/**\n * Set a single context tag.\n */\nexport function setTag(key, value) {\n customContext[key] = value\n}\n\n/**\n * Manually add a breadcrumb.\n * @param {{ category?: string, message?: string, data?: Object }} crumb\n */\nexport function addBreadcrumb(crumb) {\n _addBreadcrumb(crumb)\n}\n\n// --- Setup ---\n\nfunction setupListeners() {\n // Click tracking + breadcrumbs\n if (config.trackUserInteractions) {\n document.addEventListener('click', (e) => {\n userInteractions.clicks++\n const el = e.target\n const tag = el.tagName ? el.tagName.toLowerCase() : ''\n const text = (el.textContent || '').trim().slice(0, 50)\n _addBreadcrumb({ category: 'click', message: tag + (text ? ': ' + text : '') })\n })\n let lastScroll = 0\n window.addEventListener('scroll', () => {\n const now = Date.now()\n if (now - lastScroll > 100) { userInteractions.scrolls++; lastScroll = now }\n })\n }\n\n // Navigation breadcrumbs\n const origPushState = history.pushState\n history.pushState = function() {\n origPushState.apply(this, arguments)\n _addBreadcrumb({ category: 'navigation', message: window.location.href })\n }\n window.addEventListener('popstate', () => {\n _addBreadcrumb({ category: 'navigation', message: window.location.href })\n })\n\n // Fetch breadcrumbs\n const origFetch = window.fetch\n window.fetch = function(input, init) {\n const url = typeof input === 'string' ? input : (input?.url || '')\n const method = init?.method || 'GET'\n const start = Date.now()\n return origFetch.apply(this, arguments).then(response => {\n _addBreadcrumb({ category: 'fetch', message: `${method} ${url}`, data: { status: response.status, duration: Date.now() - start } })\n return response\n }).catch(err => {\n _addBreadcrumb({ category: 'fetch', message: `${method} ${url}`, data: { error: err.message, duration: Date.now() - start } })\n throw err\n })\n }\n\n // XHR breadcrumbs\n const origOpen = XMLHttpRequest.prototype.open\n const origSend = XMLHttpRequest.prototype.send\n XMLHttpRequest.prototype.open = function(method, url) {\n this._scoutMethod = method\n this._scoutUrl = url\n return origOpen.apply(this, arguments)\n }\n XMLHttpRequest.prototype.send = function() {\n const self = this\n const start = Date.now()\n self.addEventListener('loadend', () => {\n _addBreadcrumb({ category: 'xhr', message: `${self._scoutMethod || 'GET'} ${self._scoutUrl || ''}`, data: { status: self.status, duration: Date.now() - start } })\n })\n return origSend.apply(this, arguments)\n }\n\n // Error event listener\n if (config.addErrorEventListener) {\n window.addEventListener('error', async (event) => {\n if (!config.enabled) return\n try {\n const errorTrace = event.error ? event.error.stack : 'No stack trace available'\n if (shouldIgnoreError(event.message)) return\n if (config.sendErrors) {\n pushErrorEvent({\n type: 'window.onerror',\n message: event.message,\n source: event.filename,\n lineno: event.lineno,\n colno: event.colno,\n errorTrace,\n })\n }\n } catch (e) {\n _consoleWarn('[Scout] Error handler failure:', e)\n }\n if (config.selfHealingErrors) event.preventDefault()\n })\n }\n\n // Unhandled rejection listener\n if (config.addUnhandledRejectionEventListener) {\n window.addEventListener('unhandledrejection', (event) => {\n if (!config.enabled) return\n try {\n const error = event.reason\n const errorTrace = error?.stack || 'No stack trace available'\n if (shouldIgnoreError(error?.message || '')) return\n if (config.sendErrors) {\n pushErrorEvent({\n type: 'Unhandled Promise Rejection',\n message: error?.message || 'Unhandled Promise Rejection',\n reason: event.reason,\n errorTrace,\n })\n }\n } catch (e) {\n _consoleWarn('[Scout] Rejection handler failure:', e)\n }\n if (config.selfHealingErrors) event.preventDefault()\n })\n }\n\n // Console overrides\n if (config.overrideConsoleError) {\n console.error = function (...args) {\n if (!config.enabled) return\n try {\n const errorTrace = new Error().stack\n if (shouldIgnoreError(argsToString(args))) return\n if (config.sendErrors) pushErrorEvent({ type: 'console.error', errorTrace, args: argsToString(args) })\n } catch (e) { _consoleWarn('[Scout] console.error override failure:', e) }\n }\n }\n\n if (config.overrideConsoleWarn) {\n console.warn = function (...args) {\n if (!config.enabled) return\n try {\n const errorTrace = new Error().stack\n if (shouldIgnoreError(argsToString(args))) return\n if (config.sendErrors) pushErrorEvent({ type: 'console.warn', errorTrace, args: argsToString(args) })\n } catch (e) { _consoleWarn('[Scout] console.warn override failure:', e) }\n }\n }\n\n // Load UA Parser and Source Map from endpoint host (self-hosted, no CDN)\n const baseUrl = config.endpoint ? new URL(config.endpoint).origin : ''\n if (config.loadUAParser && config.browserDetails && baseUrl) {\n _loadScript(`${baseUrl}/vendor/ua-parser.min.js`, () => {\n if (typeof UAParser !== 'undefined') {\n window._uaParserResult = new UAParser().getResult()\n }\n })\n }\n if (config.handleSourceMaps && baseUrl) {\n _loadScript(`${baseUrl}/vendor/source-map.min.js`)\n }\n}\n\n/**\n * Initialize Scout error tracking.\n *\n * @param {Object} scopeOptions - { app, project, version, environment, user }\n * @param {Object} configOptions - { endpoint, token, sampleRate, debug, ... }\n */\nexport function init(scopeOptions = {}, configOptions = {}) {\n // Extract user from scope if provided\n if (scopeOptions.user) {\n userContext = scopeOptions.user\n delete scopeOptions.user\n }\n\n if (initialized) {\n scope = { ...scope, ...scopeOptions }\n config = { ...config, ...configOptions }\n return\n }\n\n scope = { ...scope, ...scopeOptions }\n config = { ...config, ...configOptions }\n initialized = true\n\n if (typeof window !== 'undefined') {\n setupListeners()\n }\n}\n\n// Expose window.Scout immediately on load (before init is called)\n// This overwrites the ES5 no-op stub with real methods\nif (typeof window !== 'undefined') {\n window.Scout = {\n init,\n setScope: (s) => { scope = { ...scope, ...s } },\n setConfig: (c) => { config = { ...config, ...c } },\n setUser,\n setContext,\n setTag,\n addBreadcrumb: _addBreadcrumb,\n error: captureError,\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "defaultConfig", "config", "__spreadValues", "_a", "scope", "userInteractions", "pageloadId", "initialized", "userContext", "customContext", "breadcrumbs", "MAX_BREADCRUMBS", "_consoleWarn", "_consoleLog", "generateId", "prefix", "getIds", "userId", "sessionId", "pageloadId", "getBrowser", "_a", "_b", "_c", "ua", "b", "getOS", "o", "captureBrowserDetails", "_d", "_e", "_f", "_g", "_h", "_i", "_j", "conn", "userInteractions", "shouldIgnoreError", "msg", "config", "pattern", "postData", "url", "data", "controller", "timeout", "headers", "argsToString", "args", "fmt", "rest", "m", "v", "_loadScript", "src", "onload", "s", "resolveSourceMap", "sourceUrl", "lineno", "colno", "__async", "jsResponse", "jsCode", "inlineMatch", "externalMatch", "sourceMapData", "mapURL", "mapResponse", "pos", "sourceIndex", "snippet", "e", "_addBreadcrumb", "crumb", "breadcrumbs", "__spreadValues", "MAX_BREADCRUMBS", "KNOWN_EVENT_FIELDS", "pushErrorEvent", "obj", "promoted", "k", "lines", "filtered", "i", "stack", "match", "inlineContext", "mergedContext", "customContext", "details", "event", "scope", "userContext", "resolved", "enriched", "__spreadProps", "captureError", "setUser", "user", "setContext", "ctx", "setTag", "key", "value", "setupListeners", "config", "e", "userInteractions", "el", "tag", "text", "_addBreadcrumb", "lastScroll", "now", "origPushState", "origFetch", "input", "init", "url", "method", "start", "response", "err", "origOpen", "origSend", "self", "event", "__async", "errorTrace", "shouldIgnoreError", "pushErrorEvent", "_consoleWarn", "error", "args", "argsToString", "baseUrl", "_loadScript", "scopeOptions", "configOptions", "userContext", "initialized", "scope", "__spreadValues", "s", "c", "setUser", "setContext", "setTag", "captureError", "ScoutErrorBoundary", "React", "props", "error", "errorInfo", "captureError"]
7
7
  }
@@ -1,4 +1,4 @@
1
- (()=>{var $=Object.defineProperty,H=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var I=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,W=Object.prototype.propertyIsEnumerable;var T=(e,s,t)=>s in e?$(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,l=(e,s)=>{for(var t in s||(s={}))B.call(s,t)&&T(e,t,s[t]);if(I)for(var t of I(s))W.call(s,t)&&T(e,t,s[t]);return e},x=(e,s)=>H(e,F(s));var h=(e,s,t)=>new Promise((o,i)=>{var n=c=>{try{u(t.next(c))}catch(f){i(f)}},r=c=>{try{u(t.throw(c))}catch(f){i(f)}},u=c=>c.done?o(c.value):Promise.resolve(c.value).then(n,r);u((t=t.apply(e,s)).next())});var X={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},a=l({},X),N,p={environment:typeof window!="undefined"&&((N=window.location)==null?void 0:N.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.3.2",project:null,release:null,version:null,app:null},_={clicks:0,scrolls:0},k=null,U=!1,M=null,w={},E=[],j=30;var S=console.warn;var P=console.log;function R(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function V(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",R("user")),localStorage.getItem("__scoutUserId")),s=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",R("session")),sessionStorage.getItem("__scoutSessionId"));return k=k||R("pageload"),{pageloadId:k,userId:e,sessionId:s}}function q(){var t,o,i;if((o=(t=window._uaParserResult)==null?void 0:t.browser)!=null&&o.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((i=[{p:/Chrome.*Mobile/,n:"Chrome Mobile"},{p:/Chrome/,n:"Chrome"},{p:/Firefox.*Mobile/,n:"Firefox Mobile"},{p:/Firefox/,n:"Firefox"},{p:/Safari.*Mobile/,n:"Safari Mobile"},{p:/Safari/,n:"Safari"},{p:/MSIE|Trident/,n:"Internet Explorer"},{p:/Edge/,n:"Edge"}].find(n=>e.match(n.p)))==null?void 0:i.n)||"Unknown"}function z(){var t,o,i;if((o=(t=window._uaParserResult)==null?void 0:t.os)!=null&&o.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((i=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(n=>e.match(n.p)))==null?void 0:i.n)||"Unknown"}function J(){var s,t,o,i,n,r,u,c,f,d;let e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:e?e.effectiveType:"unknown",userAgent:navigator.userAgent,width:window.innerWidth,height:window.innerHeight,screenWidth:screen.width,screenHeight:screen.height,errorTimestamp:Date.now(),timeLocale:Intl.DateTimeFormat().resolvedOptions().timeZone,browserLocale:navigator.language||navigator.userLanguage,sessionTime:Math.round(performance.now()/1e3),deviceMemory:navigator.deviceMemory||"unknown",timezoneOffset:new Date().getTimezoneOffset(),cookiesEnabled:navigator.cookieEnabled,url:window.location.href,host:window.location.host,referrer:document.referrer,browser:q(),browserVersion:((t=(s=window._uaParserResult)==null?void 0:s.browser)==null?void 0:t.version)||null,os:z(),osVersion:((i=(o=window._uaParserResult)==null?void 0:o.os)==null?void 0:i.version)||null,deviceType:((r=(n=window._uaParserResult)==null?void 0:n.device)==null?void 0:r.type)||null,deviceModel:((c=(u=window._uaParserResult)==null?void 0:u.device)==null?void 0:c.model)||null,deviceVendor:((d=(f=window._uaParserResult)==null?void 0:f.device)==null?void 0:d.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:_.clicks,userScrolls:_.scrolls}}function v(e){return!a.ignoreErrors||!Array.isArray(a.ignoreErrors)?!1:a.ignoreErrors.some(s=>typeof s=="string"?e.includes(s):s instanceof RegExp?s.test(e):!1)}function D(e,s){let t=new AbortController,o=setTimeout(()=>t.abort(),5e3),i={"Content-Type":"application/json"};return a.token&&(i["X-Ingest-Token"]=a.token),fetch(e,{method:"POST",headers:i,body:JSON.stringify(s),signal:t.signal}).then(n=>(clearTimeout(o),n)).catch(()=>{clearTimeout(o)})}function y(e){let s=(e[0]||"")+"",t=[...e];return s.replace(/%[sdj]/g,o=>{let i=t.shift();return o==="%s"?String(i):o==="%d"?Number(i):o==="%j"?JSON.stringify(i):o})}function A(e,s){let t=document.createElement("script");t.src=e,t.async=!0,s&&(t.onload=s),document.head.appendChild(t)}function G(e,s,t){return h(this,null,function*(){var o;try{let i=yield fetch(e);if(!i.ok)return null;let n=yield i.text(),r=n.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),u=n.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(r)c=JSON.parse(atob(r[1]));else if(u){let O=new URL(u[1],e).href,b=yield fetch(O);if(!b.ok)return null;c=yield b.json()}else return null;if(!((o=window.sourceMap)!=null&&o.SourceMapConsumer))return null;let d=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:s,column:t});if(!d.source)return null;let C=c.sources.indexOf(d.source),L=null;return c.sourcesContent&&c.sourcesContent[C]&&(L=c.sourcesContent[C]),{originalSource:d.source,originalLine:d.line,originalColumn:d.column,originalName:d.name,snippet:L}}catch(i){return null}})}function g(e){E.push(l({timestamp:Date.now()},e)),E.length>j&&E.shift()}function m(e){return h(this,null,function*(){let s=a.browserDetails?J():{},t=Object.assign(e,s,p,V());if(M&&(t.user=M),Object.keys(w).length&&(t.context=l({},w)),t.breadcrumbs=E.slice(),a.sampleRate&&Math.random()<1-parseFloat(a.sampleRate)){a.debug&&P("[Scout] Suppressed by sampling");return}if(a.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let o=e.errorTrace.split(`
2
- `),i=[o[0]];for(let n=1;n<o.length;n++)!o[n].includes("/scout")&&!o[n].includes("scout.js")&&!o[n].includes("scout-error")&&i.push(o[n]);i.length>1&&(e.errorTrace=i.join(`
3
- `))}catch(o){}if((e.errorTrace||e.stack)&&!e.source)try{let o=e.errorTrace||e.stack,i=o?o.split(`
4
- `):[];for(let n=1;n<i.length;n++){let r=i[n].trim().match(/(http.*?):(\d+):(\d+)/);if(r){e.source=r[1],e.lineno=parseInt(r[2],10),e.colno=parseInt(r[3],10);break}}}catch(o){}if(a.debug&&P("[Scout] Sending:",t),a.endpoint&&D(a.endpoint,t),a.handleSourceMaps&&e.source&&e.lineno)try{let o=yield G(e.source,e.lineno,e.colno||0);if(o){let i=x(l({},t),{originalSource:o.originalSource,originalLine:o.originalLine,originalColumn:o.originalColumn,originalName:o.originalName,highlightLineNumber:o.originalLine});o.snippet&&(i.snippet=o.snippet),a.endpoint&&D(a.endpoint,i)}}catch(o){}})}function K(e){a.enabled&&m(e)}function Z(e){M=e}function Q(e){w=l(l({},w),e)}function Y(e,s){w[e]=s}function te(e){g(e)}function ee(){if(a.trackUserInteractions){document.addEventListener("click",r=>{_.clicks++;let u=r.target,c=u.tagName?u.tagName.toLowerCase():"",f=(u.textContent||"").trim().slice(0,50);g({category:"click",message:c+(f?": "+f:"")})});let n=0;window.addEventListener("scroll",()=>{let r=Date.now();r-n>100&&(_.scrolls++,n=r)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),g({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{g({category:"navigation",message:window.location.href})});let s=window.fetch;window.fetch=function(n,r){let u=typeof n=="string"?n:(n==null?void 0:n.url)||"",c=(r==null?void 0:r.method)||"GET",f=Date.now();return s.apply(this,arguments).then(d=>(g({category:"fetch",message:`${c} ${u}`,data:{status:d.status,duration:Date.now()-f}}),d)).catch(d=>{throw g({category:"fetch",message:`${c} ${u}`,data:{error:d.message,duration:Date.now()-f}}),d})};let t=XMLHttpRequest.prototype.open,o=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(n,r){return this._scoutMethod=n,this._scoutUrl=r,t.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let n=this,r=Date.now();return n.addEventListener("loadend",()=>{g({category:"xhr",message:`${n._scoutMethod||"GET"} ${n._scoutUrl||""}`,data:{status:n.status,duration:Date.now()-r}})}),o.apply(this,arguments)},a.addErrorEventListener&&window.addEventListener("error",n=>h(this,null,function*(){if(a.enabled){try{let r=n.error?n.error.stack:"No stack trace available";if(v(n.message))return;a.sendErrors&&m({type:"window.onerror",message:n.message,source:n.filename,lineno:n.lineno,colno:n.colno,errorTrace:r})}catch(r){S("[Scout] Error handler failure:",r)}a.selfHealingErrors&&n.preventDefault()}})),a.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",n=>{if(a.enabled){try{let r=n.reason,u=(r==null?void 0:r.stack)||"No stack trace available";if(v((r==null?void 0:r.message)||""))return;a.sendErrors&&m({type:"Unhandled Promise Rejection",message:(r==null?void 0:r.message)||"Unhandled Promise Rejection",reason:n.reason,errorTrace:u})}catch(r){S("[Scout] Rejection handler failure:",r)}a.selfHealingErrors&&n.preventDefault()}}),a.overrideConsoleError&&(console.error=function(...n){if(a.enabled)try{let r=new Error().stack;if(v(y(n)))return;a.sendErrors&&m({type:"console.error",errorTrace:r,args:y(n)})}catch(r){S("[Scout] console.error override failure:",r)}}),a.overrideConsoleWarn&&(console.warn=function(...n){if(a.enabled)try{let r=new Error().stack;if(v(y(n)))return;a.sendErrors&&m({type:"console.warn",errorTrace:r,args:y(n)})}catch(r){S("[Scout] console.warn override failure:",r)}});let i=a.endpoint?new URL(a.endpoint).origin:"";a.loadUAParser&&a.browserDetails&&i&&A(`${i}/vendor/ua-parser.min.js`,()=>{typeof UAParser!="undefined"&&(window._uaParserResult=new UAParser().getResult())}),a.handleSourceMaps&&i&&A(`${i}/vendor/source-map.min.js`)}function ne(e={},s={}){if(e.user&&(M=e.user,delete e.user),U){p=l(l({},p),e),a=l(l({},a),s);return}p=l(l({},p),e),a=l(l({},a),s),U=!0,typeof window!="undefined"&&ee()}typeof window!="undefined"&&(window.Scout={init:ne,setScope:e=>{p=l(l({},p),e)},setConfig:e=>{a=l(l({},a),e)},setUser:Z,setContext:Q,setTag:Y,addBreadcrumb:g,error:K});})();
1
+ (()=>{var $=Object.defineProperty,F=Object.defineProperties;var H=Object.getOwnPropertyDescriptors;var I=Object.getOwnPropertySymbols;var W=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable;var T=(e,t,s)=>t in e?$(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,u=(e,t)=>{for(var s in t||(t={}))W.call(t,s)&&T(e,s,t[s]);if(I)for(var s of I(t))B.call(t,s)&&T(e,s,t[s]);return e},b=(e,t)=>F(e,H(t));var h=(e,t,s)=>new Promise((l,i)=>{var r=a=>{try{c(s.next(a))}catch(d){i(d)}},n=a=>{try{c(s.throw(a))}catch(d){i(d)}},c=a=>a.done?l(a.value):Promise.resolve(a.value).then(r,n);c((s=s.apply(e,t)).next())});var X={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},o=u({},X),A,p={environment:typeof window!="undefined"&&((A=window.location)==null?void 0:A.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.3.4",project:null,release:null,version:null,app:null},E={clicks:0,scrolls:0},C=null,U=!1,_=null,k={},v=[],V=30;var w=console.warn;var D=console.log;function M(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function q(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",M("user")),localStorage.getItem("__scoutUserId")),t=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",M("session")),sessionStorage.getItem("__scoutSessionId"));return C=C||M("pageload"),{pageloadId:C,userId:e,sessionId:t}}function z(){var s,l,i;if((l=(s=window._uaParserResult)==null?void 0:s.browser)!=null&&l.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((i=[{p:/Chrome.*Mobile/,n:"Chrome Mobile"},{p:/Chrome/,n:"Chrome"},{p:/Firefox.*Mobile/,n:"Firefox Mobile"},{p:/Firefox/,n:"Firefox"},{p:/Safari.*Mobile/,n:"Safari Mobile"},{p:/Safari/,n:"Safari"},{p:/MSIE|Trident/,n:"Internet Explorer"},{p:/Edge/,n:"Edge"}].find(r=>e.match(r.p)))==null?void 0:i.n)||"Unknown"}function J(){var s,l,i;if((l=(s=window._uaParserResult)==null?void 0:s.os)!=null&&l.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((i=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(r=>e.match(r.p)))==null?void 0:i.n)||"Unknown"}function G(){var t,s,l,i,r,n,c,a,d,f;let e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:e?e.effectiveType:"unknown",userAgent:navigator.userAgent,width:window.innerWidth,height:window.innerHeight,screenWidth:screen.width,screenHeight:screen.height,errorTimestamp:Date.now(),timeLocale:Intl.DateTimeFormat().resolvedOptions().timeZone,browserLocale:navigator.language||navigator.userLanguage,sessionTime:Math.round(performance.now()/1e3),deviceMemory:navigator.deviceMemory||"unknown",timezoneOffset:new Date().getTimezoneOffset(),cookiesEnabled:navigator.cookieEnabled,url:window.location.href,host:window.location.host,referrer:document.referrer,browser:z(),browserVersion:((s=(t=window._uaParserResult)==null?void 0:t.browser)==null?void 0:s.version)||null,os:J(),osVersion:((i=(l=window._uaParserResult)==null?void 0:l.os)==null?void 0:i.version)||null,deviceType:((n=(r=window._uaParserResult)==null?void 0:r.device)==null?void 0:n.type)||null,deviceModel:((a=(c=window._uaParserResult)==null?void 0:c.device)==null?void 0:a.model)||null,deviceVendor:((f=(d=window._uaParserResult)==null?void 0:d.device)==null?void 0:f.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:E.clicks,userScrolls:E.scrolls}}function S(e){return!o.ignoreErrors||!Array.isArray(o.ignoreErrors)?!1:o.ignoreErrors.some(t=>typeof t=="string"?e.includes(t):t instanceof RegExp?t.test(e):!1)}function P(e,t){let s=new AbortController,l=setTimeout(()=>s.abort(),5e3),i={"Content-Type":"application/json"};return o.token&&(i["X-Ingest-Token"]=o.token),fetch(e,{method:"POST",headers:i,body:JSON.stringify(t),signal:s.signal}).then(r=>(clearTimeout(l),r)).catch(()=>{clearTimeout(l)})}function y(e){let t=(e[0]||"")+"",s=[...e];return t.replace(/%[sdj]/g,l=>{let i=s.shift();return l==="%s"?String(i):l==="%d"?Number(i):l==="%j"?JSON.stringify(i):l})}function N(e,t){let s=document.createElement("script");s.src=e,s.async=!0,t&&(s.onload=t),document.head.appendChild(s)}function K(e,t,s){return h(this,null,function*(){var l;try{let i=yield fetch(e);if(!i.ok)return null;let r=yield i.text(),n=r.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),c=r.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),a;if(n)a=JSON.parse(atob(n[1]));else if(c){let O=new URL(c[1],e).href,x=yield fetch(O);if(!x.ok)return null;a=yield x.json()}else return null;if(!((l=window.sourceMap)!=null&&l.SourceMapConsumer))return null;let f=new window.sourceMap.SourceMapConsumer(a).originalPositionFor({line:t,column:s});if(!f.source)return null;let L=a.sources.indexOf(f.source),R=null;return a.sourcesContent&&a.sourcesContent[L]&&(R=a.sourcesContent[L]),{originalSource:f.source,originalLine:f.line,originalColumn:f.column,originalName:f.name,snippet:R}}catch(i){return null}})}function g(e){v.push(u({timestamp:Date.now()},e)),v.length>V&&v.shift()}var Z=new Set(["type","message","args","stack","errorTrace","source","lineno","colno","reason","snippet","highlightLineNumber","originalSource","originalLine","originalColumn","originalName","context","user","breadcrumbs","timestamp","errorTimestamp"]);function m(e){return h(this,null,function*(){e=u({},e||{});let t={};for(let n of Object.keys(e))n!=="context"&&!Z.has(n)&&(t[n]=e[n],delete e[n]);if(o.sampleRate&&Math.random()<1-parseFloat(o.sampleRate)){o.debug&&D("[Scout] Suppressed by sampling");return}if(o.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let n=e.errorTrace.split(`
2
+ `),c=[n[0]];for(let a=1;a<n.length;a++)!n[a].includes("/scout")&&!n[a].includes("scout.js")&&!n[a].includes("scout-error")&&c.push(n[a]);c.length>1&&(e.errorTrace=c.join(`
3
+ `))}catch(n){}if((e.errorTrace||e.stack)&&!e.source)try{let n=e.errorTrace||e.stack,c=n?n.split(`
4
+ `):[];for(let a=1;a<c.length;a++){let d=c[a].trim().match(/(http.*?):(\d+):(\d+)/);if(d){e.source=d[1],e.lineno=parseInt(d[2],10),e.colno=parseInt(d[3],10);break}}}catch(n){}let s=e.context&&typeof e.context=="object"?e.context:{},l=u(u(u({},k),t),s),i=o.browserDetails?G():{},r=Object.assign({},e,i,p,q());if(_&&(r.user=_),Object.keys(l).length&&(r.context=l),r.breadcrumbs=v.slice(),o.debug&&D("[Scout] Sending:",r),o.endpoint&&P(o.endpoint,r),o.handleSourceMaps&&e.source&&e.lineno)try{let n=yield K(e.source,e.lineno,e.colno||0);if(n){let c=b(u({},r),{originalSource:n.originalSource,originalLine:n.originalLine,originalColumn:n.originalColumn,originalName:n.originalName,highlightLineNumber:n.originalLine});n.snippet&&(c.snippet=n.snippet),o.endpoint&&P(o.endpoint,c)}}catch(n){}})}function Q(e){o.enabled&&m(e)}function Y(e){_=e}function j(e){k=u(u({},k),e)}function ee(e,t){k[e]=t}function oe(e){g(e)}function ne(){if(o.trackUserInteractions){document.addEventListener("click",n=>{E.clicks++;let c=n.target,a=c.tagName?c.tagName.toLowerCase():"",d=(c.textContent||"").trim().slice(0,50);g({category:"click",message:a+(d?": "+d:"")})});let r=0;window.addEventListener("scroll",()=>{let n=Date.now();n-r>100&&(E.scrolls++,r=n)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),g({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{g({category:"navigation",message:window.location.href})});let t=window.fetch;window.fetch=function(r,n){let c=typeof r=="string"?r:(r==null?void 0:r.url)||"",a=(n==null?void 0:n.method)||"GET",d=Date.now();return t.apply(this,arguments).then(f=>(g({category:"fetch",message:`${a} ${c}`,data:{status:f.status,duration:Date.now()-d}}),f)).catch(f=>{throw g({category:"fetch",message:`${a} ${c}`,data:{error:f.message,duration:Date.now()-d}}),f})};let s=XMLHttpRequest.prototype.open,l=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(r,n){return this._scoutMethod=r,this._scoutUrl=n,s.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let r=this,n=Date.now();return r.addEventListener("loadend",()=>{g({category:"xhr",message:`${r._scoutMethod||"GET"} ${r._scoutUrl||""}`,data:{status:r.status,duration:Date.now()-n}})}),l.apply(this,arguments)},o.addErrorEventListener&&window.addEventListener("error",r=>h(this,null,function*(){if(o.enabled){try{let n=r.error?r.error.stack:"No stack trace available";if(S(r.message))return;o.sendErrors&&m({type:"window.onerror",message:r.message,source:r.filename,lineno:r.lineno,colno:r.colno,errorTrace:n})}catch(n){w("[Scout] Error handler failure:",n)}o.selfHealingErrors&&r.preventDefault()}})),o.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",r=>{if(o.enabled){try{let n=r.reason,c=(n==null?void 0:n.stack)||"No stack trace available";if(S((n==null?void 0:n.message)||""))return;o.sendErrors&&m({type:"Unhandled Promise Rejection",message:(n==null?void 0:n.message)||"Unhandled Promise Rejection",reason:r.reason,errorTrace:c})}catch(n){w("[Scout] Rejection handler failure:",n)}o.selfHealingErrors&&r.preventDefault()}}),o.overrideConsoleError&&(console.error=function(...r){if(o.enabled)try{let n=new Error().stack;if(S(y(r)))return;o.sendErrors&&m({type:"console.error",errorTrace:n,args:y(r)})}catch(n){w("[Scout] console.error override failure:",n)}}),o.overrideConsoleWarn&&(console.warn=function(...r){if(o.enabled)try{let n=new Error().stack;if(S(y(r)))return;o.sendErrors&&m({type:"console.warn",errorTrace:n,args:y(r)})}catch(n){w("[Scout] console.warn override failure:",n)}});let i=o.endpoint?new URL(o.endpoint).origin:"";o.loadUAParser&&o.browserDetails&&i&&N(`${i}/vendor/ua-parser.min.js`,()=>{typeof UAParser!="undefined"&&(window._uaParserResult=new UAParser().getResult())}),o.handleSourceMaps&&i&&N(`${i}/vendor/source-map.min.js`)}function re(e={},t={}){if(e.user&&(_=e.user,delete e.user),U){p=u(u({},p),e),o=u(u({},o),t);return}p=u(u({},p),e),o=u(u({},o),t),U=!0,typeof window!="undefined"&&ne()}typeof window!="undefined"&&(window.Scout={init:re,setScope:e=>{p=u(u({},p),e)},setConfig:e=>{o=u(u({},o),e)},setUser:Y,setContext:j,setTag:ee,addBreadcrumb:g,error:Q});})();
package/dist/vue.cjs CHANGED
@@ -1,5 +1,5 @@
1
- var h=Object.defineProperty,B=Object.defineProperties,W=Object.getOwnPropertyDescriptor,X=Object.getOwnPropertyDescriptors,V=Object.getOwnPropertyNames,x=Object.getOwnPropertySymbols;var P=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var U=(e,o,r)=>o in e?h(e,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[o]=r,l=(e,o)=>{for(var r in o||(o={}))P.call(o,r)&&U(e,r,o[r]);if(x)for(var r of x(o))j.call(o,r)&&U(e,r,o[r]);return e},D=(e,o)=>B(e,X(o));var q=(e,o)=>{for(var r in o)h(e,r,{get:o[r],enumerable:!0})},z=(e,o,r,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let s of V(o))!P.call(e,s)&&s!==r&&h(e,s,{get:()=>o[s],enumerable:!(t=W(o,s))||t.enumerable});return e};var J=e=>z(h({},"__esModule",{value:!0}),e);var S=(e,o,r)=>new Promise((t,s)=>{var n=c=>{try{u(r.next(c))}catch(f){s(f)}},a=c=>{try{u(r.throw(c))}catch(f){s(f)}},u=c=>c.done?t(c.value):Promise.resolve(c.value).then(n,a);u((r=r.apply(e,o)).next())});var ce={};q(ce,{ScoutVue:()=>ie});module.exports=J(ce);var G={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},i=l({},G),H,g={environment:typeof window!="undefined"&&((H=window.location)==null?void 0:H.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.3.2",project:null,release:null,version:null,app:null},v={clicks:0,scrolls:0},C=null,A=!1,M=null,m={},k=[],K=30;var y=console.warn;var $=console.log;function L(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function Z(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",L("user")),localStorage.getItem("__scoutUserId")),o=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",L("session")),sessionStorage.getItem("__scoutSessionId"));return C=C||L("pageload"),{pageloadId:C,userId:e,sessionId:o}}function Q(){var r,t,s;if((t=(r=window._uaParserResult)==null?void 0:r.browser)!=null&&t.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((s=[{p:/Chrome.*Mobile/,n:"Chrome Mobile"},{p:/Chrome/,n:"Chrome"},{p:/Firefox.*Mobile/,n:"Firefox Mobile"},{p:/Firefox/,n:"Firefox"},{p:/Safari.*Mobile/,n:"Safari Mobile"},{p:/Safari/,n:"Safari"},{p:/MSIE|Trident/,n:"Internet Explorer"},{p:/Edge/,n:"Edge"}].find(n=>e.match(n.p)))==null?void 0:s.n)||"Unknown"}function Y(){var r,t,s;if((t=(r=window._uaParserResult)==null?void 0:r.os)!=null&&t.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((s=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(n=>e.match(n.p)))==null?void 0:s.n)||"Unknown"}function ee(){var o,r,t,s,n,a,u,c,f,d;let e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:e?e.effectiveType:"unknown",userAgent:navigator.userAgent,width:window.innerWidth,height:window.innerHeight,screenWidth:screen.width,screenHeight:screen.height,errorTimestamp:Date.now(),timeLocale:Intl.DateTimeFormat().resolvedOptions().timeZone,browserLocale:navigator.language||navigator.userLanguage,sessionTime:Math.round(performance.now()/1e3),deviceMemory:navigator.deviceMemory||"unknown",timezoneOffset:new Date().getTimezoneOffset(),cookiesEnabled:navigator.cookieEnabled,url:window.location.href,host:window.location.host,referrer:document.referrer,browser:Q(),browserVersion:((r=(o=window._uaParserResult)==null?void 0:o.browser)==null?void 0:r.version)||null,os:Y(),osVersion:((s=(t=window._uaParserResult)==null?void 0:t.os)==null?void 0:s.version)||null,deviceType:((a=(n=window._uaParserResult)==null?void 0:n.device)==null?void 0:a.type)||null,deviceModel:((c=(u=window._uaParserResult)==null?void 0:u.device)==null?void 0:c.model)||null,deviceVendor:((d=(f=window._uaParserResult)==null?void 0:f.device)==null?void 0:d.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:v.clicks,userScrolls:v.scrolls}}function E(e){return!i.ignoreErrors||!Array.isArray(i.ignoreErrors)?!1:i.ignoreErrors.some(o=>typeof o=="string"?e.includes(o):o instanceof RegExp?o.test(e):!1)}function N(e,o){let r=new AbortController,t=setTimeout(()=>r.abort(),5e3),s={"Content-Type":"application/json"};return i.token&&(s["X-Ingest-Token"]=i.token),fetch(e,{method:"POST",headers:s,body:JSON.stringify(o),signal:r.signal}).then(n=>(clearTimeout(t),n)).catch(()=>{clearTimeout(t)})}function _(e){let o=(e[0]||"")+"",r=[...e];return o.replace(/%[sdj]/g,t=>{let s=r.shift();return t==="%s"?String(s):t==="%d"?Number(s):t==="%j"?JSON.stringify(s):t})}function O(e,o){let r=document.createElement("script");r.src=e,r.async=!0,o&&(r.onload=o),document.head.appendChild(r)}function ne(e,o,r){return S(this,null,function*(){var t;try{let s=yield fetch(e);if(!s.ok)return null;let n=yield s.text(),a=n.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),u=n.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(a)c=JSON.parse(atob(a[1]));else if(u){let F=new URL(u[1],e).href,T=yield fetch(F);if(!T.ok)return null;c=yield T.json()}else return null;if(!((t=window.sourceMap)!=null&&t.SourceMapConsumer))return null;let d=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:o,column:r});if(!d.source)return null;let b=c.sources.indexOf(d.source),I=null;return c.sourcesContent&&c.sourcesContent[b]&&(I=c.sourcesContent[b]),{originalSource:d.source,originalLine:d.line,originalColumn:d.column,originalName:d.name,snippet:I}}catch(s){return null}})}function p(e){k.push(l({timestamp:Date.now()},e)),k.length>K&&k.shift()}function w(e){return S(this,null,function*(){let o=i.browserDetails?ee():{},r=Object.assign(e,o,g,Z());if(M&&(r.user=M),Object.keys(m).length&&(r.context=l({},m)),r.breadcrumbs=k.slice(),i.sampleRate&&Math.random()<1-parseFloat(i.sampleRate)){i.debug&&$("[Scout] Suppressed by sampling");return}if(i.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let t=e.errorTrace.split(`
2
- `),s=[t[0]];for(let n=1;n<t.length;n++)!t[n].includes("/scout")&&!t[n].includes("scout.js")&&!t[n].includes("scout-error")&&s.push(t[n]);s.length>1&&(e.errorTrace=s.join(`
3
- `))}catch(t){}if((e.errorTrace||e.stack)&&!e.source)try{let t=e.errorTrace||e.stack,s=t?t.split(`
4
- `):[];for(let n=1;n<s.length;n++){let a=s[n].trim().match(/(http.*?):(\d+):(\d+)/);if(a){e.source=a[1],e.lineno=parseInt(a[2],10),e.colno=parseInt(a[3],10);break}}}catch(t){}if(i.debug&&$("[Scout] Sending:",r),i.endpoint&&N(i.endpoint,r),i.handleSourceMaps&&e.source&&e.lineno)try{let t=yield ne(e.source,e.lineno,e.colno||0);if(t){let s=D(l({},r),{originalSource:t.originalSource,originalLine:t.originalLine,originalColumn:t.originalColumn,originalName:t.originalName,highlightLineNumber:t.originalLine});t.snippet&&(s.snippet=t.snippet),i.endpoint&&N(i.endpoint,s)}}catch(t){}})}function R(e){i.enabled&&w(e)}function re(e){M=e}function oe(e){m=l(l({},m),e)}function te(e,o){m[e]=o}function se(){if(i.trackUserInteractions){document.addEventListener("click",a=>{v.clicks++;let u=a.target,c=u.tagName?u.tagName.toLowerCase():"",f=(u.textContent||"").trim().slice(0,50);p({category:"click",message:c+(f?": "+f:"")})});let n=0;window.addEventListener("scroll",()=>{let a=Date.now();a-n>100&&(v.scrolls++,n=a)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),p({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{p({category:"navigation",message:window.location.href})});let o=window.fetch;window.fetch=function(n,a){let u=typeof n=="string"?n:(n==null?void 0:n.url)||"",c=(a==null?void 0:a.method)||"GET",f=Date.now();return o.apply(this,arguments).then(d=>(p({category:"fetch",message:`${c} ${u}`,data:{status:d.status,duration:Date.now()-f}}),d)).catch(d=>{throw p({category:"fetch",message:`${c} ${u}`,data:{error:d.message,duration:Date.now()-f}}),d})};let r=XMLHttpRequest.prototype.open,t=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(n,a){return this._scoutMethod=n,this._scoutUrl=a,r.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let n=this,a=Date.now();return n.addEventListener("loadend",()=>{p({category:"xhr",message:`${n._scoutMethod||"GET"} ${n._scoutUrl||""}`,data:{status:n.status,duration:Date.now()-a}})}),t.apply(this,arguments)},i.addErrorEventListener&&window.addEventListener("error",n=>S(this,null,function*(){if(i.enabled){try{let a=n.error?n.error.stack:"No stack trace available";if(E(n.message))return;i.sendErrors&&w({type:"window.onerror",message:n.message,source:n.filename,lineno:n.lineno,colno:n.colno,errorTrace:a})}catch(a){y("[Scout] Error handler failure:",a)}i.selfHealingErrors&&n.preventDefault()}})),i.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",n=>{if(i.enabled){try{let a=n.reason,u=(a==null?void 0:a.stack)||"No stack trace available";if(E((a==null?void 0:a.message)||""))return;i.sendErrors&&w({type:"Unhandled Promise Rejection",message:(a==null?void 0:a.message)||"Unhandled Promise Rejection",reason:n.reason,errorTrace:u})}catch(a){y("[Scout] Rejection handler failure:",a)}i.selfHealingErrors&&n.preventDefault()}}),i.overrideConsoleError&&(console.error=function(...n){if(i.enabled)try{let a=new Error().stack;if(E(_(n)))return;i.sendErrors&&w({type:"console.error",errorTrace:a,args:_(n)})}catch(a){y("[Scout] console.error override failure:",a)}}),i.overrideConsoleWarn&&(console.warn=function(...n){if(i.enabled)try{let a=new Error().stack;if(E(_(n)))return;i.sendErrors&&w({type:"console.warn",errorTrace:a,args:_(n)})}catch(a){y("[Scout] console.warn override failure:",a)}});let s=i.endpoint?new URL(i.endpoint).origin:"";i.loadUAParser&&i.browserDetails&&s&&O(`${s}/vendor/ua-parser.min.js`,()=>{typeof UAParser!="undefined"&&(window._uaParserResult=new UAParser().getResult())}),i.handleSourceMaps&&s&&O(`${s}/vendor/source-map.min.js`)}function ae(e={},o={}){if(e.user&&(M=e.user,delete e.user),A){g=l(l({},g),e),i=l(l({},i),o);return}g=l(l({},g),e),i=l(l({},i),o),A=!0,typeof window!="undefined"&&se()}typeof window!="undefined"&&(window.Scout={init:ae,setScope:e=>{g=l(l({},g),e)},setConfig:e=>{i=l(l({},i),e)},setUser:re,setContext:oe,setTag:te,addBreadcrumb:p,error:R});var ie={install(e){e.config.errorHandler=(o,r,t)=>{var s,n;R({message:o.message,stack:o.stack,errorTrace:o.stack,component:((s=r==null?void 0:r.$options)==null?void 0:s.name)||((n=r==null?void 0:r.$options)==null?void 0:n.__name)||"Anonymous",type:"vue-error-handler",info:t})},e.config.warnHandler=(o,r,t)=>{var s,n;R({message:o,component:((s=r==null?void 0:r.$options)==null?void 0:s.name)||((n=r==null?void 0:r.$options)==null?void 0:n.__name)||"Anonymous",type:"vue-warn-handler",errorTrace:t})}}};
1
+ var h=Object.defineProperty,W=Object.defineProperties,B=Object.getOwnPropertyDescriptor,V=Object.getOwnPropertyDescriptors,X=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols;var D=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable;var U=(e,r,o)=>r in e?h(e,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[r]=o,u=(e,r)=>{for(var o in r||(r={}))D.call(r,o)&&U(e,o,r[o]);if(b)for(var o of b(r))q.call(r,o)&&U(e,o,r[o]);return e},P=(e,r)=>W(e,V(r));var z=(e,r)=>{for(var o in r)h(e,o,{get:r[o],enumerable:!0})},J=(e,r,o,c)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of X(r))!D.call(e,a)&&a!==o&&h(e,a,{get:()=>r[a],enumerable:!(c=B(r,a))||c.enumerable});return e};var G=e=>J(h({},"__esModule",{value:!0}),e);var w=(e,r,o)=>new Promise((c,a)=>{var t=i=>{try{l(o.next(i))}catch(d){a(d)}},n=i=>{try{l(o.throw(i))}catch(d){a(d)}},l=i=>i.done?c(i.value):Promise.resolve(i.value).then(t,n);l((o=o.apply(e,r)).next())});var le={};z(le,{ScoutVue:()=>ce});module.exports=G(le);var K={trackUserInteractions:!0,selfHealingErrors:!1,attachStacktrace:!0,handleSourceMaps:!0,browserDetails:!0,warnOnCapture:!1,loadUAParser:!0,ignoreErrors:null,sendErrors:!0,sampleRate:1,enabled:!0,debug:!1,endpoint:"",token:null,overrideOnError:!1,overrideOnUnhandledRejection:!1,addErrorEventListener:!0,addUnhandledRejectionEventListener:!0,overrideConsoleLog:!1,overrideConsoleWarn:!1,overrideConsoleInfo:!1,overrideConsoleError:!0},s=u({},K),H,g={environment:typeof window!="undefined"&&((H=window.location)==null?void 0:H.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.3.4",project:null,release:null,version:null,app:null},k={clicks:0,scrolls:0},L=null,N=!1,v=null,C={},_=[],Z=30;var S=console.warn;var A=console.log;function R(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function Q(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",R("user")),localStorage.getItem("__scoutUserId")),r=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",R("session")),sessionStorage.getItem("__scoutSessionId"));return L=L||R("pageload"),{pageloadId:L,userId:e,sessionId:r}}function Y(){var o,c,a;if((c=(o=window._uaParserResult)==null?void 0:o.browser)!=null&&c.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((a=[{p:/Chrome.*Mobile/,n:"Chrome Mobile"},{p:/Chrome/,n:"Chrome"},{p:/Firefox.*Mobile/,n:"Firefox Mobile"},{p:/Firefox/,n:"Firefox"},{p:/Safari.*Mobile/,n:"Safari Mobile"},{p:/Safari/,n:"Safari"},{p:/MSIE|Trident/,n:"Internet Explorer"},{p:/Edge/,n:"Edge"}].find(t=>e.match(t.p)))==null?void 0:a.n)||"Unknown"}function j(){var o,c,a;if((c=(o=window._uaParserResult)==null?void 0:o.os)!=null&&c.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((a=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(t=>e.match(t.p)))==null?void 0:a.n)||"Unknown"}function ee(){var r,o,c,a,t,n,l,i,d,f;let e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:e?e.effectiveType:"unknown",userAgent:navigator.userAgent,width:window.innerWidth,height:window.innerHeight,screenWidth:screen.width,screenHeight:screen.height,errorTimestamp:Date.now(),timeLocale:Intl.DateTimeFormat().resolvedOptions().timeZone,browserLocale:navigator.language||navigator.userLanguage,sessionTime:Math.round(performance.now()/1e3),deviceMemory:navigator.deviceMemory||"unknown",timezoneOffset:new Date().getTimezoneOffset(),cookiesEnabled:navigator.cookieEnabled,url:window.location.href,host:window.location.host,referrer:document.referrer,browser:Y(),browserVersion:((o=(r=window._uaParserResult)==null?void 0:r.browser)==null?void 0:o.version)||null,os:j(),osVersion:((a=(c=window._uaParserResult)==null?void 0:c.os)==null?void 0:a.version)||null,deviceType:((n=(t=window._uaParserResult)==null?void 0:t.device)==null?void 0:n.type)||null,deviceModel:((i=(l=window._uaParserResult)==null?void 0:l.device)==null?void 0:i.model)||null,deviceVendor:((f=(d=window._uaParserResult)==null?void 0:d.device)==null?void 0:f.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:k.clicks,userScrolls:k.scrolls}}function y(e){return!s.ignoreErrors||!Array.isArray(s.ignoreErrors)?!1:s.ignoreErrors.some(r=>typeof r=="string"?e.includes(r):r instanceof RegExp?r.test(e):!1)}function O(e,r){let o=new AbortController,c=setTimeout(()=>o.abort(),5e3),a={"Content-Type":"application/json"};return s.token&&(a["X-Ingest-Token"]=s.token),fetch(e,{method:"POST",headers:a,body:JSON.stringify(r),signal:o.signal}).then(t=>(clearTimeout(c),t)).catch(()=>{clearTimeout(c)})}function E(e){let r=(e[0]||"")+"",o=[...e];return r.replace(/%[sdj]/g,c=>{let a=o.shift();return c==="%s"?String(a):c==="%d"?Number(a):c==="%j"?JSON.stringify(a):c})}function $(e,r){let o=document.createElement("script");o.src=e,o.async=!0,r&&(o.onload=r),document.head.appendChild(o)}function ne(e,r,o){return w(this,null,function*(){var c;try{let a=yield fetch(e);if(!a.ok)return null;let t=yield a.text(),n=t.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),l=t.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),i;if(n)i=JSON.parse(atob(n[1]));else if(l){let F=new URL(l[1],e).href,I=yield fetch(F);if(!I.ok)return null;i=yield I.json()}else return null;if(!((c=window.sourceMap)!=null&&c.SourceMapConsumer))return null;let f=new window.sourceMap.SourceMapConsumer(i).originalPositionFor({line:r,column:o});if(!f.source)return null;let x=i.sources.indexOf(f.source),T=null;return i.sourcesContent&&i.sourcesContent[x]&&(T=i.sourcesContent[x]),{originalSource:f.source,originalLine:f.line,originalColumn:f.column,originalName:f.name,snippet:T}}catch(a){return null}})}function p(e){_.push(u({timestamp:Date.now()},e)),_.length>Z&&_.shift()}var re=new Set(["type","message","args","stack","errorTrace","source","lineno","colno","reason","snippet","highlightLineNumber","originalSource","originalLine","originalColumn","originalName","context","user","breadcrumbs","timestamp","errorTimestamp"]);function m(e){return w(this,null,function*(){e=u({},e||{});let r={};for(let n of Object.keys(e))n!=="context"&&!re.has(n)&&(r[n]=e[n],delete e[n]);if(s.sampleRate&&Math.random()<1-parseFloat(s.sampleRate)){s.debug&&A("[Scout] Suppressed by sampling");return}if(s.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let n=e.errorTrace.split(`
2
+ `),l=[n[0]];for(let i=1;i<n.length;i++)!n[i].includes("/scout")&&!n[i].includes("scout.js")&&!n[i].includes("scout-error")&&l.push(n[i]);l.length>1&&(e.errorTrace=l.join(`
3
+ `))}catch(n){}if((e.errorTrace||e.stack)&&!e.source)try{let n=e.errorTrace||e.stack,l=n?n.split(`
4
+ `):[];for(let i=1;i<l.length;i++){let d=l[i].trim().match(/(http.*?):(\d+):(\d+)/);if(d){e.source=d[1],e.lineno=parseInt(d[2],10),e.colno=parseInt(d[3],10);break}}}catch(n){}let o=e.context&&typeof e.context=="object"?e.context:{},c=u(u(u({},C),r),o),a=s.browserDetails?ee():{},t=Object.assign({},e,a,g,Q());if(v&&(t.user=v),Object.keys(c).length&&(t.context=c),t.breadcrumbs=_.slice(),s.debug&&A("[Scout] Sending:",t),s.endpoint&&O(s.endpoint,t),s.handleSourceMaps&&e.source&&e.lineno)try{let n=yield ne(e.source,e.lineno,e.colno||0);if(n){let l=P(u({},t),{originalSource:n.originalSource,originalLine:n.originalLine,originalColumn:n.originalColumn,originalName:n.originalName,highlightLineNumber:n.originalLine});n.snippet&&(l.snippet=n.snippet),s.endpoint&&O(s.endpoint,l)}}catch(n){}})}function M(e){s.enabled&&m(e)}function te(e){v=e}function oe(e){C=u(u({},C),e)}function se(e,r){C[e]=r}function ae(){if(s.trackUserInteractions){document.addEventListener("click",n=>{k.clicks++;let l=n.target,i=l.tagName?l.tagName.toLowerCase():"",d=(l.textContent||"").trim().slice(0,50);p({category:"click",message:i+(d?": "+d:"")})});let t=0;window.addEventListener("scroll",()=>{let n=Date.now();n-t>100&&(k.scrolls++,t=n)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),p({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{p({category:"navigation",message:window.location.href})});let r=window.fetch;window.fetch=function(t,n){let l=typeof t=="string"?t:(t==null?void 0:t.url)||"",i=(n==null?void 0:n.method)||"GET",d=Date.now();return r.apply(this,arguments).then(f=>(p({category:"fetch",message:`${i} ${l}`,data:{status:f.status,duration:Date.now()-d}}),f)).catch(f=>{throw p({category:"fetch",message:`${i} ${l}`,data:{error:f.message,duration:Date.now()-d}}),f})};let o=XMLHttpRequest.prototype.open,c=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(t,n){return this._scoutMethod=t,this._scoutUrl=n,o.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let t=this,n=Date.now();return t.addEventListener("loadend",()=>{p({category:"xhr",message:`${t._scoutMethod||"GET"} ${t._scoutUrl||""}`,data:{status:t.status,duration:Date.now()-n}})}),c.apply(this,arguments)},s.addErrorEventListener&&window.addEventListener("error",t=>w(this,null,function*(){if(s.enabled){try{let n=t.error?t.error.stack:"No stack trace available";if(y(t.message))return;s.sendErrors&&m({type:"window.onerror",message:t.message,source:t.filename,lineno:t.lineno,colno:t.colno,errorTrace:n})}catch(n){S("[Scout] Error handler failure:",n)}s.selfHealingErrors&&t.preventDefault()}})),s.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",t=>{if(s.enabled){try{let n=t.reason,l=(n==null?void 0:n.stack)||"No stack trace available";if(y((n==null?void 0:n.message)||""))return;s.sendErrors&&m({type:"Unhandled Promise Rejection",message:(n==null?void 0:n.message)||"Unhandled Promise Rejection",reason:t.reason,errorTrace:l})}catch(n){S("[Scout] Rejection handler failure:",n)}s.selfHealingErrors&&t.preventDefault()}}),s.overrideConsoleError&&(console.error=function(...t){if(s.enabled)try{let n=new Error().stack;if(y(E(t)))return;s.sendErrors&&m({type:"console.error",errorTrace:n,args:E(t)})}catch(n){S("[Scout] console.error override failure:",n)}}),s.overrideConsoleWarn&&(console.warn=function(...t){if(s.enabled)try{let n=new Error().stack;if(y(E(t)))return;s.sendErrors&&m({type:"console.warn",errorTrace:n,args:E(t)})}catch(n){S("[Scout] console.warn override failure:",n)}});let a=s.endpoint?new URL(s.endpoint).origin:"";s.loadUAParser&&s.browserDetails&&a&&$(`${a}/vendor/ua-parser.min.js`,()=>{typeof UAParser!="undefined"&&(window._uaParserResult=new UAParser().getResult())}),s.handleSourceMaps&&a&&$(`${a}/vendor/source-map.min.js`)}function ie(e={},r={}){if(e.user&&(v=e.user,delete e.user),N){g=u(u({},g),e),s=u(u({},s),r);return}g=u(u({},g),e),s=u(u({},s),r),N=!0,typeof window!="undefined"&&ae()}typeof window!="undefined"&&(window.Scout={init:ie,setScope:e=>{g=u(u({},g),e)},setConfig:e=>{s=u(u({},s),e)},setUser:te,setContext:oe,setTag:se,addBreadcrumb:p,error:M});var ce={install(e){e.config.errorHandler=(r,o,c)=>{var a,t;M({message:r.message,stack:r.stack,errorTrace:r.stack,component:((a=o==null?void 0:o.$options)==null?void 0:a.name)||((t=o==null?void 0:o.$options)==null?void 0:t.__name)||"Anonymous",type:"vue-error-handler",info:c})},e.config.warnHandler=(r,o,c)=>{var a,t;M({message:r,component:((a=o==null?void 0:o.$options)==null?void 0:a.name)||((t=o==null?void 0:o.$options)==null?void 0:t.__name)||"Anonymous",type:"vue-warn-handler",errorTrace:c})}}};
5
5
  //# sourceMappingURL=vue.cjs.map