scout-error 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
- var _=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var O=Object.prototype.hasOwnProperty;var $=(e,s)=>{for(var n in s)_(e,n,{get:s[n],enumerable:!0})},H=(e,s,n,o)=>{if(s&&typeof s=="object"||typeof s=="function")for(let a of N(s))!O.call(e,a)&&a!==n&&_(e,a,{get:()=>s[a],enumerable:!(o=A(s,a))||o.enumerable});return e};var F=e=>H(_({},"__esModule",{value:!0}),e);var Q={};$(Q,{addBreadcrumb:()=>G,captureError:()=>T,init:()=>Z,setContext:()=>U,setTag:()=>P,setUser:()=>x});module.exports=F(Q);var B={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},t={...B},u={environment:typeof window<"u"&&window.location?.hostname==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.4",project:null,release:null,version:null,app:null},E={clicks:0,scrolls:0},M=null,L=!1,m=null,w={},y=[],W=30;var h=console.warn;var b=console.log;function k(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function X(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",k("user")),localStorage.getItem("__scoutUserId")),s=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",k("session")),sessionStorage.getItem("__scoutSessionId"));return M=M||k("pageload"),{pageloadId:M,userId:e,sessionId:s}}function j(){if(window._uaParserResult?.browser?.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return[{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))?.n||"Unknown"}function V(){if(window._uaParserResult?.os?.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return[{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))?.n||"Unknown"}function q(){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:window._uaParserResult?.browser?.version||null,os:V(),osVersion:window._uaParserResult?.os?.version||null,deviceType:window._uaParserResult?.device?.type||null,deviceModel:window._uaParserResult?.device?.model||null,deviceVendor:window._uaParserResult?.device?.vendor||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:E.clicks,userScrolls:E.scrolls}}function S(e){return!t.ignoreErrors||!Array.isArray(t.ignoreErrors)?!1:t.ignoreErrors.some(s=>typeof s=="string"?e.includes(s):s instanceof RegExp?s.test(e):!1)}function z(e,s){let n=new AbortController,o=setTimeout(()=>n.abort(),5e3),a={"Content-Type":"application/json"};return t.token&&(a["X-Ingest-Token"]=t.token),fetch(e,{method:"POST",headers:a,body:JSON.stringify(s),signal:n.signal}).then(r=>(clearTimeout(o),r)).catch(()=>{clearTimeout(o)})}function v(e){let s=(e[0]||"")+"",n=[...e];return s.replace(/%[sdj]/g,o=>{let a=n.shift();return o==="%s"?String(a):o==="%d"?Number(a):o==="%j"?JSON.stringify(a):o})}function I(e,s){let n=document.createElement("script");n.src=e,n.async=!0,s&&(n.onload=s),document.head.appendChild(n)}async function J(e,s,n){try{let o=await fetch(e);if(!o.ok)return null;let a=await o.text(),r=a.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),i=a.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(r)c=JSON.parse(atob(r[1]));else if(i){let D=new URL(i[1],e).href,C=await fetch(D);if(!C.ok)return null;c=await C.json()}else return null;if(!window.sourceMap?.SourceMapConsumer)return null;let l=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:s,column:n});if(!l.source)return null;let d=c.sources.indexOf(l.source),R=null;return c.sourcesContent&&c.sourcesContent[d]&&(R=c.sourcesContent[d]),{originalSource:l.source,originalLine:l.line,originalColumn:l.column,originalName:l.name,snippet:R}}catch{return null}}function f(e){y.push({timestamp:Date.now(),...e}),y.length>W&&y.shift()}async function g(e){let s=t.browserDetails?q():{},n=Object.assign(e,s,u,X());if(m&&(n.user=m),Object.keys(w).length&&(n.context={...w}),n.breadcrumbs=y.slice(),t.sampleRate&&Math.random()<1-parseFloat(t.sampleRate)){t.debug&&b("[Scout] Suppressed by sampling");return}if(t.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let o=e.errorTrace.split(`
2
- `),a=[o[0]];for(let r=1;r<o.length;r++)!o[r].includes("/scout")&&!o[r].includes("scout.js")&&!o[r].includes("scout-error")&&a.push(o[r]);a.length>1&&(e.errorTrace=a.join(`
3
- `))}catch{}if((e.errorTrace||e.stack)&&!e.source)try{let o=e.errorTrace||e.stack,a=o?o.split(`
4
- `):[];for(let r=1;r<a.length;r++){let i=a[r].trim().match(/(http.*?):(\d+):(\d+)/);if(i){e.source=i[1],e.lineno=parseInt(i[2],10),e.colno=parseInt(i[3],10);break}}}catch{}if(t.handleSourceMaps&&e.source&&e.lineno)try{let o=await J(e.source,e.lineno,e.colno||0);o&&(n.originalSource=o.originalSource,n.originalLine=o.originalLine,n.originalColumn=o.originalColumn,n.originalName=o.originalName,n.highlightLineNumber=o.originalLine,o.snippet&&(n.snippet=o.snippet))}catch{}t.debug&&b("[Scout] Sending:",n),t.endpoint&&z(t.endpoint,n)}function T(e){t.enabled&&g(e)}function x(e){m=e}function U(e){w={...w,...e}}function P(e,s){w[e]=s}function G(e){f(e)}function K(){if(t.trackUserInteractions){document.addEventListener("click",i=>{E.clicks++;let c=i.target,p=c.tagName?c.tagName.toLowerCase():"",l=(c.textContent||"").trim().slice(0,50);f({category:"click",message:p+(l?": "+l:"")})});let r=0;window.addEventListener("scroll",()=>{let i=Date.now();i-r>100&&(E.scrolls++,r=i)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),f({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{f({category:"navigation",message:window.location.href})});let s=window.fetch;window.fetch=function(r,i){let c=typeof r=="string"?r:r?.url||"",p=i?.method||"GET",l=Date.now();return s.apply(this,arguments).then(d=>(f({category:"fetch",message:`${p} ${c}`,data:{status:d.status,duration:Date.now()-l}}),d)).catch(d=>{throw f({category:"fetch",message:`${p} ${c}`,data:{error:d.message,duration:Date.now()-l}}),d})};let n=XMLHttpRequest.prototype.open,o=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(r,i){return this._scoutMethod=r,this._scoutUrl=i,n.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let r=this,i=Date.now();return r.addEventListener("loadend",()=>{f({category:"xhr",message:`${r._scoutMethod||"GET"} ${r._scoutUrl||""}`,data:{status:r.status,duration:Date.now()-i}})}),o.apply(this,arguments)},t.addErrorEventListener&&window.addEventListener("error",async r=>{if(t.enabled){try{let i=r.error?r.error.stack:"No stack trace available";if(S(r.message))return;t.sendErrors&&g({type:"window.onerror",message:r.message,source:r.filename,lineno:r.lineno,colno:r.colno,errorTrace:i})}catch(i){h("[Scout] Error handler failure:",i)}t.selfHealingErrors&&r.preventDefault()}}),t.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",r=>{if(t.enabled){try{let i=r.reason,c=i?.stack||"No stack trace available";if(S(i?.message||""))return;t.sendErrors&&g({type:"Unhandled Promise Rejection",message:i?.message||"Unhandled Promise Rejection",reason:r.reason,errorTrace:c})}catch(i){h("[Scout] Rejection handler failure:",i)}t.selfHealingErrors&&r.preventDefault()}}),t.overrideConsoleError&&(console.error=function(...r){if(t.enabled)try{let i=new Error().stack;if(S(v(r)))return;t.sendErrors&&g({type:"console.error",errorTrace:i,args:v(r)})}catch(i){h("[Scout] console.error override failure:",i)}}),t.overrideConsoleWarn&&(console.warn=function(...r){if(t.enabled)try{let i=new Error().stack;if(S(v(r)))return;t.sendErrors&&g({type:"console.warn",errorTrace:i,args:v(r)})}catch(i){h("[Scout] console.warn override failure:",i)}});let a=t.endpoint?new URL(t.endpoint).origin:"";t.loadUAParser&&t.browserDetails&&a&&I(`${a}/vendor/ua-parser.min.js`,()=>{typeof UAParser<"u"&&(window._uaParserResult=new UAParser().getResult())}),t.handleSourceMaps&&a&&I(`${a}/vendor/source-map.min.js`)}function Z(e={},s={}){if(e.user&&(m=e.user,delete e.user),L){u={...u,...e},t={...t,...s};return}u={...u,...e},t={...t,...s},L=!0,typeof window<"u"&&(K(),window.Scout={init:(n,o)=>{n?.user&&(m=n.user,delete n.user),u={...u,...n},o&&(t={...t,...o})},setScope:n=>{u={...u,...n}},setConfig:n=>{t={...t,...n}},setUser:x,setContext:U,setTag:P,addBreadcrumb:f,error:T})}
1
+ var S=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var X=Object.getOwnPropertyNames,T=Object.getOwnPropertySymbols;var U=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var x=(e,t,n)=>t in e?S(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,l=(e,t)=>{for(var n in t||(t={}))U.call(t,n)&&x(e,n,t[n]);if(T)for(var n of T(t))j.call(t,n)&&x(e,n,t[n]);return e};var V=(e,t)=>{for(var n in t)S(e,n,{get:t[n],enumerable:!0})},q=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of X(t))!U.call(e,i)&&i!==n&&S(e,i,{get:()=>t[i],enumerable:!(o=W(t,i))||o.enumerable});return e};var z=e=>q(S({},"__esModule",{value:!0}),e);var v=(e,t,n)=>new Promise((o,i)=>{var r=c=>{try{u(n.next(c))}catch(f){i(f)}},s=c=>{try{u(n.throw(c))}catch(f){i(f)}},u=c=>c.done?o(c.value):Promise.resolve(c.value).then(r,s);u((n=n.apply(e,t)).next())});var se={};V(se,{addBreadcrumb:()=>re,captureError:()=>O,init:()=>oe,setContext:()=>H,setTag:()=>F,setUser:()=>$});module.exports=z(se);var J={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({},J),N,g={environment:typeof window!="undefined"&&((N=window.location)==null?void 0:N.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.5",project:null,release:null,version:null,app:null},k={clicks:0,scrolls:0},R=null,P=!1,w=null,h={},M=[],G=30;var y=console.warn;var D=console.log;function C(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function K(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",C("user")),localStorage.getItem("__scoutUserId")),t=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",C("session")),sessionStorage.getItem("__scoutSessionId"));return R=R||C("pageload"),{pageloadId:R,userId:e,sessionId:t}}function Z(){var n,o,i;if((o=(n=window._uaParserResult)==null?void 0:n.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(r=>e.match(r.p)))==null?void 0:i.n)||"Unknown"}function Q(){var n,o,i;if((o=(n=window._uaParserResult)==null?void 0:n.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(r=>e.match(r.p)))==null?void 0:i.n)||"Unknown"}function Y(){var t,n,o,i,r,s,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:Z(),browserVersion:((n=(t=window._uaParserResult)==null?void 0:t.browser)==null?void 0:n.version)||null,os:Q(),osVersion:((i=(o=window._uaParserResult)==null?void 0:o.os)==null?void 0:i.version)||null,deviceType:((s=(r=window._uaParserResult)==null?void 0:r.device)==null?void 0:s.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 E(e){return!a.ignoreErrors||!Array.isArray(a.ignoreErrors)?!1:a.ignoreErrors.some(t=>typeof t=="string"?e.includes(t):t instanceof RegExp?t.test(e):!1)}function ee(e,t){let n=new AbortController,o=setTimeout(()=>n.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(t),signal:n.signal}).then(r=>(clearTimeout(o),r)).catch(()=>{clearTimeout(o)})}function _(e){let t=(e[0]||"")+"",n=[...e];return t.replace(/%[sdj]/g,o=>{let i=n.shift();return o==="%s"?String(i):o==="%d"?Number(i):o==="%j"?JSON.stringify(i):o})}function A(e,t){let n=document.createElement("script");n.src=e,n.async=!0,t&&(n.onload=t),document.head.appendChild(n)}function ne(e,t,n){return v(this,null,function*(){var o;try{let i=yield fetch(e);if(!i.ok)return null;let r=yield i.text(),s=r.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),u=r.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(s)c=JSON.parse(atob(s[1]));else if(u){let B=new URL(u[1],e).href,I=yield fetch(B);if(!I.ok)return null;c=yield I.json()}else return null;if(!((o=window.sourceMap)!=null&&o.SourceMapConsumer))return null;let d=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:t,column:n});if(!d.source)return null;let L=c.sources.indexOf(d.source),b=null;return c.sourcesContent&&c.sourcesContent[L]&&(b=c.sourcesContent[L]),{originalSource:d.source,originalLine:d.line,originalColumn:d.column,originalName:d.name,snippet:b}}catch(i){return null}})}function p(e){M.push(l({timestamp:Date.now()},e)),M.length>G&&M.shift()}function m(e){return v(this,null,function*(){let t=a.browserDetails?Y():{},n=Object.assign(e,t,g,K());if(w&&(n.user=w),Object.keys(h).length&&(n.context=l({},h)),n.breadcrumbs=M.slice(),a.sampleRate&&Math.random()<1-parseFloat(a.sampleRate)){a.debug&&D("[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 r=1;r<o.length;r++)!o[r].includes("/scout")&&!o[r].includes("scout.js")&&!o[r].includes("scout-error")&&i.push(o[r]);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 r=1;r<i.length;r++){let s=i[r].trim().match(/(http.*?):(\d+):(\d+)/);if(s){e.source=s[1],e.lineno=parseInt(s[2],10),e.colno=parseInt(s[3],10);break}}}catch(o){}if(a.handleSourceMaps&&e.source&&e.lineno)try{let o=yield ne(e.source,e.lineno,e.colno||0);o&&(n.originalSource=o.originalSource,n.originalLine=o.originalLine,n.originalColumn=o.originalColumn,n.originalName=o.originalName,n.highlightLineNumber=o.originalLine,o.snippet&&(n.snippet=o.snippet))}catch(o){}a.debug&&D("[Scout] Sending:",n),a.endpoint&&ee(a.endpoint,n)})}function O(e){a.enabled&&m(e)}function $(e){w=e}function H(e){h=l(l({},h),e)}function F(e,t){h[e]=t}function re(e){p(e)}function te(){if(a.trackUserInteractions){document.addEventListener("click",s=>{k.clicks++;let u=s.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 s=Date.now();s-r>100&&(k.scrolls++,r=s)})}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,s){let u=typeof r=="string"?r:(r==null?void 0:r.url)||"",c=(s==null?void 0:s.method)||"GET",f=Date.now();return t.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 n=XMLHttpRequest.prototype.open,o=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(r,s){return this._scoutMethod=r,this._scoutUrl=s,n.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let r=this,s=Date.now();return r.addEventListener("loadend",()=>{p({category:"xhr",message:`${r._scoutMethod||"GET"} ${r._scoutUrl||""}`,data:{status:r.status,duration:Date.now()-s}})}),o.apply(this,arguments)},a.addErrorEventListener&&window.addEventListener("error",r=>v(this,null,function*(){if(a.enabled){try{let s=r.error?r.error.stack:"No stack trace available";if(E(r.message))return;a.sendErrors&&m({type:"window.onerror",message:r.message,source:r.filename,lineno:r.lineno,colno:r.colno,errorTrace:s})}catch(s){y("[Scout] Error handler failure:",s)}a.selfHealingErrors&&r.preventDefault()}})),a.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",r=>{if(a.enabled){try{let s=r.reason,u=(s==null?void 0:s.stack)||"No stack trace available";if(E((s==null?void 0:s.message)||""))return;a.sendErrors&&m({type:"Unhandled Promise Rejection",message:(s==null?void 0:s.message)||"Unhandled Promise Rejection",reason:r.reason,errorTrace:u})}catch(s){y("[Scout] Rejection handler failure:",s)}a.selfHealingErrors&&r.preventDefault()}}),a.overrideConsoleError&&(console.error=function(...r){if(a.enabled)try{let s=new Error().stack;if(E(_(r)))return;a.sendErrors&&m({type:"console.error",errorTrace:s,args:_(r)})}catch(s){y("[Scout] console.error override failure:",s)}}),a.overrideConsoleWarn&&(console.warn=function(...r){if(a.enabled)try{let s=new Error().stack;if(E(_(r)))return;a.sendErrors&&m({type:"console.warn",errorTrace:s,args:_(r)})}catch(s){y("[Scout] console.warn override failure:",s)}});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 oe(e={},t={}){if(e.user&&(w=e.user,delete e.user),P){g=l(l({},g),e),a=l(l({},a),t);return}g=l(l({},g),e),a=l(l({},a),t),P=!0,typeof window!="undefined"&&(te(),window.Scout={init:(n,o)=>{n!=null&&n.user&&(w=n.user,delete n.user),g=l(l({},g),n),o&&(a=l(l({},a),o))},setScope:n=>{g=l(l({},g),n)},setConfig:n=>{a=l(l({},a),n)},setUser:$,setContext:H,setTag:F,addBreadcrumb:p,error:O})}
5
5
  //# sourceMappingURL=index.cjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/index.js"],
4
4
  "sourcesContent": ["/**\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 // Resolve source maps if enabled and we have a source location\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 event.originalSource = resolved.originalSource\n event.originalLine = resolved.originalLine\n event.originalColumn = resolved.originalColumn\n event.originalName = resolved.originalName\n event.highlightLineNumber = resolved.originalLine\n if (resolved.snippet) event.snippet = resolved.snippet\n }\n } catch (e) { /* fail silently */ }\n }\n\n if (config.debug) _consoleLog('[Scout] Sending:', event)\n if (config.endpoint) postData(config.endpoint, event)\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 window.Scout = {\n init: (s, c) => { if (s?.user) { userContext = s.user; delete s.user }; scope = { ...scope, ...s }; if (c) config = { ...config, ...c } },\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}\n"],
5
- "mappings": "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",
6
- "names": ["index_exports", "__export", "addBreadcrumb", "captureError", "init", "setContext", "setTag", "setUser", "__toCommonJS", "defaultConfig", "config", "scope", "userInteractions", "pageloadId", "initialized", "userContext", "customContext", "breadcrumbs", "MAX_BREADCRUMBS", "_consoleWarn", "_consoleLog", "generateId", "prefix", "getIds", "userId", "sessionId", "pageloadId", "getBrowser", "ua", "b", "getOS", "o", "captureBrowserDetails", "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", "jsResponse", "jsCode", "inlineMatch", "externalMatch", "sourceMapData", "mapURL", "mapResponse", "pos", "sourceIndex", "snippet", "_addBreadcrumb", "crumb", "breadcrumbs", "MAX_BREADCRUMBS", "pushErrorEvent", "obj", "details", "event", "scope", "userContext", "customContext", "lines", "filtered", "i", "stack", "match", "resolved", "captureError", "setUser", "user", "setContext", "ctx", "setTag", "key", "value", "addBreadcrumb", "setupListeners", "e", "el", "tag", "text", "lastScroll", "now", "origPushState", "origFetch", "input", "init", "method", "start", "response", "err", "origOpen", "origSend", "self", "errorTrace", "_consoleWarn", "error", "baseUrl", "scopeOptions", "configOptions", "initialized", "c"]
5
+ "mappings": "43BAAA,IAAAA,GAAA,GAAAC,EAAAD,GAAA,mBAAAE,GAAA,iBAAAC,EAAA,SAAAC,GAAA,eAAAC,EAAA,WAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAR,IAcA,IAAMS,EAAgB,CACpB,sBAAuB,GACvB,kBAAmB,GACnB,iBAAkB,GAClB,iBAAkB,GAClB,eAAgB,GAChB,cAAe,GACf,aAAc,GACd,aAAc,KACd,WAAY,GACZ,WAAY,EACZ,QAAS,GACT,MAAO,GACP,SAAU,GACV,MAAO,KAEP,gBAAiB,GACjB,6BAA8B,GAC9B,sBAAuB,GACvB,mCAAoC,GAEpC,mBAAoB,GACpB,oBAAqB,GACrB,oBAAqB,GACrB,qBAAsB,EACxB,EAEIC,EAASC,EAAA,GAAKF,GAzClBG,EA2CIC,EAAQ,CACV,YAAa,OAAO,QAAW,eAAeD,EAAA,OAAO,WAAP,YAAAA,EAAiB,YAAa,YAAc,cAAgB,aAC1G,IAAK,aACL,WAAY,QACZ,QAAS,KACT,QAAS,KACT,QAAS,KACT,IAAK,IACP,EAEME,EAAmB,CAAE,OAAQ,EAAG,QAAS,CAAE,EAC7CC,EAAa,KACbC,EAAc,GACdC,EAAc,KACdC,EAAgB,CAAC,EACfC,EAAc,CAAC,EACfC,EAAkB,GAIxB,IAAMC,EAAe,QAAQ,KAE7B,IAAMC,EAAc,QAAQ,IAI5B,SAASC,EAAWC,EAAQ,CAC1B,MAAO,GAAGA,CAAM,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,EAAG,CAAC,CAAC,EAC7D,CAEA,SAASC,GAAS,CAChB,IAAMC,EAAS,aAAa,QAAQ,eAAe,IAAM,aAAa,QAAQ,gBAAiBH,EAAW,MAAM,CAAC,EAAG,aAAa,QAAQ,eAAe,GAClJI,EAAY,eAAe,QAAQ,kBAAkB,IAAM,eAAe,QAAQ,mBAAoBJ,EAAW,SAAS,CAAC,EAAG,eAAe,QAAQ,kBAAkB,GAC7K,OAAAK,EAAaA,GAAcL,EAAW,UAAU,EACzC,CAAE,WAAAK,EAAY,OAAAF,EAAQ,UAAAC,CAAU,CACzC,CAEA,SAASE,GAAa,CAhFtB,IAAAC,EAAAC,EAAAC,EAiFE,IAAID,GAAAD,EAAA,OAAO,kBAAP,YAAAA,EAAwB,UAAxB,MAAAC,EAAiC,KAAM,OAAO,OAAO,gBAAgB,QAAQ,KACjF,IAAME,EAAK,UAAU,UAWrB,QAAOD,EAVK,CACV,CAAE,EAAG,iBAAkB,EAAG,eAAgB,EAC1C,CAAE,EAAG,SAAU,EAAG,QAAS,EAC3B,CAAE,EAAG,kBAAmB,EAAG,gBAAiB,EAC5C,CAAE,EAAG,UAAW,EAAG,SAAU,EAC7B,CAAE,EAAG,iBAAkB,EAAG,eAAgB,EAC1C,CAAE,EAAG,SAAU,EAAG,QAAS,EAC3B,CAAE,EAAG,eAAgB,EAAG,mBAAoB,EAC5C,CAAE,EAAG,OAAQ,EAAG,MAAO,CACzB,EACW,KAAKE,GAAKD,EAAG,MAAMC,EAAE,CAAC,CAAC,IAA3B,YAAAF,EAA8B,IAAK,SAC5C,CAEA,SAASG,GAAQ,CAhGjB,IAAAL,EAAAC,EAAAC,EAiGE,IAAID,GAAAD,EAAA,OAAO,kBAAP,YAAAA,EAAwB,KAAxB,MAAAC,EAA4B,KAAM,OAAO,OAAO,gBAAgB,GAAG,KACvE,IAAME,EAAK,UAAU,UAQrB,QAAOD,EAPK,CACV,CAAE,EAAG,MAAO,EAAG,SAAU,EACzB,CAAE,EAAG,MAAO,EAAG,QAAS,EACxB,CAAE,EAAG,YAAa,EAAG,OAAQ,EAC7B,CAAE,EAAG,UAAW,EAAG,SAAU,EAC7B,CAAE,EAAG,cAAe,EAAG,KAAM,CAC/B,EACW,KAAKI,GAAKH,EAAG,MAAMG,EAAE,CAAC,CAAC,IAA3B,YAAAJ,EAA8B,IAAK,SAC5C,CAEA,SAASK,GAAwB,CA7GjC,IAAAP,EAAAC,EAAAC,EAAAM,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EA8GE,IAAMC,EAAO,UAAU,YAAc,UAAU,eAAiB,UAAU,iBAC1E,MAAO,CACL,eAAgBA,EAAOA,EAAK,cAAgB,UAC5C,UAAW,UAAU,UACrB,MAAO,OAAO,WACd,OAAQ,OAAO,YACf,YAAa,OAAO,MACpB,aAAc,OAAO,OACrB,eAAgB,KAAK,IAAI,EACzB,WAAY,KAAK,eAAe,EAAE,gBAAgB,EAAE,SACpD,cAAe,UAAU,UAAY,UAAU,aAC/C,YAAa,KAAK,MAAM,YAAY,IAAI,EAAI,GAAI,EAChD,aAAc,UAAU,cAAgB,UACxC,eAAgB,IAAI,KAAK,EAAE,kBAAkB,EAC7C,eAAgB,UAAU,cAC1B,IAAK,OAAO,SAAS,KACrB,KAAM,OAAO,SAAS,KACtB,SAAU,SAAS,SACnB,QAAShB,EAAW,EACpB,iBAAgBE,GAAAD,EAAA,OAAO,kBAAP,YAAAA,EAAwB,UAAxB,YAAAC,EAAiC,UAAW,KAC5D,GAAII,EAAM,EACV,YAAWG,GAAAN,EAAA,OAAO,kBAAP,YAAAA,EAAwB,KAAxB,YAAAM,EAA4B,UAAW,KAClD,aAAYE,GAAAD,EAAA,OAAO,kBAAP,YAAAA,EAAwB,SAAxB,YAAAC,EAAgC,OAAQ,KACpD,cAAaE,GAAAD,EAAA,OAAO,kBAAP,YAAAA,EAAwB,SAAxB,YAAAC,EAAgC,QAAS,KACtD,eAAcE,GAAAD,EAAA,OAAO,kBAAP,YAAAA,EAAwB,SAAxB,YAAAC,EAAgC,SAAU,KACxD,SAAU,KAAK,IAAI,EAAG,YAAY,OAAO,aAAe,YAAY,OAAO,eAAe,EAC1F,WAAYE,EAAiB,OAC7B,YAAaA,EAAiB,OAChC,CACF,CAEA,SAASC,EAAkBC,EAAK,CAC9B,MAAI,CAACC,EAAO,cAAgB,CAAC,MAAM,QAAQA,EAAO,YAAY,EAAU,GACjEA,EAAO,aAAa,KAAKC,GAC1B,OAAOA,GAAY,SAAiBF,EAAI,SAASE,CAAO,EACxDA,aAAmB,OAAeA,EAAQ,KAAKF,CAAG,EAC/C,EACR,CACH,CAEA,SAASG,GAASC,EAAKC,EAAM,CAC3B,IAAMC,EAAa,IAAI,gBACjBC,EAAU,WAAW,IAAMD,EAAW,MAAM,EAAG,GAAI,EAEnDE,EAAU,CAAE,eAAgB,kBAAmB,EACrD,OAAIP,EAAO,QAAOO,EAAQ,gBAAgB,EAAIP,EAAO,OAE9C,MAAMG,EAAK,CAChB,OAAQ,OACR,QAAAI,EACA,KAAM,KAAK,UAAUH,CAAI,EACzB,OAAQC,EAAW,MACrB,CAAC,EACE,KAAK,IAAO,aAAaC,CAAO,EAAU,EAAG,EAC7C,MAAM,IAAM,CAAE,aAAaA,CAAO,CAAE,CAAC,CAC1C,CAEA,SAASE,EAAaC,EAAM,CAC1B,IAAMC,GAAOD,EAAK,CAAC,GAAK,IAAM,GACxBE,EAAO,CAAC,GAAGF,CAAI,EACrB,OAAOC,EAAI,QAAQ,UAAYE,GAAM,CACnC,IAAMC,EAAIF,EAAK,MAAM,EACrB,OAAIC,IAAM,KAAa,OAAOC,CAAC,EAC3BD,IAAM,KAAa,OAAOC,CAAC,EAC3BD,IAAM,KAAa,KAAK,UAAUC,CAAC,EAChCD,CACT,CAAC,CACH,CAEA,SAASE,EAAYC,EAAKC,EAAQ,CAChC,IAAMC,EAAI,SAAS,cAAc,QAAQ,EACzCA,EAAE,IAAMF,EACRE,EAAE,MAAQ,GACND,IAAQC,EAAE,OAASD,GACvB,SAAS,KAAK,YAAYC,CAAC,CAC7B,CAIA,SAAeC,GAAiBC,EAAWC,EAAQC,EAAO,QAAAC,EAAA,sBA7L1D,IAAAzC,EA8LE,GAAI,CAEF,IAAM0C,EAAa,MAAM,MAAMJ,CAAS,EACxC,GAAI,CAACI,EAAW,GAAI,OAAO,KAC3B,IAAMC,EAAS,MAAMD,EAAW,KAAK,EAE/BE,EAAcD,EAAO,MAAM,+DAA+D,EAC1FE,EAAgBF,EAAO,MAAM,0CAA0C,EAEzEG,EACJ,GAAIF,EACFE,EAAgB,KAAK,MAAM,KAAKF,EAAY,CAAC,CAAC,CAAC,UACtCC,EAAe,CACxB,IAAME,EAAS,IAAI,IAAIF,EAAc,CAAC,EAAGP,CAAS,EAAE,KAC9CU,EAAc,MAAM,MAAMD,CAAM,EACtC,GAAI,CAACC,EAAY,GAAI,OAAO,KAC5BF,EAAgB,MAAME,EAAY,KAAK,CACzC,KACE,QAAO,KAGT,GAAI,GAAChD,EAAA,OAAO,YAAP,MAAAA,EAAkB,mBAAmB,OAAO,KAEjD,IAAMiD,EADW,IAAI,OAAO,UAAU,kBAAkBH,CAAa,EAChD,oBAAoB,CAAE,KAAMP,EAAQ,OAAQC,CAAM,CAAC,EAExE,GAAI,CAACS,EAAI,OAAQ,OAAO,KAGxB,IAAMC,EAAcJ,EAAc,QAAQ,QAAQG,EAAI,MAAM,EACxDE,EAAU,KACd,OAAIL,EAAc,gBAAkBA,EAAc,eAAeI,CAAW,IAC1EC,EAAUL,EAAc,eAAeI,CAAW,GAG7C,CACL,eAAgBD,EAAI,OACpB,aAAcA,EAAI,KAClB,eAAgBA,EAAI,OACpB,aAAcA,EAAI,KAClB,QAAAE,CACF,CACF,OAASC,EAAG,CACV,OAAO,IACT,CACF,GAIA,SAASC,EAAeC,EAAO,CAC7BC,EAAY,KAAKC,EAAA,CAAE,UAAW,KAAK,IAAI,GAAMF,EAAO,EAChDC,EAAY,OAASE,GAAiBF,EAAY,MAAM,CAC9D,CAIA,SAAeG,EAAeC,EAAK,QAAAlB,EAAA,sBACjC,IAAMmB,EAAUzC,EAAO,eAAiBZ,EAAsB,EAAI,CAAC,EAC7DsD,EAAQ,OAAO,OAAOF,EAAKC,EAASE,EAAOnE,EAAO,CAAC,EAMzD,GAJIoE,IAAaF,EAAM,KAAOE,GAC1B,OAAO,KAAKC,CAAa,EAAE,SAAQH,EAAM,QAAUL,EAAA,GAAKQ,IAC5DH,EAAM,YAAcN,EAAY,MAAM,EAElCpC,EAAO,YAAc,KAAK,OAAO,EAAK,EAAI,WAAWA,EAAO,UAAU,EAAI,CACxEA,EAAO,OAAO3B,EAAY,gCAAgC,EAC9D,MACF,CAKA,GAHK2B,EAAO,mBAAkBwC,EAAI,WAAa,MAG3CA,EAAI,WACN,GAAI,CACF,IAAMM,EAAQN,EAAI,WAAW,MAAM;AAAA,CAAI,EACjCO,EAAW,CAACD,EAAM,CAAC,CAAC,EAC1B,QAASE,EAAI,EAAGA,EAAIF,EAAM,OAAQE,IAC5B,CAACF,EAAME,CAAC,EAAE,SAAS,QAAQ,GAAK,CAACF,EAAME,CAAC,EAAE,SAAS,UAAU,GAAK,CAACF,EAAME,CAAC,EAAE,SAAS,aAAa,GACpGD,EAAS,KAAKD,EAAME,CAAC,CAAC,EAGtBD,EAAS,OAAS,IAAGP,EAAI,WAAaO,EAAS,KAAK;AAAA,CAAI,EAC9D,OAASd,EAAG,CAAe,CAG7B,IAAKO,EAAI,YAAcA,EAAI,QAAU,CAACA,EAAI,OACxC,GAAI,CACF,IAAMS,EAAQT,EAAI,YAAcA,EAAI,MAC9BM,EAAQG,EAAQA,EAAM,MAAM;AAAA,CAAI,EAAI,CAAC,EAE3C,QAASD,EAAI,EAAGA,EAAIF,EAAM,OAAQE,IAAK,CACrC,IAAME,EAAQJ,EAAME,CAAC,EAAE,KAAK,EAAE,MAAM,uBAAuB,EAC3D,GAAIE,EAAO,CACTV,EAAI,OAASU,EAAM,CAAC,EACpBV,EAAI,OAAS,SAASU,EAAM,CAAC,EAAG,EAAE,EAClCV,EAAI,MAAQ,SAASU,EAAM,CAAC,EAAG,EAAE,EACjC,KACF,CACF,CACF,OAASjB,EAAG,CAAe,CAI7B,GAAIjC,EAAO,kBAAoBwC,EAAI,QAAUA,EAAI,OAC/C,GAAI,CACF,IAAMW,EAAW,MAAMjC,GAAiBsB,EAAI,OAAQA,EAAI,OAAQA,EAAI,OAAS,CAAC,EAC1EW,IACFT,EAAM,eAAiBS,EAAS,eAChCT,EAAM,aAAeS,EAAS,aAC9BT,EAAM,eAAiBS,EAAS,eAChCT,EAAM,aAAeS,EAAS,aAC9BT,EAAM,oBAAsBS,EAAS,aACjCA,EAAS,UAAST,EAAM,QAAUS,EAAS,SAEnD,OAASlB,EAAG,CAAsB,CAGhCjC,EAAO,OAAO3B,EAAY,mBAAoBqE,CAAK,EACnD1C,EAAO,UAAUE,GAASF,EAAO,SAAU0C,CAAK,CACtD,GAKO,SAASU,EAAaV,EAAO,CAC7B1C,EAAO,SACZuC,EAAeG,CAAK,CACtB,CAMO,SAASW,EAAQC,EAAM,CAC5BV,EAAcU,CAChB,CAMO,SAASC,EAAWC,EAAK,CAC9BX,EAAgBR,IAAA,GAAKQ,GAAkBW,EACzC,CAKO,SAASC,EAAOC,EAAKC,EAAO,CACjCd,EAAca,CAAG,EAAIC,CACvB,CAMO,SAASC,GAAczB,EAAO,CACnCD,EAAeC,CAAK,CACtB,CAIA,SAAS0B,IAAiB,CAExB,GAAI7D,EAAO,sBAAuB,CAChC,SAAS,iBAAiB,QAAUiC,GAAM,CACxCpC,EAAiB,SACjB,IAAMiE,EAAK7B,EAAE,OACP8B,EAAMD,EAAG,QAAUA,EAAG,QAAQ,YAAY,EAAI,GAC9CE,GAAQF,EAAG,aAAe,IAAI,KAAK,EAAE,MAAM,EAAG,EAAE,EACtD5B,EAAe,CAAE,SAAU,QAAS,QAAS6B,GAAOC,EAAO,KAAOA,EAAO,GAAI,CAAC,CAChF,CAAC,EACD,IAAIC,EAAa,EACjB,OAAO,iBAAiB,SAAU,IAAM,CACtC,IAAMC,EAAM,KAAK,IAAI,EACjBA,EAAMD,EAAa,MAAOpE,EAAiB,UAAWoE,EAAaC,EACzE,CAAC,CACH,CAGA,IAAMC,EAAgB,QAAQ,UAC9B,QAAQ,UAAY,UAAW,CAC7BA,EAAc,MAAM,KAAM,SAAS,EACnCjC,EAAe,CAAE,SAAU,aAAc,QAAS,OAAO,SAAS,IAAK,CAAC,CAC1E,EACA,OAAO,iBAAiB,WAAY,IAAM,CACxCA,EAAe,CAAE,SAAU,aAAc,QAAS,OAAO,SAAS,IAAK,CAAC,CAC1E,CAAC,EAGD,IAAMkC,EAAY,OAAO,MACzB,OAAO,MAAQ,SAASC,EAAOC,EAAM,CACnC,IAAMnE,EAAM,OAAOkE,GAAU,SAAWA,GAASA,GAAA,YAAAA,EAAO,MAAO,GACzDE,GAASD,GAAA,YAAAA,EAAM,SAAU,MACzBE,EAAQ,KAAK,IAAI,EACvB,OAAOJ,EAAU,MAAM,KAAM,SAAS,EAAE,KAAKK,IAC3CvC,EAAe,CAAE,SAAU,QAAS,QAAS,GAAGqC,CAAM,IAAIpE,CAAG,GAAI,KAAM,CAAE,OAAQsE,EAAS,OAAQ,SAAU,KAAK,IAAI,EAAID,CAAM,CAAE,CAAC,EAC3HC,EACR,EAAE,MAAMC,GAAO,CACd,MAAAxC,EAAe,CAAE,SAAU,QAAS,QAAS,GAAGqC,CAAM,IAAIpE,CAAG,GAAI,KAAM,CAAE,MAAOuE,EAAI,QAAS,SAAU,KAAK,IAAI,EAAIF,CAAM,CAAE,CAAC,EACvHE,CACR,CAAC,CACH,EAGA,IAAMC,EAAW,eAAe,UAAU,KACpCC,EAAW,eAAe,UAAU,KAC1C,eAAe,UAAU,KAAO,SAASL,EAAQpE,EAAK,CACpD,YAAK,aAAeoE,EACpB,KAAK,UAAYpE,EACVwE,EAAS,MAAM,KAAM,SAAS,CACvC,EACA,eAAe,UAAU,KAAO,UAAW,CACzC,IAAME,EAAO,KACPL,EAAQ,KAAK,IAAI,EACvB,OAAAK,EAAK,iBAAiB,UAAW,IAAM,CACrC3C,EAAe,CAAE,SAAU,MAAO,QAAS,GAAG2C,EAAK,cAAgB,KAAK,IAAIA,EAAK,WAAa,EAAE,GAAI,KAAM,CAAE,OAAQA,EAAK,OAAQ,SAAU,KAAK,IAAI,EAAIL,CAAM,CAAE,CAAC,CACnK,CAAC,EACMI,EAAS,MAAM,KAAM,SAAS,CACvC,EAGI5E,EAAO,uBACT,OAAO,iBAAiB,QAAgB0C,GAAUpB,EAAA,sBAChD,GAAKtB,EAAO,QACZ,IAAI,CACF,IAAM8E,EAAapC,EAAM,MAAQA,EAAM,MAAM,MAAQ,2BACrD,GAAI5C,EAAkB4C,EAAM,OAAO,EAAG,OAClC1C,EAAO,YACTuC,EAAe,CACb,KAAM,iBACN,QAASG,EAAM,QACf,OAAQA,EAAM,SACd,OAAQA,EAAM,OACd,MAAOA,EAAM,MACb,WAAAoC,CACF,CAAC,CAEL,OAAS7C,EAAG,CACV8C,EAAa,iCAAkC9C,CAAC,CAClD,CACIjC,EAAO,mBAAmB0C,EAAM,eAAe,EACrD,EAAC,EAIC1C,EAAO,oCACT,OAAO,iBAAiB,qBAAuB0C,GAAU,CACvD,GAAK1C,EAAO,QACZ,IAAI,CACF,IAAMgF,EAAQtC,EAAM,OACdoC,GAAaE,GAAA,YAAAA,EAAO,QAAS,2BACnC,GAAIlF,GAAkBkF,GAAA,YAAAA,EAAO,UAAW,EAAE,EAAG,OACzChF,EAAO,YACTuC,EAAe,CACb,KAAM,8BACN,SAASyC,GAAA,YAAAA,EAAO,UAAW,8BAC3B,OAAQtC,EAAM,OACd,WAAAoC,CACF,CAAC,CAEL,OAAS7C,EAAG,CACV8C,EAAa,qCAAsC9C,CAAC,CACtD,CACIjC,EAAO,mBAAmB0C,EAAM,eAAe,EACrD,CAAC,EAIC1C,EAAO,uBACT,QAAQ,MAAQ,YAAaS,EAAM,CACjC,GAAKT,EAAO,QACZ,GAAI,CACF,IAAM8E,EAAa,IAAI,MAAM,EAAE,MAC/B,GAAIhF,EAAkBU,EAAaC,CAAI,CAAC,EAAG,OACvCT,EAAO,YAAYuC,EAAe,CAAE,KAAM,gBAAiB,WAAAuC,EAAY,KAAMtE,EAAaC,CAAI,CAAE,CAAC,CACvG,OAASwB,EAAG,CAAE8C,EAAa,0CAA2C9C,CAAC,CAAE,CAC3E,GAGEjC,EAAO,sBACT,QAAQ,KAAO,YAAaS,EAAM,CAChC,GAAKT,EAAO,QACZ,GAAI,CACF,IAAM8E,EAAa,IAAI,MAAM,EAAE,MAC/B,GAAIhF,EAAkBU,EAAaC,CAAI,CAAC,EAAG,OACvCT,EAAO,YAAYuC,EAAe,CAAE,KAAM,eAAgB,WAAAuC,EAAY,KAAMtE,EAAaC,CAAI,CAAE,CAAC,CACtG,OAASwB,EAAG,CAAE8C,EAAa,yCAA0C9C,CAAC,CAAE,CAC1E,GAIF,IAAMgD,EAAUjF,EAAO,SAAW,IAAI,IAAIA,EAAO,QAAQ,EAAE,OAAS,GAChEA,EAAO,cAAgBA,EAAO,gBAAkBiF,GAClDnE,EAAY,GAAGmE,CAAO,2BAA4B,IAAM,CAClD,OAAO,UAAa,cACtB,OAAO,gBAAkB,IAAI,SAAS,EAAE,UAAU,EAEtD,CAAC,EAECjF,EAAO,kBAAoBiF,GAC7BnE,EAAY,GAAGmE,CAAO,2BAA2B,CAErD,CAQO,SAASX,GAAKY,EAAe,CAAC,EAAGC,EAAgB,CAAC,EAAG,CAO1D,GALID,EAAa,OACftC,EAAcsC,EAAa,KAC3B,OAAOA,EAAa,MAGlBE,EAAa,CACfzC,EAAQN,IAAA,GAAKM,GAAUuC,GACvBlF,EAASqC,IAAA,GAAKrC,GAAWmF,GACzB,MACF,CAEAxC,EAAQN,IAAA,GAAKM,GAAUuC,GACvBlF,EAASqC,IAAA,GAAKrC,GAAWmF,GACzBC,EAAc,GAEV,OAAO,QAAW,cACpBvB,GAAe,EAEf,OAAO,MAAQ,CACb,KAAM,CAAC5C,EAAGoE,IAAM,CAAMpE,GAAA,MAAAA,EAAG,OAAQ2B,EAAc3B,EAAE,KAAM,OAAOA,EAAE,MAAQ0B,EAAQN,IAAA,GAAKM,GAAU1B,GAASoE,IAAGrF,EAASqC,IAAA,GAAKrC,GAAWqF,GAAI,EACxI,SAAWpE,GAAM,CAAE0B,EAAQN,IAAA,GAAKM,GAAU1B,EAAI,EAC9C,UAAYoE,GAAM,CAAErF,EAASqC,IAAA,GAAKrC,GAAWqF,EAAI,EACjD,QAAAhC,EACA,WAAAE,EACA,OAAAE,EACA,cAAevB,EACf,MAAOkB,CACT,EAEJ",
6
+ "names": ["index_exports", "__export", "addBreadcrumb", "captureError", "init", "setContext", "setTag", "setUser", "__toCommonJS", "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", "captureError", "setUser", "user", "setContext", "ctx", "setTag", "key", "value", "addBreadcrumb", "setupListeners", "el", "tag", "text", "lastScroll", "now", "origPushState", "origFetch", "input", "init", "method", "start", "response", "err", "origOpen", "origSend", "self", "errorTrace", "_consoleWarn", "error", "baseUrl", "scopeOptions", "configOptions", "initialized", "c"]
7
7
  }
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- var T={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},n={...T},u={environment:typeof window<"u"&&window.location?.hostname==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.4",project:null,release:null,version:null,app:null},E={clicks:0,scrolls:0},_=null,C=!1,m=null,w={},y=[],x=30;var h=console.warn;var L=console.log;function M(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function U(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",M("user")),localStorage.getItem("__scoutUserId")),i=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",M("session")),sessionStorage.getItem("__scoutSessionId"));return _=_||M("pageload"),{pageloadId:_,userId:e,sessionId:i}}function P(){if(window._uaParserResult?.browser?.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return[{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))?.n||"Unknown"}function D(){if(window._uaParserResult?.os?.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return[{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))?.n||"Unknown"}function A(){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:P(),browserVersion:window._uaParserResult?.browser?.version||null,os:D(),osVersion:window._uaParserResult?.os?.version||null,deviceType:window._uaParserResult?.device?.type||null,deviceModel:window._uaParserResult?.device?.model||null,deviceVendor:window._uaParserResult?.device?.vendor||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:E.clicks,userScrolls:E.scrolls}}function S(e){return!n.ignoreErrors||!Array.isArray(n.ignoreErrors)?!1:n.ignoreErrors.some(i=>typeof i=="string"?e.includes(i):i instanceof RegExp?i.test(e):!1)}function N(e,i){let t=new AbortController,o=setTimeout(()=>t.abort(),5e3),a={"Content-Type":"application/json"};return n.token&&(a["X-Ingest-Token"]=n.token),fetch(e,{method:"POST",headers:a,body:JSON.stringify(i),signal:t.signal}).then(r=>(clearTimeout(o),r)).catch(()=>{clearTimeout(o)})}function v(e){let i=(e[0]||"")+"",t=[...e];return i.replace(/%[sdj]/g,o=>{let a=t.shift();return o==="%s"?String(a):o==="%d"?Number(a):o==="%j"?JSON.stringify(a):o})}function b(e,i){let t=document.createElement("script");t.src=e,t.async=!0,i&&(t.onload=i),document.head.appendChild(t)}async function O(e,i,t){try{let o=await fetch(e);if(!o.ok)return null;let a=await o.text(),r=a.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),s=a.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(r)c=JSON.parse(atob(r[1]));else if(s){let I=new URL(s[1],e).href,R=await fetch(I);if(!R.ok)return null;c=await R.json()}else return null;if(!window.sourceMap?.SourceMapConsumer)return null;let l=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:i,column:t});if(!l.source)return null;let d=c.sources.indexOf(l.source),k=null;return c.sourcesContent&&c.sourcesContent[d]&&(k=c.sourcesContent[d]),{originalSource:l.source,originalLine:l.line,originalColumn:l.column,originalName:l.name,snippet:k}}catch{return null}}function f(e){y.push({timestamp:Date.now(),...e}),y.length>x&&y.shift()}async function g(e){let i=n.browserDetails?A():{},t=Object.assign(e,i,u,U());if(m&&(t.user=m),Object.keys(w).length&&(t.context={...w}),t.breadcrumbs=y.slice(),n.sampleRate&&Math.random()<1-parseFloat(n.sampleRate)){n.debug&&L("[Scout] Suppressed by sampling");return}if(n.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let o=e.errorTrace.split(`
2
- `),a=[o[0]];for(let r=1;r<o.length;r++)!o[r].includes("/scout")&&!o[r].includes("scout.js")&&!o[r].includes("scout-error")&&a.push(o[r]);a.length>1&&(e.errorTrace=a.join(`
3
- `))}catch{}if((e.errorTrace||e.stack)&&!e.source)try{let o=e.errorTrace||e.stack,a=o?o.split(`
4
- `):[];for(let r=1;r<a.length;r++){let s=a[r].trim().match(/(http.*?):(\d+):(\d+)/);if(s){e.source=s[1],e.lineno=parseInt(s[2],10),e.colno=parseInt(s[3],10);break}}}catch{}if(n.handleSourceMaps&&e.source&&e.lineno)try{let o=await O(e.source,e.lineno,e.colno||0);o&&(t.originalSource=o.originalSource,t.originalLine=o.originalLine,t.originalColumn=o.originalColumn,t.originalName=o.originalName,t.highlightLineNumber=o.originalLine,o.snippet&&(t.snippet=o.snippet))}catch{}n.debug&&L("[Scout] Sending:",t),n.endpoint&&N(n.endpoint,t)}function $(e){n.enabled&&g(e)}function H(e){m=e}function F(e){w={...w,...e}}function B(e,i){w[e]=i}function X(e){f(e)}function W(){if(n.trackUserInteractions){document.addEventListener("click",s=>{E.clicks++;let c=s.target,p=c.tagName?c.tagName.toLowerCase():"",l=(c.textContent||"").trim().slice(0,50);f({category:"click",message:p+(l?": "+l:"")})});let r=0;window.addEventListener("scroll",()=>{let s=Date.now();s-r>100&&(E.scrolls++,r=s)})}let e=history.pushState;history.pushState=function(){e.apply(this,arguments),f({category:"navigation",message:window.location.href})},window.addEventListener("popstate",()=>{f({category:"navigation",message:window.location.href})});let i=window.fetch;window.fetch=function(r,s){let c=typeof r=="string"?r:r?.url||"",p=s?.method||"GET",l=Date.now();return i.apply(this,arguments).then(d=>(f({category:"fetch",message:`${p} ${c}`,data:{status:d.status,duration:Date.now()-l}}),d)).catch(d=>{throw f({category:"fetch",message:`${p} ${c}`,data:{error:d.message,duration:Date.now()-l}}),d})};let t=XMLHttpRequest.prototype.open,o=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(r,s){return this._scoutMethod=r,this._scoutUrl=s,t.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let r=this,s=Date.now();return r.addEventListener("loadend",()=>{f({category:"xhr",message:`${r._scoutMethod||"GET"} ${r._scoutUrl||""}`,data:{status:r.status,duration:Date.now()-s}})}),o.apply(this,arguments)},n.addErrorEventListener&&window.addEventListener("error",async r=>{if(n.enabled){try{let s=r.error?r.error.stack:"No stack trace available";if(S(r.message))return;n.sendErrors&&g({type:"window.onerror",message:r.message,source:r.filename,lineno:r.lineno,colno:r.colno,errorTrace:s})}catch(s){h("[Scout] Error handler failure:",s)}n.selfHealingErrors&&r.preventDefault()}}),n.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",r=>{if(n.enabled){try{let s=r.reason,c=s?.stack||"No stack trace available";if(S(s?.message||""))return;n.sendErrors&&g({type:"Unhandled Promise Rejection",message:s?.message||"Unhandled Promise Rejection",reason:r.reason,errorTrace:c})}catch(s){h("[Scout] Rejection handler failure:",s)}n.selfHealingErrors&&r.preventDefault()}}),n.overrideConsoleError&&(console.error=function(...r){if(n.enabled)try{let s=new Error().stack;if(S(v(r)))return;n.sendErrors&&g({type:"console.error",errorTrace:s,args:v(r)})}catch(s){h("[Scout] console.error override failure:",s)}}),n.overrideConsoleWarn&&(console.warn=function(...r){if(n.enabled)try{let s=new Error().stack;if(S(v(r)))return;n.sendErrors&&g({type:"console.warn",errorTrace:s,args:v(r)})}catch(s){h("[Scout] console.warn override failure:",s)}});let a=n.endpoint?new URL(n.endpoint).origin:"";n.loadUAParser&&n.browserDetails&&a&&b(`${a}/vendor/ua-parser.min.js`,()=>{typeof UAParser<"u"&&(window._uaParserResult=new UAParser().getResult())}),n.handleSourceMaps&&a&&b(`${a}/vendor/source-map.min.js`)}function j(e={},i={}){if(e.user&&(m=e.user,delete e.user),C){u={...u,...e},n={...n,...i};return}u={...u,...e},n={...n,...i},C=!0,typeof window<"u"&&(W(),window.Scout={init:(t,o)=>{t?.user&&(m=t.user,delete t.user),u={...u,...t},o&&(n={...n,...o})},setScope:t=>{u={...u,...t}},setConfig:t=>{n={...n,...t}},setUser:H,setContext:F,setTag:B,addBreadcrumb:f,error:$})}export{X as addBreadcrumb,$ as captureError,j as init,F as setContext,B as setTag,H as setUser};
1
+ var N=Object.defineProperty;var I=Object.getOwnPropertySymbols;var O=Object.prototype.hasOwnProperty,$=Object.prototype.propertyIsEnumerable;var T=(e,a,n)=>a in e?N(e,a,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[a]=n,l=(e,a)=>{for(var n in a||(a={}))O.call(a,n)&&T(e,n,a[n]);if(I)for(var n of I(a))$.call(a,n)&&T(e,n,a[n]);return e};var S=(e,a,n)=>new Promise((o,i)=>{var r=c=>{try{u(n.next(c))}catch(f){i(f)}},t=c=>{try{u(n.throw(c))}catch(f){i(f)}},u=c=>c.done?o(c.value):Promise.resolve(c.value).then(r,t);u((n=n.apply(e,a)).next())});var H={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=l({},H),D,g={environment:typeof window!="undefined"&&((D=window.location)==null?void 0:D.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.5",project:null,release:null,version:null,app:null},M={clicks:0,scrolls:0},k=null,x=!1,w=null,h={},_=[],F=30;var v=console.warn;var U=console.log;function R(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function B(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",R("user")),localStorage.getItem("__scoutUserId")),a=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",R("session")),sessionStorage.getItem("__scoutSessionId"));return k=k||R("pageload"),{pageloadId:k,userId:e,sessionId:a}}function W(){var n,o,i;if((o=(n=window._uaParserResult)==null?void 0:n.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(r=>e.match(r.p)))==null?void 0:i.n)||"Unknown"}function X(){var n,o,i;if((o=(n=window._uaParserResult)==null?void 0:n.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(r=>e.match(r.p)))==null?void 0:i.n)||"Unknown"}function j(){var a,n,o,i,r,t,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:W(),browserVersion:((n=(a=window._uaParserResult)==null?void 0:a.browser)==null?void 0:n.version)||null,os:X(),osVersion:((i=(o=window._uaParserResult)==null?void 0:o.os)==null?void 0:i.version)||null,deviceType:((t=(r=window._uaParserResult)==null?void 0:r.device)==null?void 0:t.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:M.clicks,userScrolls:M.scrolls}}function y(e){return!s.ignoreErrors||!Array.isArray(s.ignoreErrors)?!1:s.ignoreErrors.some(a=>typeof a=="string"?e.includes(a):a instanceof RegExp?a.test(e):!1)}function V(e,a){let n=new AbortController,o=setTimeout(()=>n.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(a),signal:n.signal}).then(r=>(clearTimeout(o),r)).catch(()=>{clearTimeout(o)})}function E(e){let a=(e[0]||"")+"",n=[...e];return a.replace(/%[sdj]/g,o=>{let i=n.shift();return o==="%s"?String(i):o==="%d"?Number(i):o==="%j"?JSON.stringify(i):o})}function P(e,a){let n=document.createElement("script");n.src=e,n.async=!0,a&&(n.onload=a),document.head.appendChild(n)}function q(e,a,n){return S(this,null,function*(){var o;try{let i=yield fetch(e);if(!i.ok)return null;let r=yield i.text(),t=r.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),u=r.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(t)c=JSON.parse(atob(t[1]));else if(u){let A=new URL(u[1],e).href,b=yield fetch(A);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:a,column:n});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 p(e){_.push(l({timestamp:Date.now()},e)),_.length>F&&_.shift()}function m(e){return S(this,null,function*(){let a=s.browserDetails?j():{},n=Object.assign(e,a,g,B());if(w&&(n.user=w),Object.keys(h).length&&(n.context=l({},h)),n.breadcrumbs=_.slice(),s.sampleRate&&Math.random()<1-parseFloat(s.sampleRate)){s.debug&&U("[Scout] Suppressed by sampling");return}if(s.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let o=e.errorTrace.split(`
2
+ `),i=[o[0]];for(let r=1;r<o.length;r++)!o[r].includes("/scout")&&!o[r].includes("scout.js")&&!o[r].includes("scout-error")&&i.push(o[r]);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 r=1;r<i.length;r++){let t=i[r].trim().match(/(http.*?):(\d+):(\d+)/);if(t){e.source=t[1],e.lineno=parseInt(t[2],10),e.colno=parseInt(t[3],10);break}}}catch(o){}if(s.handleSourceMaps&&e.source&&e.lineno)try{let o=yield q(e.source,e.lineno,e.colno||0);o&&(n.originalSource=o.originalSource,n.originalLine=o.originalLine,n.originalColumn=o.originalColumn,n.originalName=o.originalName,n.highlightLineNumber=o.originalLine,o.snippet&&(n.snippet=o.snippet))}catch(o){}s.debug&&U("[Scout] Sending:",n),s.endpoint&&V(s.endpoint,n)})}function z(e){s.enabled&&m(e)}function J(e){w=e}function G(e){h=l(l({},h),e)}function K(e,a){h[e]=a}function Y(e){p(e)}function Z(){if(s.trackUserInteractions){document.addEventListener("click",t=>{M.clicks++;let u=t.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 t=Date.now();t-r>100&&(M.scrolls++,r=t)})}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 a=window.fetch;window.fetch=function(r,t){let u=typeof r=="string"?r:(r==null?void 0:r.url)||"",c=(t==null?void 0:t.method)||"GET",f=Date.now();return a.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 n=XMLHttpRequest.prototype.open,o=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(r,t){return this._scoutMethod=r,this._scoutUrl=t,n.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){let r=this,t=Date.now();return r.addEventListener("loadend",()=>{p({category:"xhr",message:`${r._scoutMethod||"GET"} ${r._scoutUrl||""}`,data:{status:r.status,duration:Date.now()-t}})}),o.apply(this,arguments)},s.addErrorEventListener&&window.addEventListener("error",r=>S(this,null,function*(){if(s.enabled){try{let t=r.error?r.error.stack:"No stack trace available";if(y(r.message))return;s.sendErrors&&m({type:"window.onerror",message:r.message,source:r.filename,lineno:r.lineno,colno:r.colno,errorTrace:t})}catch(t){v("[Scout] Error handler failure:",t)}s.selfHealingErrors&&r.preventDefault()}})),s.addUnhandledRejectionEventListener&&window.addEventListener("unhandledrejection",r=>{if(s.enabled){try{let t=r.reason,u=(t==null?void 0:t.stack)||"No stack trace available";if(y((t==null?void 0:t.message)||""))return;s.sendErrors&&m({type:"Unhandled Promise Rejection",message:(t==null?void 0:t.message)||"Unhandled Promise Rejection",reason:r.reason,errorTrace:u})}catch(t){v("[Scout] Rejection handler failure:",t)}s.selfHealingErrors&&r.preventDefault()}}),s.overrideConsoleError&&(console.error=function(...r){if(s.enabled)try{let t=new Error().stack;if(y(E(r)))return;s.sendErrors&&m({type:"console.error",errorTrace:t,args:E(r)})}catch(t){v("[Scout] console.error override failure:",t)}}),s.overrideConsoleWarn&&(console.warn=function(...r){if(s.enabled)try{let t=new Error().stack;if(y(E(r)))return;s.sendErrors&&m({type:"console.warn",errorTrace:t,args:E(r)})}catch(t){v("[Scout] console.warn override failure:",t)}});let i=s.endpoint?new URL(s.endpoint).origin:"";s.loadUAParser&&s.browserDetails&&i&&P(`${i}/vendor/ua-parser.min.js`,()=>{typeof UAParser!="undefined"&&(window._uaParserResult=new UAParser().getResult())}),s.handleSourceMaps&&i&&P(`${i}/vendor/source-map.min.js`)}function ee(e={},a={}){if(e.user&&(w=e.user,delete e.user),x){g=l(l({},g),e),s=l(l({},s),a);return}g=l(l({},g),e),s=l(l({},s),a),x=!0,typeof window!="undefined"&&(Z(),window.Scout={init:(n,o)=>{n!=null&&n.user&&(w=n.user,delete n.user),g=l(l({},g),n),o&&(s=l(l({},s),o))},setScope:n=>{g=l(l({},g),n)},setConfig:n=>{s=l(l({},s),n)},setUser:J,setContext:G,setTag:K,addBreadcrumb:p,error:z})}export{Y as addBreadcrumb,z as captureError,ee as init,G as setContext,K as setTag,J as setUser};
5
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/index.js"],
4
4
  "sourcesContent": ["/**\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 // Resolve source maps if enabled and we have a source location\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 event.originalSource = resolved.originalSource\n event.originalLine = resolved.originalLine\n event.originalColumn = resolved.originalColumn\n event.originalName = resolved.originalName\n event.highlightLineNumber = resolved.originalLine\n if (resolved.snippet) event.snippet = resolved.snippet\n }\n } catch (e) { /* fail silently */ }\n }\n\n if (config.debug) _consoleLog('[Scout] Sending:', event)\n if (config.endpoint) postData(config.endpoint, event)\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 window.Scout = {\n init: (s, c) => { if (s?.user) { userContext = s.user; delete s.user }; scope = { ...scope, ...s }; if (c) config = { ...config, ...c } },\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}\n"],
5
- "mappings": "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",
6
- "names": ["defaultConfig", "config", "scope", "userInteractions", "pageloadId", "initialized", "userContext", "customContext", "breadcrumbs", "MAX_BREADCRUMBS", "_consoleWarn", "_consoleLog", "generateId", "prefix", "getIds", "userId", "sessionId", "pageloadId", "getBrowser", "ua", "b", "getOS", "o", "captureBrowserDetails", "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", "jsResponse", "jsCode", "inlineMatch", "externalMatch", "sourceMapData", "mapURL", "mapResponse", "pos", "sourceIndex", "snippet", "_addBreadcrumb", "crumb", "breadcrumbs", "MAX_BREADCRUMBS", "pushErrorEvent", "obj", "details", "event", "scope", "userContext", "customContext", "lines", "filtered", "i", "stack", "match", "resolved", "captureError", "setUser", "user", "setContext", "ctx", "setTag", "key", "value", "addBreadcrumb", "setupListeners", "e", "el", "tag", "text", "lastScroll", "now", "origPushState", "origFetch", "input", "init", "method", "start", "response", "err", "origOpen", "origSend", "self", "errorTrace", "_consoleWarn", "error", "baseUrl", "scopeOptions", "configOptions", "initialized", "c"]
5
+ "mappings": "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",
6
+ "names": ["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", "captureError", "setUser", "user", "setContext", "ctx", "setTag", "key", "value", "addBreadcrumb", "setupListeners", "el", "tag", "text", "lastScroll", "now", "origPushState", "origFetch", "input", "init", "method", "start", "response", "err", "origOpen", "origSend", "self", "errorTrace", "_consoleWarn", "error", "baseUrl", "scopeOptions", "configOptions", "initialized", "c"]
7
7
  }
package/dist/node.cjs CHANGED
@@ -1,2 +1,2 @@
1
- var p=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var f=(e,t)=>{for(var s in t)p(e,s,{get:t[s],enumerable:!0})},k=(e,t,s,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of m(t))!g.call(e,r)&&r!==s&&p(e,r,{get:()=>t[r],enumerable:!(u=l(t,r))||u.enumerable});return e};var h=e=>k(p({},"__esModule",{value:!0}),e);var j={};f(j,{addBreadcrumb:()=>b,captureError:()=>O,errorHandlingMiddleware:()=>D,initTracker:()=>x,setContext:()=>T,setTag:()=>y,setUser:()=>E});module.exports=h(j);var n={debug:!1,endpoint:"",token:null,sendErrors:!0,captureUserDetails:!1,captureRequestDetails:!0,captureStackTrace:!0},a={environment:process.env.NODE_ENV||"production",project:null,release:null,version:null,sdk:"node",sdkVersion:"0.2.4",nodeVersion:process.version,platform:process.platform,arch:process.arch},d=null,o={},c=[],S=30;function i(e){if(n.debug&&console.error("[Scout]:",e),d&&(e.user=d),Object.keys(o).length&&(e.context={...o}),e.breadcrumbs=c.slice(),n.endpoint&&n.sendErrors){let t={"Content-Type":"application/json"};n.token&&(t["X-Ingest-Token"]=n.token),fetch(n.endpoint,{method:"POST",headers:t,body:JSON.stringify(e)}).catch(s=>{console.error("[Scout] Failed to send error:",s.message)})}}function x(e={},t={}){a={...a,...e},n={...n,...t},process.on("uncaughtException",s=>{i({type:"uncaughtException",message:s.message,stack:s.stack,errorTrace:s.stack,timestamp:new Date().toISOString(),...a})}),process.on("unhandledRejection",s=>{i({type:"unhandledRejection",message:s?.message||"Unhandled Promise Rejection",stack:s?.stack||"No stack trace",errorTrace:s?.stack||"No stack trace",timestamp:new Date().toISOString(),...a})})}function D(e,t,s,u){let r={type:"expressError",message:e.message,stack:n.captureStackTrace?e.stack:void 0,errorTrace:n.captureStackTrace?e.stack:void 0,path:t.originalUrl,method:t.method,params:t.params,query:t.query,headers:n.captureRequestDetails?t.headers:void 0,timestamp:new Date().toISOString(),...a};n.captureUserDetails&&t.user&&(r.user={id:t.user.id||t.user._id,email:t.user.email,name:t.user.name||t.user.username}),i(r),s.status(500).json({error:"Internal Server Error"})}function E(e){d=e}function T(e){o={...o,...e}}function y(e,t){o[e]=t}function b(e){c.push({timestamp:Date.now(),...e}),c.length>S&&c.shift()}function O(e,t={}){let s={type:"manual",message:e?.message||String(e),stack:e?.stack,errorTrace:e?.stack,timestamp:new Date().toISOString(),...a};Object.keys(t).length&&(s.context={...o,...t}),i(s)}0&&(module.exports={addBreadcrumb,captureError,errorHandlingMiddleware,initTracker,setContext,setTag,setUser});
1
+ var p=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var f=(e,t)=>{for(var s in t)p(e,s,{get:t[s],enumerable:!0})},k=(e,t,s,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of m(t))!g.call(e,r)&&r!==s&&p(e,r,{get:()=>t[r],enumerable:!(u=l(t,r))||u.enumerable});return e};var h=e=>k(p({},"__esModule",{value:!0}),e);var j={};f(j,{addBreadcrumb:()=>b,captureError:()=>O,errorHandlingMiddleware:()=>D,initTracker:()=>x,setContext:()=>T,setTag:()=>y,setUser:()=>E});module.exports=h(j);var n={debug:!1,endpoint:"",token:null,sendErrors:!0,captureUserDetails:!1,captureRequestDetails:!0,captureStackTrace:!0},a={environment:process.env.NODE_ENV||"production",project:null,release:null,version:null,sdk:"node",sdkVersion:"0.2.5",nodeVersion:process.version,platform:process.platform,arch:process.arch},d=null,o={},c=[],S=30;function i(e){if(n.debug&&console.error("[Scout]:",e),d&&(e.user=d),Object.keys(o).length&&(e.context={...o}),e.breadcrumbs=c.slice(),n.endpoint&&n.sendErrors){let t={"Content-Type":"application/json"};n.token&&(t["X-Ingest-Token"]=n.token),fetch(n.endpoint,{method:"POST",headers:t,body:JSON.stringify(e)}).catch(s=>{console.error("[Scout] Failed to send error:",s.message)})}}function x(e={},t={}){a={...a,...e},n={...n,...t},process.on("uncaughtException",s=>{i({type:"uncaughtException",message:s.message,stack:s.stack,errorTrace:s.stack,timestamp:new Date().toISOString(),...a})}),process.on("unhandledRejection",s=>{i({type:"unhandledRejection",message:s?.message||"Unhandled Promise Rejection",stack:s?.stack||"No stack trace",errorTrace:s?.stack||"No stack trace",timestamp:new Date().toISOString(),...a})})}function D(e,t,s,u){let r={type:"expressError",message:e.message,stack:n.captureStackTrace?e.stack:void 0,errorTrace:n.captureStackTrace?e.stack:void 0,path:t.originalUrl,method:t.method,params:t.params,query:t.query,headers:n.captureRequestDetails?t.headers:void 0,timestamp:new Date().toISOString(),...a};n.captureUserDetails&&t.user&&(r.user={id:t.user.id||t.user._id,email:t.user.email,name:t.user.name||t.user.username}),i(r),s.status(500).json({error:"Internal Server Error"})}function E(e){d=e}function T(e){o={...o,...e}}function y(e,t){o[e]=t}function b(e){c.push({timestamp:Date.now(),...e}),c.length>S&&c.shift()}function O(e,t={}){let s={type:"manual",message:e?.message||String(e),stack:e?.stack,errorTrace:e?.stack,timestamp:new Date().toISOString(),...a};Object.keys(t).length&&(s.context={...o,...t}),i(s)}0&&(module.exports={addBreadcrumb,captureError,errorHandlingMiddleware,initTracker,setContext,setTag,setUser});
2
2
  //# sourceMappingURL=node.cjs.map
package/dist/node.js CHANGED
@@ -1,2 +1,2 @@
1
- var n={debug:!1,endpoint:"",token:null,sendErrors:!0,captureUserDetails:!1,captureRequestDetails:!0,captureStackTrace:!0},r={environment:process.env.NODE_ENV||"production",project:null,release:null,version:null,sdk:"node",sdkVersion:"0.2.4",nodeVersion:process.version,platform:process.platform,arch:process.arch},i=null,a={},o=[],p=30;function c(e){if(n.debug&&console.error("[Scout]:",e),i&&(e.user=i),Object.keys(a).length&&(e.context={...a}),e.breadcrumbs=o.slice(),n.endpoint&&n.sendErrors){let t={"Content-Type":"application/json"};n.token&&(t["X-Ingest-Token"]=n.token),fetch(n.endpoint,{method:"POST",headers:t,body:JSON.stringify(e)}).catch(s=>{console.error("[Scout] Failed to send error:",s.message)})}}function l(e={},t={}){r={...r,...e},n={...n,...t},process.on("uncaughtException",s=>{c({type:"uncaughtException",message:s.message,stack:s.stack,errorTrace:s.stack,timestamp:new Date().toISOString(),...r})}),process.on("unhandledRejection",s=>{c({type:"unhandledRejection",message:s?.message||"Unhandled Promise Rejection",stack:s?.stack||"No stack trace",errorTrace:s?.stack||"No stack trace",timestamp:new Date().toISOString(),...r})})}function m(e,t,s,d){let u={type:"expressError",message:e.message,stack:n.captureStackTrace?e.stack:void 0,errorTrace:n.captureStackTrace?e.stack:void 0,path:t.originalUrl,method:t.method,params:t.params,query:t.query,headers:n.captureRequestDetails?t.headers:void 0,timestamp:new Date().toISOString(),...r};n.captureUserDetails&&t.user&&(u.user={id:t.user.id||t.user._id,email:t.user.email,name:t.user.name||t.user.username}),c(u),s.status(500).json({error:"Internal Server Error"})}function g(e){i=e}function f(e){a={...a,...e}}function k(e,t){a[e]=t}function h(e){o.push({timestamp:Date.now(),...e}),o.length>p&&o.shift()}function S(e,t={}){let s={type:"manual",message:e?.message||String(e),stack:e?.stack,errorTrace:e?.stack,timestamp:new Date().toISOString(),...r};Object.keys(t).length&&(s.context={...a,...t}),c(s)}export{h as addBreadcrumb,S as captureError,m as errorHandlingMiddleware,l as initTracker,f as setContext,k as setTag,g as setUser};
1
+ var n={debug:!1,endpoint:"",token:null,sendErrors:!0,captureUserDetails:!1,captureRequestDetails:!0,captureStackTrace:!0},r={environment:process.env.NODE_ENV||"production",project:null,release:null,version:null,sdk:"node",sdkVersion:"0.2.5",nodeVersion:process.version,platform:process.platform,arch:process.arch},i=null,a={},o=[],p=30;function c(e){if(n.debug&&console.error("[Scout]:",e),i&&(e.user=i),Object.keys(a).length&&(e.context={...a}),e.breadcrumbs=o.slice(),n.endpoint&&n.sendErrors){let t={"Content-Type":"application/json"};n.token&&(t["X-Ingest-Token"]=n.token),fetch(n.endpoint,{method:"POST",headers:t,body:JSON.stringify(e)}).catch(s=>{console.error("[Scout] Failed to send error:",s.message)})}}function l(e={},t={}){r={...r,...e},n={...n,...t},process.on("uncaughtException",s=>{c({type:"uncaughtException",message:s.message,stack:s.stack,errorTrace:s.stack,timestamp:new Date().toISOString(),...r})}),process.on("unhandledRejection",s=>{c({type:"unhandledRejection",message:s?.message||"Unhandled Promise Rejection",stack:s?.stack||"No stack trace",errorTrace:s?.stack||"No stack trace",timestamp:new Date().toISOString(),...r})})}function m(e,t,s,d){let u={type:"expressError",message:e.message,stack:n.captureStackTrace?e.stack:void 0,errorTrace:n.captureStackTrace?e.stack:void 0,path:t.originalUrl,method:t.method,params:t.params,query:t.query,headers:n.captureRequestDetails?t.headers:void 0,timestamp:new Date().toISOString(),...r};n.captureUserDetails&&t.user&&(u.user={id:t.user.id||t.user._id,email:t.user.email,name:t.user.name||t.user.username}),c(u),s.status(500).json({error:"Internal Server Error"})}function g(e){i=e}function f(e){a={...a,...e}}function k(e,t){a[e]=t}function h(e){o.push({timestamp:Date.now(),...e}),o.length>p&&o.shift()}function S(e,t={}){let s={type:"manual",message:e?.message||String(e),stack:e?.stack,errorTrace:e?.stack,timestamp:new Date().toISOString(),...r};Object.keys(t).length&&(s.context={...a,...t}),c(s)}export{h as addBreadcrumb,S as captureError,m as errorHandlingMiddleware,l as initTracker,f as setContext,k as setTag,g as setUser};
2
2
  //# sourceMappingURL=node.js.map
package/dist/react.cjs CHANGED
@@ -1,5 +1,5 @@
1
- var C=Object.create;var u=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var L=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var T=(e,t)=>{for(var r in t)u(e,r,{get:t[r],enumerable:!0})},w=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of b(t))!I.call(e,o)&&o!==r&&u(e,o,{get:()=>t[o],enumerable:!(n=R(t,o))||n.enumerable});return e};var x=(e,t,r)=>(r=e!=null?C(L(e)):{},w(t||!e||!e.__esModule?u(r,"default",{value:e,enumerable:!0}):r,e)),U=e=>w(u({},"__esModule",{value:!0}),e);var B={};T(B,{ScoutErrorBoundary:()=>p});module.exports=U(B);var _=x(require("react"),1);var D={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={...D},P={environment:typeof window<"u"&&window.location?.hostname==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.4",project:null,release:null,version:null,app:null},S={clicks:0,scrolls:0},d=null;var v=null,E={},A=[];var y=console.log;function f(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function N(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",f("user")),localStorage.getItem("__scoutUserId")),t=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",f("session")),sessionStorage.getItem("__scoutSessionId"));return d=d||f("pageload"),{pageloadId:d,userId:e,sessionId:t}}function O(){if(window._uaParserResult?.browser?.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return[{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))?.n||"Unknown"}function $(){if(window._uaParserResult?.os?.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return[{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))?.n||"Unknown"}function 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:O(),browserVersion:window._uaParserResult?.browser?.version||null,os:$(),osVersion:window._uaParserResult?.os?.version||null,deviceType:window._uaParserResult?.device?.type||null,deviceModel:window._uaParserResult?.device?.model||null,deviceVendor:window._uaParserResult?.device?.vendor||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:S.clicks,userScrolls:S.scrolls}}function H(e,t){let r=new AbortController,n=setTimeout(()=>r.abort(),5e3),o={"Content-Type":"application/json"};return a.token&&(o["X-Ingest-Token"]=a.token),fetch(e,{method:"POST",headers:o,body:JSON.stringify(t),signal:r.signal}).then(s=>(clearTimeout(n),s)).catch(()=>{clearTimeout(n)})}async function W(e,t,r){try{let n=await fetch(e);if(!n.ok)return null;let o=await n.text(),s=o.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),i=o.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(s)c=JSON.parse(atob(s[1]));else if(i){let M=new URL(i[1],e).href,h=await fetch(M);if(!h.ok)return null;c=await h.json()}else return null;if(!window.sourceMap?.SourceMapConsumer)return null;let l=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:t,column:r});if(!l.source)return null;let g=c.sources.indexOf(l.source),m=null;return c.sourcesContent&&c.sourcesContent[g]&&(m=c.sourcesContent[g]),{originalSource:l.source,originalLine:l.line,originalColumn:l.column,originalName:l.name,snippet:m}}catch{return null}}async function X(e){let t=a.browserDetails?F():{},r=Object.assign(e,t,P,N());if(v&&(r.user=v),Object.keys(E).length&&(r.context={...E}),r.breadcrumbs=A.slice(),a.sampleRate&&Math.random()<1-parseFloat(a.sampleRate)){a.debug&&y("[Scout] Suppressed by sampling");return}if(a.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let n=e.errorTrace.split(`
2
- `),o=[n[0]];for(let s=1;s<n.length;s++)!n[s].includes("/scout")&&!n[s].includes("scout.js")&&!n[s].includes("scout-error")&&o.push(n[s]);o.length>1&&(e.errorTrace=o.join(`
3
- `))}catch{}if((e.errorTrace||e.stack)&&!e.source)try{let n=e.errorTrace||e.stack,o=n?n.split(`
4
- `):[];for(let s=1;s<o.length;s++){let i=o[s].trim().match(/(http.*?):(\d+):(\d+)/);if(i){e.source=i[1],e.lineno=parseInt(i[2],10),e.colno=parseInt(i[3],10);break}}}catch{}if(a.handleSourceMaps&&e.source&&e.lineno)try{let n=await W(e.source,e.lineno,e.colno||0);n&&(r.originalSource=n.originalSource,r.originalLine=n.originalLine,r.originalColumn=n.originalColumn,r.originalName=n.originalName,r.highlightLineNumber=n.originalLine,n.snippet&&(r.snippet=n.snippet))}catch{}a.debug&&y("[Scout] Sending:",r),a.endpoint&&H(a.endpoint,r)}function k(e){a.enabled&&X(e)}var p=class extends _.default.Component{constructor(t){super(t),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(t,r){k({message:t.message,stack:t.stack,errorTrace:t.stack,component:r?.componentStack||"",type:"react-error-boundary"})}render(){return this.state.hasError?this.props.fallback||null:this.props.children}};
1
+ var D=Object.create;var f=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames,y=Object.getOwnPropertySymbols,N=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var k=(e,n,r)=>n in e?f(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r,p=(e,n)=>{for(var r in n||(n={}))_.call(n,r)&&k(e,r,n[r]);if(y)for(var r of y(n))O.call(n,r)&&k(e,r,n[r]);return e};var $=(e,n)=>{for(var r in n)f(e,r,{get:n[r],enumerable:!0})},M=(e,n,r,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of A(n))!_.call(e,o)&&o!==r&&f(e,o,{get:()=>n[o],enumerable:!(t=P(n,o))||t.enumerable});return e};var F=(e,n,r)=>(r=e!=null?D(N(e)):{},M(n||!e||!e.__esModule?f(r,"default",{value:e,enumerable:!0}):r,e)),H=e=>M(f({},"__esModule",{value:!0}),e);var g=(e,n,r)=>new Promise((t,o)=>{var s=a=>{try{l(r.next(a))}catch(d){o(d)}},i=a=>{try{l(r.throw(a))}catch(d){o(d)}},l=a=>a.done?t(a.value):Promise.resolve(a.value).then(s,i);l((r=r.apply(e,n)).next())});var Z={};$(Z,{ScoutErrorBoundary:()=>w});module.exports=H(Z);var I=F(require("react"),1);var W={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},c=p({},W),T,X={environment:typeof window!="undefined"&&((T=window.location)==null?void 0:T.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.5",project:null,release:null,version:null,app:null},C={clicks:0,scrolls:0},m=null;var R=null,b={},B=[];var L=console.log;function h(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function j(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",h("user")),localStorage.getItem("__scoutUserId")),n=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",h("session")),sessionStorage.getItem("__scoutSessionId"));return m=m||h("pageload"),{pageloadId:m,userId:e,sessionId:n}}function V(){var r,t,o;if((t=(r=window._uaParserResult)==null?void 0:r.browser)!=null&&t.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((o=[{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(s=>e.match(s.p)))==null?void 0:o.n)||"Unknown"}function q(){var r,t,o;if((t=(r=window._uaParserResult)==null?void 0:r.os)!=null&&t.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((o=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(s=>e.match(s.p)))==null?void 0:o.n)||"Unknown"}function z(){var n,r,t,o,s,i,l,a,d,u;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:V(),browserVersion:((r=(n=window._uaParserResult)==null?void 0:n.browser)==null?void 0:r.version)||null,os:q(),osVersion:((o=(t=window._uaParserResult)==null?void 0:t.os)==null?void 0:o.version)||null,deviceType:((i=(s=window._uaParserResult)==null?void 0:s.device)==null?void 0:i.type)||null,deviceModel:((a=(l=window._uaParserResult)==null?void 0:l.device)==null?void 0:a.model)||null,deviceVendor:((u=(d=window._uaParserResult)==null?void 0:d.device)==null?void 0:u.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:C.clicks,userScrolls:C.scrolls}}function J(e,n){let r=new AbortController,t=setTimeout(()=>r.abort(),5e3),o={"Content-Type":"application/json"};return c.token&&(o["X-Ingest-Token"]=c.token),fetch(e,{method:"POST",headers:o,body:JSON.stringify(n),signal:r.signal}).then(s=>(clearTimeout(t),s)).catch(()=>{clearTimeout(t)})}function G(e,n,r){return g(this,null,function*(){var t;try{let o=yield fetch(e);if(!o.ok)return null;let s=yield o.text(),i=s.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),l=s.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),a;if(i)a=JSON.parse(atob(i[1]));else if(l){let U=new URL(l[1],e).href,E=yield fetch(U);if(!E.ok)return null;a=yield E.json()}else return null;if(!((t=window.sourceMap)!=null&&t.SourceMapConsumer))return null;let u=new window.sourceMap.SourceMapConsumer(a).originalPositionFor({line:n,column:r});if(!u.source)return null;let S=a.sources.indexOf(u.source),v=null;return a.sourcesContent&&a.sourcesContent[S]&&(v=a.sourcesContent[S]),{originalSource:u.source,originalLine:u.line,originalColumn:u.column,originalName:u.name,snippet:v}}catch(o){return null}})}function K(e){return g(this,null,function*(){let n=c.browserDetails?z():{},r=Object.assign(e,n,X,j());if(R&&(r.user=R),Object.keys(b).length&&(r.context=p({},b)),r.breadcrumbs=B.slice(),c.sampleRate&&Math.random()<1-parseFloat(c.sampleRate)){c.debug&&L("[Scout] Suppressed by sampling");return}if(c.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let t=e.errorTrace.split(`
2
+ `),o=[t[0]];for(let s=1;s<t.length;s++)!t[s].includes("/scout")&&!t[s].includes("scout.js")&&!t[s].includes("scout-error")&&o.push(t[s]);o.length>1&&(e.errorTrace=o.join(`
3
+ `))}catch(t){}if((e.errorTrace||e.stack)&&!e.source)try{let t=e.errorTrace||e.stack,o=t?t.split(`
4
+ `):[];for(let s=1;s<o.length;s++){let i=o[s].trim().match(/(http.*?):(\d+):(\d+)/);if(i){e.source=i[1],e.lineno=parseInt(i[2],10),e.colno=parseInt(i[3],10);break}}}catch(t){}if(c.handleSourceMaps&&e.source&&e.lineno)try{let t=yield G(e.source,e.lineno,e.colno||0);t&&(r.originalSource=t.originalSource,r.originalLine=t.originalLine,r.originalColumn=t.originalColumn,r.originalName=t.originalName,r.highlightLineNumber=t.originalLine,t.snippet&&(r.snippet=t.snippet))}catch(t){}c.debug&&L("[Scout] Sending:",r),c.endpoint&&J(c.endpoint,r)})}function x(e){c.enabled&&K(e)}var w=class extends I.default.Component{constructor(n){super(n),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(n,r){x({message:n.message,stack:n.stack,errorTrace:n.stack,component:(r==null?void 0:r.componentStack)||"",type:"react-error-boundary"})}render(){return this.state.hasError?this.props.fallback||null:this.props.children}};
5
5
  //# sourceMappingURL=react.cjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/react.js", "../src/index.js"],
4
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 // Resolve source maps if enabled and we have a source location\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 event.originalSource = resolved.originalSource\n event.originalLine = resolved.originalLine\n event.originalColumn = resolved.originalColumn\n event.originalName = resolved.originalName\n event.highlightLineNumber = resolved.originalLine\n if (resolved.snippet) event.snippet = resolved.snippet\n }\n } catch (e) { /* fail silently */ }\n }\n\n if (config.debug) _consoleLog('[Scout] Sending:', event)\n if (config.endpoint) postData(config.endpoint, event)\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 window.Scout = {\n init: (s, c) => { if (s?.user) { userContext = s.user; delete s.user }; scope = { ...scope, ...s }; if (c) config = { ...config, ...c } },\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}\n"],
5
- "mappings": "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",
6
- "names": ["react_exports", "__export", "ScoutErrorBoundary", "__toCommonJS", "import_react", "defaultConfig", "config", "scope", "userInteractions", "pageloadId", "userContext", "customContext", "breadcrumbs", "_consoleLog", "generateId", "prefix", "getIds", "userId", "sessionId", "pageloadId", "getBrowser", "ua", "b", "getOS", "o", "captureBrowserDetails", "conn", "userInteractions", "postData", "url", "data", "controller", "timeout", "headers", "config", "r", "resolveSourceMap", "sourceUrl", "lineno", "colno", "jsResponse", "jsCode", "inlineMatch", "externalMatch", "sourceMapData", "mapURL", "mapResponse", "pos", "sourceIndex", "snippet", "pushErrorEvent", "obj", "details", "config", "captureBrowserDetails", "event", "scope", "getIds", "userContext", "customContext", "breadcrumbs", "_consoleLog", "lines", "filtered", "i", "stack", "match", "resolved", "resolveSourceMap", "postData", "captureError", "ScoutErrorBoundary", "React", "props", "error", "errorInfo", "captureError"]
5
+ "mappings": "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",
6
+ "names": ["react_exports", "__export", "ScoutErrorBoundary", "__toCommonJS", "import_react", "defaultConfig", "config", "__spreadValues", "_a", "scope", "userInteractions", "pageloadId", "userContext", "customContext", "breadcrumbs", "_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", "postData", "url", "data", "controller", "timeout", "headers", "config", "r", "resolveSourceMap", "sourceUrl", "lineno", "colno", "__async", "_a", "jsResponse", "jsCode", "inlineMatch", "externalMatch", "sourceMapData", "mapURL", "mapResponse", "pos", "sourceIndex", "snippet", "e", "pushErrorEvent", "obj", "__async", "details", "config", "captureBrowserDetails", "event", "scope", "getIds", "userContext", "customContext", "__spreadValues", "breadcrumbs", "_consoleLog", "lines", "filtered", "i", "e", "stack", "match", "resolved", "resolveSourceMap", "postData", "captureError", "ScoutErrorBoundary", "React", "props", "error", "errorInfo", "captureError"]
7
7
  }
package/dist/react.js CHANGED
@@ -1,5 +1,5 @@
1
- import U from"react";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},a={...k},_={environment:typeof window<"u"&&window.location?.hostname==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.4",project:null,release:null,version:null,app:null},m={clicks:0,scrolls:0},u=null;var h=null,w={},M=[];var S=console.log;function d(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function C(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",d("user")),localStorage.getItem("__scoutUserId")),t=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",d("session")),sessionStorage.getItem("__scoutSessionId"));return u=u||d("pageload"),{pageloadId:u,userId:e,sessionId:t}}function R(){if(window._uaParserResult?.browser?.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return[{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))?.n||"Unknown"}function b(){if(window._uaParserResult?.os?.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return[{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))?.n||"Unknown"}function L(){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:R(),browserVersion:window._uaParserResult?.browser?.version||null,os:b(),osVersion:window._uaParserResult?.os?.version||null,deviceType:window._uaParserResult?.device?.type||null,deviceModel:window._uaParserResult?.device?.model||null,deviceVendor:window._uaParserResult?.device?.vendor||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:m.clicks,userScrolls:m.scrolls}}function I(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),5e3),s={"Content-Type":"application/json"};return a.token&&(s["X-Ingest-Token"]=a.token),fetch(e,{method:"POST",headers:s,body:JSON.stringify(t),signal:n.signal}).then(o=>(clearTimeout(r),o)).catch(()=>{clearTimeout(r)})}async function T(e,t,n){try{let r=await fetch(e);if(!r.ok)return null;let s=await r.text(),o=s.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),i=s.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(o)c=JSON.parse(atob(o[1]));else if(i){let y=new URL(i[1],e).href,g=await fetch(y);if(!g.ok)return null;c=await g.json()}else return null;if(!window.sourceMap?.SourceMapConsumer)return null;let l=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:t,column:n});if(!l.source)return null;let f=c.sources.indexOf(l.source),p=null;return c.sourcesContent&&c.sourcesContent[f]&&(p=c.sourcesContent[f]),{originalSource:l.source,originalLine:l.line,originalColumn:l.column,originalName:l.name,snippet:p}}catch{return null}}async function x(e){let t=a.browserDetails?L():{},n=Object.assign(e,t,_,C());if(h&&(n.user=h),Object.keys(w).length&&(n.context={...w}),n.breadcrumbs=M.slice(),a.sampleRate&&Math.random()<1-parseFloat(a.sampleRate)){a.debug&&S("[Scout] Suppressed by sampling");return}if(a.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let r=e.errorTrace.split(`
2
- `),s=[r[0]];for(let o=1;o<r.length;o++)!r[o].includes("/scout")&&!r[o].includes("scout.js")&&!r[o].includes("scout-error")&&s.push(r[o]);s.length>1&&(e.errorTrace=s.join(`
3
- `))}catch{}if((e.errorTrace||e.stack)&&!e.source)try{let r=e.errorTrace||e.stack,s=r?r.split(`
4
- `):[];for(let o=1;o<s.length;o++){let i=s[o].trim().match(/(http.*?):(\d+):(\d+)/);if(i){e.source=i[1],e.lineno=parseInt(i[2],10),e.colno=parseInt(i[3],10);break}}}catch{}if(a.handleSourceMaps&&e.source&&e.lineno)try{let r=await T(e.source,e.lineno,e.colno||0);r&&(n.originalSource=r.originalSource,n.originalLine=r.originalLine,n.originalColumn=r.originalColumn,n.originalName=r.originalName,n.highlightLineNumber=r.originalLine,r.snippet&&(n.snippet=r.snippet))}catch{}a.debug&&S("[Scout] Sending:",n),a.endpoint&&I(a.endpoint,n)}function v(e){a.enabled&&x(e)}var E=class extends U.Component{constructor(t){super(t),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(t,n){v({message:t.message,stack:t.stack,errorTrace:t.stack,component:n?.componentStack||"",type:"react-error-boundary"})}render(){return this.state.hasError?this.props.fallback||null:this.props.children}};export{E as ScoutErrorBoundary};
1
+ var T=Object.defineProperty;var v=Object.getOwnPropertySymbols;var x=Object.prototype.hasOwnProperty,I=Object.prototype.propertyIsEnumerable;var E=(e,t,r)=>t in e?T(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,f=(e,t)=>{for(var r in t||(t={}))x.call(t,r)&&E(e,r,t[r]);if(v)for(var r of v(t))I.call(t,r)&&E(e,r,t[r]);return e};var p=(e,t,r)=>new Promise((n,o)=>{var s=a=>{try{l(r.next(a))}catch(d){o(d)}},i=a=>{try{l(r.throw(a))}catch(d){o(d)}},l=a=>a.done?n(a.value):Promise.resolve(a.value).then(s,i);l((r=r.apply(e,t)).next())});import X from"react";var U={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},c=f({},U),C,D={environment:typeof window!="undefined"&&((C=window.location)==null?void 0:C.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.5",project:null,release:null,version:null,app:null},y={clicks:0,scrolls:0},g=null;var k=null,_={},P=[];var M=console.log;function m(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function A(){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 g=g||m("pageload"),{pageloadId:g,userId:e,sessionId:t}}function N(){var r,n,o;if((n=(r=window._uaParserResult)==null?void 0:r.browser)!=null&&n.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return((o=[{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(s=>e.match(s.p)))==null?void 0:o.n)||"Unknown"}function O(){var r,n,o;if((n=(r=window._uaParserResult)==null?void 0:r.os)!=null&&n.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return((o=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(s=>e.match(s.p)))==null?void 0:o.n)||"Unknown"}function $(){var t,r,n,o,s,i,l,a,d,u;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:N(),browserVersion:((r=(t=window._uaParserResult)==null?void 0:t.browser)==null?void 0:r.version)||null,os:O(),osVersion:((o=(n=window._uaParserResult)==null?void 0:n.os)==null?void 0:o.version)||null,deviceType:((i=(s=window._uaParserResult)==null?void 0:s.device)==null?void 0:i.type)||null,deviceModel:((a=(l=window._uaParserResult)==null?void 0:l.device)==null?void 0:a.model)||null,deviceVendor:((u=(d=window._uaParserResult)==null?void 0:d.device)==null?void 0:u.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:y.clicks,userScrolls:y.scrolls}}function F(e,t){let r=new AbortController,n=setTimeout(()=>r.abort(),5e3),o={"Content-Type":"application/json"};return c.token&&(o["X-Ingest-Token"]=c.token),fetch(e,{method:"POST",headers:o,body:JSON.stringify(t),signal:r.signal}).then(s=>(clearTimeout(n),s)).catch(()=>{clearTimeout(n)})}function H(e,t,r){return p(this,null,function*(){var n;try{let o=yield fetch(e);if(!o.ok)return null;let s=yield o.text(),i=s.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),l=s.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),a;if(i)a=JSON.parse(atob(i[1]));else if(l){let L=new URL(l[1],e).href,S=yield fetch(L);if(!S.ok)return null;a=yield S.json()}else return null;if(!((n=window.sourceMap)!=null&&n.SourceMapConsumer))return null;let u=new window.sourceMap.SourceMapConsumer(a).originalPositionFor({line:t,column:r});if(!u.source)return null;let h=a.sources.indexOf(u.source),w=null;return a.sourcesContent&&a.sourcesContent[h]&&(w=a.sourcesContent[h]),{originalSource:u.source,originalLine:u.line,originalColumn:u.column,originalName:u.name,snippet:w}}catch(o){return null}})}function W(e){return p(this,null,function*(){let t=c.browserDetails?$():{},r=Object.assign(e,t,D,A());if(k&&(r.user=k),Object.keys(_).length&&(r.context=f({},_)),r.breadcrumbs=P.slice(),c.sampleRate&&Math.random()<1-parseFloat(c.sampleRate)){c.debug&&M("[Scout] Suppressed by sampling");return}if(c.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let n=e.errorTrace.split(`
2
+ `),o=[n[0]];for(let s=1;s<n.length;s++)!n[s].includes("/scout")&&!n[s].includes("scout.js")&&!n[s].includes("scout-error")&&o.push(n[s]);o.length>1&&(e.errorTrace=o.join(`
3
+ `))}catch(n){}if((e.errorTrace||e.stack)&&!e.source)try{let n=e.errorTrace||e.stack,o=n?n.split(`
4
+ `):[];for(let s=1;s<o.length;s++){let i=o[s].trim().match(/(http.*?):(\d+):(\d+)/);if(i){e.source=i[1],e.lineno=parseInt(i[2],10),e.colno=parseInt(i[3],10);break}}}catch(n){}if(c.handleSourceMaps&&e.source&&e.lineno)try{let n=yield H(e.source,e.lineno,e.colno||0);n&&(r.originalSource=n.originalSource,r.originalLine=n.originalLine,r.originalColumn=n.originalColumn,r.originalName=n.originalName,r.highlightLineNumber=n.originalLine,n.snippet&&(r.snippet=n.snippet))}catch(n){}c.debug&&M("[Scout] Sending:",r),c.endpoint&&F(c.endpoint,r)})}function R(e){c.enabled&&W(e)}var b=class extends X.Component{constructor(t){super(t),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(t,r){R({message:t.message,stack:t.stack,errorTrace:t.stack,component:(r==null?void 0:r.componentStack)||"",type:"react-error-boundary"})}render(){return this.state.hasError?this.props.fallback||null:this.props.children}};export{b as ScoutErrorBoundary};
5
5
  //# sourceMappingURL=react.js.map
package/dist/react.js.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/react.js", "../src/index.js"],
4
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 // Resolve source maps if enabled and we have a source location\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 event.originalSource = resolved.originalSource\n event.originalLine = resolved.originalLine\n event.originalColumn = resolved.originalColumn\n event.originalName = resolved.originalName\n event.highlightLineNumber = resolved.originalLine\n if (resolved.snippet) event.snippet = resolved.snippet\n }\n } catch (e) { /* fail silently */ }\n }\n\n if (config.debug) _consoleLog('[Scout] Sending:', event)\n if (config.endpoint) postData(config.endpoint, event)\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 window.Scout = {\n init: (s, c) => { if (s?.user) { userContext = s.user; delete s.user }; scope = { ...scope, ...s }; if (c) config = { ...config, ...c } },\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}\n"],
5
- "mappings": "AAcA,OAAOA,MAAW,QCAlB,IAAMC,EAAgB,CACpB,sBAAuB,GACvB,kBAAmB,GACnB,iBAAkB,GAClB,iBAAkB,GAClB,eAAgB,GAChB,cAAe,GACf,aAAc,GACd,aAAc,KACd,WAAY,GACZ,WAAY,EACZ,QAAS,GACT,MAAO,GACP,SAAU,GACV,MAAO,KAEP,gBAAiB,GACjB,6BAA8B,GAC9B,sBAAuB,GACvB,mCAAoC,GAEpC,mBAAoB,GACpB,oBAAqB,GACrB,oBAAqB,GACrB,qBAAsB,EACxB,EAEIC,EAAS,CAAE,GAAGD,CAAc,EAE5BE,EAAQ,CACV,YAAa,OAAO,OAAW,KAAe,OAAO,UAAU,WAAa,YAAc,cAAgB,aAC1G,IAAK,aACL,WAAY,QACZ,QAAS,KACT,QAAS,KACT,QAAS,KACT,IAAK,IACP,EAEMC,EAAmB,CAAE,OAAQ,EAAG,QAAS,CAAE,EAC7CC,EAAa,KAEjB,IAAIC,EAAc,KACdC,EAAgB,CAAC,EACfC,EAAc,CAAC,EAOrB,IAAMC,EAAc,QAAQ,IAI5B,SAASC,EAAWC,EAAQ,CAC1B,MAAO,GAAGA,CAAM,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,EAAG,CAAC,CAAC,EAC7D,CAEA,SAASC,GAAS,CAChB,IAAMC,EAAS,aAAa,QAAQ,eAAe,IAAM,aAAa,QAAQ,gBAAiBH,EAAW,MAAM,CAAC,EAAG,aAAa,QAAQ,eAAe,GAClJI,EAAY,eAAe,QAAQ,kBAAkB,IAAM,eAAe,QAAQ,mBAAoBJ,EAAW,SAAS,CAAC,EAAG,eAAe,QAAQ,kBAAkB,GAC7K,OAAAK,EAAaA,GAAcL,EAAW,UAAU,EACzC,CAAE,WAAAK,EAAY,OAAAF,EAAQ,UAAAC,CAAU,CACzC,CAEA,SAASE,GAAa,CACpB,GAAI,OAAO,iBAAiB,SAAS,KAAM,OAAO,OAAO,gBAAgB,QAAQ,KACjF,IAAMC,EAAK,UAAU,UAWrB,MAVY,CACV,CAAE,EAAG,iBAAkB,EAAG,eAAgB,EAC1C,CAAE,EAAG,SAAU,EAAG,QAAS,EAC3B,CAAE,EAAG,kBAAmB,EAAG,gBAAiB,EAC5C,CAAE,EAAG,UAAW,EAAG,SAAU,EAC7B,CAAE,EAAG,iBAAkB,EAAG,eAAgB,EAC1C,CAAE,EAAG,SAAU,EAAG,QAAS,EAC3B,CAAE,EAAG,eAAgB,EAAG,mBAAoB,EAC5C,CAAE,EAAG,OAAQ,EAAG,MAAO,CACzB,EACW,KAAKC,GAAKD,EAAG,MAAMC,EAAE,CAAC,CAAC,GAAG,GAAK,SAC5C,CAEA,SAASC,GAAQ,CACf,GAAI,OAAO,iBAAiB,IAAI,KAAM,OAAO,OAAO,gBAAgB,GAAG,KACvE,IAAMF,EAAK,UAAU,UAQrB,MAPY,CACV,CAAE,EAAG,MAAO,EAAG,SAAU,EACzB,CAAE,EAAG,MAAO,EAAG,QAAS,EACxB,CAAE,EAAG,YAAa,EAAG,OAAQ,EAC7B,CAAE,EAAG,UAAW,EAAG,SAAU,EAC7B,CAAE,EAAG,cAAe,EAAG,KAAM,CAC/B,EACW,KAAKG,GAAKH,EAAG,MAAMG,EAAE,CAAC,CAAC,GAAG,GAAK,SAC5C,CAEA,SAASC,GAAwB,CAC/B,IAAMC,EAAO,UAAU,YAAc,UAAU,eAAiB,UAAU,iBAC1E,MAAO,CACL,eAAgBA,EAAOA,EAAK,cAAgB,UAC5C,UAAW,UAAU,UACrB,MAAO,OAAO,WACd,OAAQ,OAAO,YACf,YAAa,OAAO,MACpB,aAAc,OAAO,OACrB,eAAgB,KAAK,IAAI,EACzB,WAAY,KAAK,eAAe,EAAE,gBAAgB,EAAE,SACpD,cAAe,UAAU,UAAY,UAAU,aAC/C,YAAa,KAAK,MAAM,YAAY,IAAI,EAAI,GAAI,EAChD,aAAc,UAAU,cAAgB,UACxC,eAAgB,IAAI,KAAK,EAAE,kBAAkB,EAC7C,eAAgB,UAAU,cAC1B,IAAK,OAAO,SAAS,KACrB,KAAM,OAAO,SAAS,KACtB,SAAU,SAAS,SACnB,QAASN,EAAW,EACpB,eAAgB,OAAO,iBAAiB,SAAS,SAAW,KAC5D,GAAIG,EAAM,EACV,UAAW,OAAO,iBAAiB,IAAI,SAAW,KAClD,WAAY,OAAO,iBAAiB,QAAQ,MAAQ,KACpD,YAAa,OAAO,iBAAiB,QAAQ,OAAS,KACtD,aAAc,OAAO,iBAAiB,QAAQ,QAAU,KACxD,SAAU,KAAK,IAAI,EAAG,YAAY,OAAO,aAAe,YAAY,OAAO,eAAe,EAC1F,WAAYI,EAAiB,OAC7B,YAAaA,EAAiB,OAChC,CACF,CAWA,SAASC,EAASC,EAAKC,EAAM,CAC3B,IAAMC,EAAa,IAAI,gBACjBC,EAAU,WAAW,IAAMD,EAAW,MAAM,EAAG,GAAI,EAEnDE,EAAU,CAAE,eAAgB,kBAAmB,EACrD,OAAIC,EAAO,QAAOD,EAAQ,gBAAgB,EAAIC,EAAO,OAE9C,MAAML,EAAK,CAChB,OAAQ,OACR,QAAAI,EACA,KAAM,KAAK,UAAUH,CAAI,EACzB,OAAQC,EAAW,MACrB,CAAC,EACE,KAAKI,IAAO,aAAaH,CAAO,EAAUG,EAAG,EAC7C,MAAM,IAAM,CAAE,aAAaH,CAAO,CAAE,CAAC,CAC1C,CAwBA,eAAeI,EAAiBC,EAAWC,EAAQC,EAAO,CACxD,GAAI,CAEF,IAAMC,EAAa,MAAM,MAAMH,CAAS,EACxC,GAAI,CAACG,EAAW,GAAI,OAAO,KAC3B,IAAMC,EAAS,MAAMD,EAAW,KAAK,EAE/BE,EAAcD,EAAO,MAAM,+DAA+D,EAC1FE,EAAgBF,EAAO,MAAM,0CAA0C,EAEzEG,EACJ,GAAIF,EACFE,EAAgB,KAAK,MAAM,KAAKF,EAAY,CAAC,CAAC,CAAC,UACtCC,EAAe,CACxB,IAAME,EAAS,IAAI,IAAIF,EAAc,CAAC,EAAGN,CAAS,EAAE,KAC9CS,EAAc,MAAM,MAAMD,CAAM,EACtC,GAAI,CAACC,EAAY,GAAI,OAAO,KAC5BF,EAAgB,MAAME,EAAY,KAAK,CACzC,KACE,QAAO,KAGT,GAAI,CAAC,OAAO,WAAW,kBAAmB,OAAO,KAEjD,IAAMC,EADW,IAAI,OAAO,UAAU,kBAAkBH,CAAa,EAChD,oBAAoB,CAAE,KAAMN,EAAQ,OAAQC,CAAM,CAAC,EAExE,GAAI,CAACQ,EAAI,OAAQ,OAAO,KAGxB,IAAMC,EAAcJ,EAAc,QAAQ,QAAQG,EAAI,MAAM,EACxDE,EAAU,KACd,OAAIL,EAAc,gBAAkBA,EAAc,eAAeI,CAAW,IAC1EC,EAAUL,EAAc,eAAeI,CAAW,GAG7C,CACL,eAAgBD,EAAI,OACpB,aAAcA,EAAI,KAClB,eAAgBA,EAAI,OACpB,aAAcA,EAAI,KAClB,QAAAE,CACF,CACF,MAAY,CACV,OAAO,IACT,CACF,CAWA,eAAeC,EAAeC,EAAK,CACjC,IAAMC,EAAUC,EAAO,eAAiBC,EAAsB,EAAI,CAAC,EAC7DC,EAAQ,OAAO,OAAOJ,EAAKC,EAASI,EAAOC,EAAO,CAAC,EAMzD,GAJIC,IAAaH,EAAM,KAAOG,GAC1B,OAAO,KAAKC,CAAa,EAAE,SAAQJ,EAAM,QAAU,CAAE,GAAGI,CAAc,GAC1EJ,EAAM,YAAcK,EAAY,MAAM,EAElCP,EAAO,YAAc,KAAK,OAAO,EAAK,EAAI,WAAWA,EAAO,UAAU,EAAI,CACxEA,EAAO,OAAOQ,EAAY,gCAAgC,EAC9D,MACF,CAKA,GAHKR,EAAO,mBAAkBF,EAAI,WAAa,MAG3CA,EAAI,WACN,GAAI,CACF,IAAMW,EAAQX,EAAI,WAAW,MAAM;AAAA,CAAI,EACjCY,EAAW,CAACD,EAAM,CAAC,CAAC,EAC1B,QAASE,EAAI,EAAGA,EAAIF,EAAM,OAAQE,IAC5B,CAACF,EAAME,CAAC,EAAE,SAAS,QAAQ,GAAK,CAACF,EAAME,CAAC,EAAE,SAAS,UAAU,GAAK,CAACF,EAAME,CAAC,EAAE,SAAS,aAAa,GACpGD,EAAS,KAAKD,EAAME,CAAC,CAAC,EAGtBD,EAAS,OAAS,IAAGZ,EAAI,WAAaY,EAAS,KAAK;AAAA,CAAI,EAC9D,MAAY,CAAe,CAG7B,IAAKZ,EAAI,YAAcA,EAAI,QAAU,CAACA,EAAI,OACxC,GAAI,CACF,IAAMc,EAAQd,EAAI,YAAcA,EAAI,MAC9BW,EAAQG,EAAQA,EAAM,MAAM;AAAA,CAAI,EAAI,CAAC,EAE3C,QAASD,EAAI,EAAGA,EAAIF,EAAM,OAAQE,IAAK,CACrC,IAAME,EAAQJ,EAAME,CAAC,EAAE,KAAK,EAAE,MAAM,uBAAuB,EAC3D,GAAIE,EAAO,CACTf,EAAI,OAASe,EAAM,CAAC,EACpBf,EAAI,OAAS,SAASe,EAAM,CAAC,EAAG,EAAE,EAClCf,EAAI,MAAQ,SAASe,EAAM,CAAC,EAAG,EAAE,EACjC,KACF,CACF,CACF,MAAY,CAAe,CAI7B,GAAIb,EAAO,kBAAoBF,EAAI,QAAUA,EAAI,OAC/C,GAAI,CACF,IAAMgB,EAAW,MAAMC,EAAiBjB,EAAI,OAAQA,EAAI,OAAQA,EAAI,OAAS,CAAC,EAC1EgB,IACFZ,EAAM,eAAiBY,EAAS,eAChCZ,EAAM,aAAeY,EAAS,aAC9BZ,EAAM,eAAiBY,EAAS,eAChCZ,EAAM,aAAeY,EAAS,aAC9BZ,EAAM,oBAAsBY,EAAS,aACjCA,EAAS,UAASZ,EAAM,QAAUY,EAAS,SAEnD,MAAY,CAAsB,CAGhCd,EAAO,OAAOQ,EAAY,mBAAoBN,CAAK,EACnDF,EAAO,UAAUgB,EAAShB,EAAO,SAAUE,CAAK,CACtD,CAKO,SAASe,EAAaf,EAAO,CAC7BF,EAAO,SACZH,EAAeK,CAAK,CACtB,CD3SO,IAAMgB,EAAN,cAAiCC,EAAM,SAAU,CACtD,YAAYC,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,MAAQ,CAAE,SAAU,EAAM,CACjC,CAEA,OAAO,0BAA2B,CAChC,MAAO,CAAE,SAAU,EAAK,CAC1B,CAEA,kBAAkBC,EAAOC,EAAW,CAClCC,EAAa,CACX,QAASF,EAAM,QACf,MAAOA,EAAM,MACb,WAAYA,EAAM,MAClB,UAAWC,GAAW,gBAAkB,GACxC,KAAM,sBACR,CAAC,CACH,CAEA,QAAS,CACP,OAAI,KAAK,MAAM,SACN,KAAK,MAAM,UAAY,KAEzB,KAAK,MAAM,QACpB,CACF",
6
- "names": ["React", "defaultConfig", "config", "scope", "userInteractions", "pageloadId", "userContext", "customContext", "breadcrumbs", "_consoleLog", "generateId", "prefix", "getIds", "userId", "sessionId", "pageloadId", "getBrowser", "ua", "b", "getOS", "o", "captureBrowserDetails", "conn", "userInteractions", "postData", "url", "data", "controller", "timeout", "headers", "config", "r", "resolveSourceMap", "sourceUrl", "lineno", "colno", "jsResponse", "jsCode", "inlineMatch", "externalMatch", "sourceMapData", "mapURL", "mapResponse", "pos", "sourceIndex", "snippet", "pushErrorEvent", "obj", "details", "config", "captureBrowserDetails", "event", "scope", "getIds", "userContext", "customContext", "breadcrumbs", "_consoleLog", "lines", "filtered", "i", "stack", "match", "resolved", "resolveSourceMap", "postData", "captureError", "ScoutErrorBoundary", "React", "props", "error", "errorInfo", "captureError"]
5
+ "mappings": "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",
6
+ "names": ["React", "defaultConfig", "config", "__spreadValues", "_a", "scope", "userInteractions", "pageloadId", "userContext", "customContext", "breadcrumbs", "_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", "postData", "url", "data", "controller", "timeout", "headers", "config", "r", "resolveSourceMap", "sourceUrl", "lineno", "colno", "__async", "_a", "jsResponse", "jsCode", "inlineMatch", "externalMatch", "sourceMapData", "mapURL", "mapResponse", "pos", "sourceIndex", "snippet", "e", "pushErrorEvent", "obj", "__async", "details", "config", "captureBrowserDetails", "event", "scope", "getIds", "userContext", "customContext", "__spreadValues", "breadcrumbs", "_consoleLog", "lines", "filtered", "i", "e", "stack", "match", "resolved", "resolveSourceMap", "postData", "captureError", "ScoutErrorBoundary", "React", "props", "error", "errorInfo", "captureError"]
7
7
  }
package/dist/vue.cjs CHANGED
@@ -1,5 +1,5 @@
1
- var u=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var R=(e,t)=>{for(var n in t)u(e,n,{get:t[n],enumerable:!0})},C=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of k(t))!M.call(e,o)&&o!==n&&u(e,o,{get:()=>t[o],enumerable:!(r=_(t,o))||r.enumerable});return e};var L=e=>C(u({},"__esModule",{value:!0}),e);var H={};R(H,{ScoutVue:()=>O});module.exports=L(H);var b={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={...b},I={environment:typeof window<"u"&&window.location?.hostname==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.4",project:null,release:null,version:null,app:null},h={clicks:0,scrolls:0},d=null;var S=null,y={},T=[];var v=console.log;function f(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function x(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",f("user")),localStorage.getItem("__scoutUserId")),t=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",f("session")),sessionStorage.getItem("__scoutSessionId"));return d=d||f("pageload"),{pageloadId:d,userId:e,sessionId:t}}function U(){if(window._uaParserResult?.browser?.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return[{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))?.n||"Unknown"}function P(){if(window._uaParserResult?.os?.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return[{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))?.n||"Unknown"}function 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:U(),browserVersion:window._uaParserResult?.browser?.version||null,os:P(),osVersion:window._uaParserResult?.os?.version||null,deviceType:window._uaParserResult?.device?.type||null,deviceModel:window._uaParserResult?.device?.model||null,deviceVendor:window._uaParserResult?.device?.vendor||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:h.clicks,userScrolls:h.scrolls}}function A(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),5e3),o={"Content-Type":"application/json"};return a.token&&(o["X-Ingest-Token"]=a.token),fetch(e,{method:"POST",headers:o,body:JSON.stringify(t),signal:n.signal}).then(s=>(clearTimeout(r),s)).catch(()=>{clearTimeout(r)})}async function $(e,t,n){try{let r=await fetch(e);if(!r.ok)return null;let o=await r.text(),s=o.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),i=o.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(s)c=JSON.parse(atob(s[1]));else if(i){let E=new URL(i[1],e).href,w=await fetch(E);if(!w.ok)return null;c=await w.json()}else return null;if(!window.sourceMap?.SourceMapConsumer)return null;let l=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:t,column:n});if(!l.source)return null;let g=c.sources.indexOf(l.source),m=null;return c.sourcesContent&&c.sourcesContent[g]&&(m=c.sourcesContent[g]),{originalSource:l.source,originalLine:l.line,originalColumn:l.column,originalName:l.name,snippet:m}}catch{return null}}async function N(e){let t=a.browserDetails?D():{},n=Object.assign(e,t,I,x());if(S&&(n.user=S),Object.keys(y).length&&(n.context={...y}),n.breadcrumbs=T.slice(),a.sampleRate&&Math.random()<1-parseFloat(a.sampleRate)){a.debug&&v("[Scout] Suppressed by sampling");return}if(a.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let r=e.errorTrace.split(`
2
- `),o=[r[0]];for(let s=1;s<r.length;s++)!r[s].includes("/scout")&&!r[s].includes("scout.js")&&!r[s].includes("scout-error")&&o.push(r[s]);o.length>1&&(e.errorTrace=o.join(`
3
- `))}catch{}if((e.errorTrace||e.stack)&&!e.source)try{let r=e.errorTrace||e.stack,o=r?r.split(`
4
- `):[];for(let s=1;s<o.length;s++){let i=o[s].trim().match(/(http.*?):(\d+):(\d+)/);if(i){e.source=i[1],e.lineno=parseInt(i[2],10),e.colno=parseInt(i[3],10);break}}}catch{}if(a.handleSourceMaps&&e.source&&e.lineno)try{let r=await $(e.source,e.lineno,e.colno||0);r&&(n.originalSource=r.originalSource,n.originalLine=r.originalLine,n.originalColumn=r.originalColumn,n.originalName=r.originalName,n.highlightLineNumber=r.originalLine,r.snippet&&(n.snippet=r.snippet))}catch{}a.debug&&v("[Scout] Sending:",n),a.endpoint&&A(a.endpoint,n)}function p(e){a.enabled&&N(e)}var O={install(e){e.config.errorHandler=(t,n,r)=>{p({message:t.message,stack:t.stack,errorTrace:t.stack,component:n?.$options?.name||n?.$options?.__name||"Anonymous",type:"vue-error-handler",info:r})},e.config.warnHandler=(t,n,r)=>{p({message:t,component:n?.$options?.name||n?.$options?.__name||"Anonymous",type:"vue-warn-handler",errorTrace:r})}}};
1
+ var f=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames,_=Object.getOwnPropertySymbols;var v=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable;var k=(n,t,e)=>t in n?f(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,p=(n,t)=>{for(var e in t||(t={}))v.call(t,e)&&k(n,e,t[e]);if(_)for(var e of _(t))U.call(t,e)&&k(n,e,t[e]);return n};var P=(n,t)=>{for(var e in t)f(n,e,{get:t[e],enumerable:!0})},D=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of x(t))!v.call(n,o)&&o!==e&&f(n,o,{get:()=>t[o],enumerable:!(r=T(t,o))||r.enumerable});return n};var A=n=>D(f({},"__esModule",{value:!0}),n);var g=(n,t,e)=>new Promise((r,o)=>{var s=a=>{try{l(e.next(a))}catch(d){o(d)}},i=a=>{try{l(e.throw(a))}catch(d){o(d)}},l=a=>a.done?r(a.value):Promise.resolve(a.value).then(s,i);l((e=e.apply(n,t)).next())});var z={};P(z,{ScoutVue:()=>q});module.exports=A(z);var $={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},c=p({},$),b,N={environment:typeof window!="undefined"&&((b=window.location)==null?void 0:b.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.5",project:null,release:null,version:null,app:null},M={clicks:0,scrolls:0},m=null;var R=null,C={},O=[];var L=console.log;function w(n){return`${n}_${Math.random().toString(36).substr(2,9)}`}function H(){let n=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",w("user")),localStorage.getItem("__scoutUserId")),t=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",w("session")),sessionStorage.getItem("__scoutSessionId"));return m=m||w("pageload"),{pageloadId:m,userId:n,sessionId:t}}function F(){var e,r,o;if((r=(e=window._uaParserResult)==null?void 0:e.browser)!=null&&r.name)return window._uaParserResult.browser.name;let n=navigator.userAgent;return((o=[{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(s=>n.match(s.p)))==null?void 0:o.n)||"Unknown"}function B(){var e,r,o;if((r=(e=window._uaParserResult)==null?void 0:e.os)!=null&&r.name)return window._uaParserResult.os.name;let n=navigator.userAgent;return((o=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(s=>n.match(s.p)))==null?void 0:o.n)||"Unknown"}function W(){var t,e,r,o,s,i,l,a,d,u;let n=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:n?n.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:F(),browserVersion:((e=(t=window._uaParserResult)==null?void 0:t.browser)==null?void 0:e.version)||null,os:B(),osVersion:((o=(r=window._uaParserResult)==null?void 0:r.os)==null?void 0:o.version)||null,deviceType:((i=(s=window._uaParserResult)==null?void 0:s.device)==null?void 0:i.type)||null,deviceModel:((a=(l=window._uaParserResult)==null?void 0:l.device)==null?void 0:a.model)||null,deviceVendor:((u=(d=window._uaParserResult)==null?void 0:d.device)==null?void 0:u.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:M.clicks,userScrolls:M.scrolls}}function X(n,t){let e=new AbortController,r=setTimeout(()=>e.abort(),5e3),o={"Content-Type":"application/json"};return c.token&&(o["X-Ingest-Token"]=c.token),fetch(n,{method:"POST",headers:o,body:JSON.stringify(t),signal:e.signal}).then(s=>(clearTimeout(r),s)).catch(()=>{clearTimeout(r)})}function V(n,t,e){return g(this,null,function*(){var r;try{let o=yield fetch(n);if(!o.ok)return null;let s=yield o.text(),i=s.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),l=s.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),a;if(i)a=JSON.parse(atob(i[1]));else if(l){let I=new URL(l[1],n).href,E=yield fetch(I);if(!E.ok)return null;a=yield E.json()}else return null;if(!((r=window.sourceMap)!=null&&r.SourceMapConsumer))return null;let u=new window.sourceMap.SourceMapConsumer(a).originalPositionFor({line:t,column:e});if(!u.source)return null;let S=a.sources.indexOf(u.source),y=null;return a.sourcesContent&&a.sourcesContent[S]&&(y=a.sourcesContent[S]),{originalSource:u.source,originalLine:u.line,originalColumn:u.column,originalName:u.name,snippet:y}}catch(o){return null}})}function j(n){return g(this,null,function*(){let t=c.browserDetails?W():{},e=Object.assign(n,t,N,H());if(R&&(e.user=R),Object.keys(C).length&&(e.context=p({},C)),e.breadcrumbs=O.slice(),c.sampleRate&&Math.random()<1-parseFloat(c.sampleRate)){c.debug&&L("[Scout] Suppressed by sampling");return}if(c.attachStacktrace||(n.errorTrace=null),n.errorTrace)try{let r=n.errorTrace.split(`
2
+ `),o=[r[0]];for(let s=1;s<r.length;s++)!r[s].includes("/scout")&&!r[s].includes("scout.js")&&!r[s].includes("scout-error")&&o.push(r[s]);o.length>1&&(n.errorTrace=o.join(`
3
+ `))}catch(r){}if((n.errorTrace||n.stack)&&!n.source)try{let r=n.errorTrace||n.stack,o=r?r.split(`
4
+ `):[];for(let s=1;s<o.length;s++){let i=o[s].trim().match(/(http.*?):(\d+):(\d+)/);if(i){n.source=i[1],n.lineno=parseInt(i[2],10),n.colno=parseInt(i[3],10);break}}}catch(r){}if(c.handleSourceMaps&&n.source&&n.lineno)try{let r=yield V(n.source,n.lineno,n.colno||0);r&&(e.originalSource=r.originalSource,e.originalLine=r.originalLine,e.originalColumn=r.originalColumn,e.originalName=r.originalName,e.highlightLineNumber=r.originalLine,r.snippet&&(e.snippet=r.snippet))}catch(r){}c.debug&&L("[Scout] Sending:",e),c.endpoint&&X(c.endpoint,e)})}function h(n){c.enabled&&j(n)}var q={install(n){n.config.errorHandler=(t,e,r)=>{var o,s;h({message:t.message,stack:t.stack,errorTrace:t.stack,component:((o=e==null?void 0:e.$options)==null?void 0:o.name)||((s=e==null?void 0:e.$options)==null?void 0:s.__name)||"Anonymous",type:"vue-error-handler",info:r})},n.config.warnHandler=(t,e,r)=>{var o,s;h({message:t,component:((o=e==null?void 0:e.$options)==null?void 0:o.name)||((s=e==null?void 0:e.$options)==null?void 0:s.__name)||"Anonymous",type:"vue-warn-handler",errorTrace:r})}}};
5
5
  //# sourceMappingURL=vue.cjs.map
package/dist/vue.cjs.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/vue.js", "../src/index.js"],
4
4
  "sourcesContent": ["/**\n * Scout.js Vue Plugin\n *\n * Usage:\n * import { init } from 'scoutjs'\n * import { ScoutVue } from 'scoutjs/vue'\n *\n * init({ app: 'My App', project: 'my-project' }, { endpoint: '...' })\n * app.use(ScoutVue)\n */\n\nimport { captureError } from './index.js'\n\n/**\n * Vue plugin that installs error and warning handlers.\n *\n * app.use(ScoutVue)\n */\nexport const ScoutVue = {\n install(app) {\n app.config.errorHandler = (err, vm, info) => {\n captureError({\n message: err.message,\n stack: err.stack,\n errorTrace: err.stack,\n component: vm?.$options?.name || vm?.$options?.__name || 'Anonymous',\n type: 'vue-error-handler',\n info,\n })\n }\n\n app.config.warnHandler = (msg, vm, trace) => {\n captureError({\n message: msg,\n component: vm?.$options?.name || vm?.$options?.__name || 'Anonymous',\n type: 'vue-warn-handler',\n errorTrace: trace,\n })\n }\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 // Resolve source maps if enabled and we have a source location\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 event.originalSource = resolved.originalSource\n event.originalLine = resolved.originalLine\n event.originalColumn = resolved.originalColumn\n event.originalName = resolved.originalName\n event.highlightLineNumber = resolved.originalLine\n if (resolved.snippet) event.snippet = resolved.snippet\n }\n } catch (e) { /* fail silently */ }\n }\n\n if (config.debug) _consoleLog('[Scout] Sending:', event)\n if (config.endpoint) postData(config.endpoint, event)\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 window.Scout = {\n init: (s, c) => { if (s?.user) { userContext = s.user; delete s.user }; scope = { ...scope, ...s }; if (c) config = { ...config, ...c } },\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}\n"],
5
- "mappings": "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",
6
- "names": ["vue_exports", "__export", "ScoutVue", "__toCommonJS", "defaultConfig", "config", "scope", "userInteractions", "pageloadId", "userContext", "customContext", "breadcrumbs", "_consoleLog", "generateId", "prefix", "getIds", "userId", "sessionId", "pageloadId", "getBrowser", "ua", "b", "getOS", "o", "captureBrowserDetails", "conn", "userInteractions", "postData", "url", "data", "controller", "timeout", "headers", "config", "r", "resolveSourceMap", "sourceUrl", "lineno", "colno", "jsResponse", "jsCode", "inlineMatch", "externalMatch", "sourceMapData", "mapURL", "mapResponse", "pos", "sourceIndex", "snippet", "pushErrorEvent", "obj", "details", "config", "captureBrowserDetails", "event", "scope", "getIds", "userContext", "customContext", "breadcrumbs", "_consoleLog", "lines", "filtered", "i", "stack", "match", "resolved", "resolveSourceMap", "postData", "captureError", "ScoutVue", "app", "err", "vm", "info", "captureError", "msg", "trace"]
5
+ "mappings": "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",
6
+ "names": ["vue_exports", "__export", "ScoutVue", "__toCommonJS", "defaultConfig", "config", "__spreadValues", "_a", "scope", "userInteractions", "pageloadId", "userContext", "customContext", "breadcrumbs", "_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", "postData", "url", "data", "controller", "timeout", "headers", "config", "r", "resolveSourceMap", "sourceUrl", "lineno", "colno", "__async", "_a", "jsResponse", "jsCode", "inlineMatch", "externalMatch", "sourceMapData", "mapURL", "mapResponse", "pos", "sourceIndex", "snippet", "e", "pushErrorEvent", "obj", "__async", "details", "config", "captureBrowserDetails", "event", "scope", "getIds", "userContext", "customContext", "__spreadValues", "breadcrumbs", "_consoleLog", "lines", "filtered", "i", "e", "stack", "match", "resolved", "resolveSourceMap", "postData", "captureError", "ScoutVue", "app", "err", "vm", "info", "_a", "_b", "captureError", "msg", "trace"]
7
7
  }
package/dist/vue.js CHANGED
@@ -1,5 +1,5 @@
1
- var E={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={...E},_={environment:typeof window<"u"&&window.location?.hostname==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.4",project:null,release:null,version:null,app:null},w={clicks:0,scrolls:0},u=null;var h=null,S={},k=[];var y=console.log;function d(e){return`${e}_${Math.random().toString(36).substr(2,9)}`}function M(){let e=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",d("user")),localStorage.getItem("__scoutUserId")),t=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",d("session")),sessionStorage.getItem("__scoutSessionId"));return u=u||d("pageload"),{pageloadId:u,userId:e,sessionId:t}}function R(){if(window._uaParserResult?.browser?.name)return window._uaParserResult.browser.name;let e=navigator.userAgent;return[{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))?.n||"Unknown"}function C(){if(window._uaParserResult?.os?.name)return window._uaParserResult.os.name;let e=navigator.userAgent;return[{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))?.n||"Unknown"}function L(){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:R(),browserVersion:window._uaParserResult?.browser?.version||null,os:C(),osVersion:window._uaParserResult?.os?.version||null,deviceType:window._uaParserResult?.device?.type||null,deviceModel:window._uaParserResult?.device?.model||null,deviceVendor:window._uaParserResult?.device?.vendor||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:w.clicks,userScrolls:w.scrolls}}function b(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),5e3),s={"Content-Type":"application/json"};return a.token&&(s["X-Ingest-Token"]=a.token),fetch(e,{method:"POST",headers:s,body:JSON.stringify(t),signal:n.signal}).then(o=>(clearTimeout(r),o)).catch(()=>{clearTimeout(r)})}async function I(e,t,n){try{let r=await fetch(e);if(!r.ok)return null;let s=await r.text(),o=s.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),i=s.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),c;if(o)c=JSON.parse(atob(o[1]));else if(i){let v=new URL(i[1],e).href,m=await fetch(v);if(!m.ok)return null;c=await m.json()}else return null;if(!window.sourceMap?.SourceMapConsumer)return null;let l=new window.sourceMap.SourceMapConsumer(c).originalPositionFor({line:t,column:n});if(!l.source)return null;let p=c.sources.indexOf(l.source),g=null;return c.sourcesContent&&c.sourcesContent[p]&&(g=c.sourcesContent[p]),{originalSource:l.source,originalLine:l.line,originalColumn:l.column,originalName:l.name,snippet:g}}catch{return null}}async function T(e){let t=a.browserDetails?L():{},n=Object.assign(e,t,_,M());if(h&&(n.user=h),Object.keys(S).length&&(n.context={...S}),n.breadcrumbs=k.slice(),a.sampleRate&&Math.random()<1-parseFloat(a.sampleRate)){a.debug&&y("[Scout] Suppressed by sampling");return}if(a.attachStacktrace||(e.errorTrace=null),e.errorTrace)try{let r=e.errorTrace.split(`
2
- `),s=[r[0]];for(let o=1;o<r.length;o++)!r[o].includes("/scout")&&!r[o].includes("scout.js")&&!r[o].includes("scout-error")&&s.push(r[o]);s.length>1&&(e.errorTrace=s.join(`
3
- `))}catch{}if((e.errorTrace||e.stack)&&!e.source)try{let r=e.errorTrace||e.stack,s=r?r.split(`
4
- `):[];for(let o=1;o<s.length;o++){let i=s[o].trim().match(/(http.*?):(\d+):(\d+)/);if(i){e.source=i[1],e.lineno=parseInt(i[2],10),e.colno=parseInt(i[3],10);break}}}catch{}if(a.handleSourceMaps&&e.source&&e.lineno)try{let r=await I(e.source,e.lineno,e.colno||0);r&&(n.originalSource=r.originalSource,n.originalLine=r.originalLine,n.originalColumn=r.originalColumn,n.originalName=r.originalName,n.highlightLineNumber=r.originalLine,r.snippet&&(n.snippet=r.snippet))}catch{}a.debug&&y("[Scout] Sending:",n),a.endpoint&&b(a.endpoint,n)}function f(e){a.enabled&&T(e)}var D={install(e){e.config.errorHandler=(t,n,r)=>{f({message:t.message,stack:t.stack,errorTrace:t.stack,component:n?.$options?.name||n?.$options?.__name||"Anonymous",type:"vue-error-handler",info:r})},e.config.warnHandler=(t,n,r)=>{f({message:t,component:n?.$options?.name||n?.$options?.__name||"Anonymous",type:"vue-warn-handler",errorTrace:r})}}};export{D as ScoutVue};
1
+ var b=Object.defineProperty;var E=Object.getOwnPropertySymbols;var I=Object.prototype.hasOwnProperty,T=Object.prototype.propertyIsEnumerable;var _=(n,t,e)=>t in n?b(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,f=(n,t)=>{for(var e in t||(t={}))I.call(t,e)&&_(n,e,t[e]);if(E)for(var e of E(t))T.call(t,e)&&_(n,e,t[e]);return n};var p=(n,t,e)=>new Promise((r,o)=>{var s=a=>{try{l(e.next(a))}catch(d){o(d)}},i=a=>{try{l(e.throw(a))}catch(d){o(d)}},l=a=>a.done?r(a.value):Promise.resolve(a.value).then(s,i);l((e=e.apply(n,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},c=f({},x),C,U={environment:typeof window!="undefined"&&((C=window.location)==null?void 0:C.hostname)==="localhost"?"development":"production",sdk:"javascript",sdkVersion:"0.2.5",project:null,release:null,version:null,app:null},k={clicks:0,scrolls:0},g=null;var v=null,M={},P=[];var R=console.log;function m(n){return`${n}_${Math.random().toString(36).substr(2,9)}`}function D(){let n=localStorage.getItem("__scoutUserId")||(localStorage.setItem("__scoutUserId",m("user")),localStorage.getItem("__scoutUserId")),t=sessionStorage.getItem("__scoutSessionId")||(sessionStorage.setItem("__scoutSessionId",m("session")),sessionStorage.getItem("__scoutSessionId"));return g=g||m("pageload"),{pageloadId:g,userId:n,sessionId:t}}function A(){var e,r,o;if((r=(e=window._uaParserResult)==null?void 0:e.browser)!=null&&r.name)return window._uaParserResult.browser.name;let n=navigator.userAgent;return((o=[{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(s=>n.match(s.p)))==null?void 0:o.n)||"Unknown"}function $(){var e,r,o;if((r=(e=window._uaParserResult)==null?void 0:e.os)!=null&&r.name)return window._uaParserResult.os.name;let n=navigator.userAgent;return((o=[{p:/Win/,n:"Windows"},{p:/Mac/,n:"Mac OS"},{p:/X11|Linux/,n:"Linux"},{p:/Android/,n:"Android"},{p:/iPhone|iPad/,n:"iOS"}].find(s=>n.match(s.p)))==null?void 0:o.n)||"Unknown"}function N(){var t,e,r,o,s,i,l,a,d,u;let n=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return{connectionType:n?n.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:A(),browserVersion:((e=(t=window._uaParserResult)==null?void 0:t.browser)==null?void 0:e.version)||null,os:$(),osVersion:((o=(r=window._uaParserResult)==null?void 0:r.os)==null?void 0:o.version)||null,deviceType:((i=(s=window._uaParserResult)==null?void 0:s.device)==null?void 0:i.type)||null,deviceModel:((a=(l=window._uaParserResult)==null?void 0:l.device)==null?void 0:a.model)||null,deviceVendor:((u=(d=window._uaParserResult)==null?void 0:d.device)==null?void 0:u.vendor)||null,loadTime:Math.max(0,performance.timing.loadEventEnd-performance.timing.navigationStart),userClicks:k.clicks,userScrolls:k.scrolls}}function O(n,t){let e=new AbortController,r=setTimeout(()=>e.abort(),5e3),o={"Content-Type":"application/json"};return c.token&&(o["X-Ingest-Token"]=c.token),fetch(n,{method:"POST",headers:o,body:JSON.stringify(t),signal:e.signal}).then(s=>(clearTimeout(r),s)).catch(()=>{clearTimeout(r)})}function H(n,t,e){return p(this,null,function*(){var r;try{let o=yield fetch(n);if(!o.ok)return null;let s=yield o.text(),i=s.match(/\/\/# sourceMappingURL=data:application\/json;base64,([^\s]+)/),l=s.match(/\/\/# sourceMappingURL=(?!data:)([^\s]+)/),a;if(i)a=JSON.parse(atob(i[1]));else if(l){let L=new URL(l[1],n).href,y=yield fetch(L);if(!y.ok)return null;a=yield y.json()}else return null;if(!((r=window.sourceMap)!=null&&r.SourceMapConsumer))return null;let u=new window.sourceMap.SourceMapConsumer(a).originalPositionFor({line:t,column:e});if(!u.source)return null;let h=a.sources.indexOf(u.source),S=null;return a.sourcesContent&&a.sourcesContent[h]&&(S=a.sourcesContent[h]),{originalSource:u.source,originalLine:u.line,originalColumn:u.column,originalName:u.name,snippet:S}}catch(o){return null}})}function F(n){return p(this,null,function*(){let t=c.browserDetails?N():{},e=Object.assign(n,t,U,D());if(v&&(e.user=v),Object.keys(M).length&&(e.context=f({},M)),e.breadcrumbs=P.slice(),c.sampleRate&&Math.random()<1-parseFloat(c.sampleRate)){c.debug&&R("[Scout] Suppressed by sampling");return}if(c.attachStacktrace||(n.errorTrace=null),n.errorTrace)try{let r=n.errorTrace.split(`
2
+ `),o=[r[0]];for(let s=1;s<r.length;s++)!r[s].includes("/scout")&&!r[s].includes("scout.js")&&!r[s].includes("scout-error")&&o.push(r[s]);o.length>1&&(n.errorTrace=o.join(`
3
+ `))}catch(r){}if((n.errorTrace||n.stack)&&!n.source)try{let r=n.errorTrace||n.stack,o=r?r.split(`
4
+ `):[];for(let s=1;s<o.length;s++){let i=o[s].trim().match(/(http.*?):(\d+):(\d+)/);if(i){n.source=i[1],n.lineno=parseInt(i[2],10),n.colno=parseInt(i[3],10);break}}}catch(r){}if(c.handleSourceMaps&&n.source&&n.lineno)try{let r=yield H(n.source,n.lineno,n.colno||0);r&&(e.originalSource=r.originalSource,e.originalLine=r.originalLine,e.originalColumn=r.originalColumn,e.originalName=r.originalName,e.highlightLineNumber=r.originalLine,r.snippet&&(e.snippet=r.snippet))}catch(r){}c.debug&&R("[Scout] Sending:",e),c.endpoint&&O(c.endpoint,e)})}function w(n){c.enabled&&F(n)}var j={install(n){n.config.errorHandler=(t,e,r)=>{var o,s;w({message:t.message,stack:t.stack,errorTrace:t.stack,component:((o=e==null?void 0:e.$options)==null?void 0:o.name)||((s=e==null?void 0:e.$options)==null?void 0:s.__name)||"Anonymous",type:"vue-error-handler",info:r})},n.config.warnHandler=(t,e,r)=>{var o,s;w({message:t,component:((o=e==null?void 0:e.$options)==null?void 0:o.name)||((s=e==null?void 0:e.$options)==null?void 0:s.__name)||"Anonymous",type:"vue-warn-handler",errorTrace:r})}}};export{j as ScoutVue};
5
5
  //# sourceMappingURL=vue.js.map
package/dist/vue.js.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/index.js", "../src/vue.js"],
4
4
  "sourcesContent": ["/**\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 // Resolve source maps if enabled and we have a source location\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 event.originalSource = resolved.originalSource\n event.originalLine = resolved.originalLine\n event.originalColumn = resolved.originalColumn\n event.originalName = resolved.originalName\n event.highlightLineNumber = resolved.originalLine\n if (resolved.snippet) event.snippet = resolved.snippet\n }\n } catch (e) { /* fail silently */ }\n }\n\n if (config.debug) _consoleLog('[Scout] Sending:', event)\n if (config.endpoint) postData(config.endpoint, event)\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 window.Scout = {\n init: (s, c) => { if (s?.user) { userContext = s.user; delete s.user }; scope = { ...scope, ...s }; if (c) config = { ...config, ...c } },\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}\n", "/**\n * Scout.js Vue Plugin\n *\n * Usage:\n * import { init } from 'scoutjs'\n * import { ScoutVue } from 'scoutjs/vue'\n *\n * init({ app: 'My App', project: 'my-project' }, { endpoint: '...' })\n * app.use(ScoutVue)\n */\n\nimport { captureError } from './index.js'\n\n/**\n * Vue plugin that installs error and warning handlers.\n *\n * app.use(ScoutVue)\n */\nexport const ScoutVue = {\n install(app) {\n app.config.errorHandler = (err, vm, info) => {\n captureError({\n message: err.message,\n stack: err.stack,\n errorTrace: err.stack,\n component: vm?.$options?.name || vm?.$options?.__name || 'Anonymous',\n type: 'vue-error-handler',\n info,\n })\n }\n\n app.config.warnHandler = (msg, vm, trace) => {\n captureError({\n message: msg,\n component: vm?.$options?.name || vm?.$options?.__name || 'Anonymous',\n type: 'vue-warn-handler',\n errorTrace: trace,\n })\n }\n },\n}\n"],
5
- "mappings": "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",
6
- "names": ["defaultConfig", "config", "scope", "userInteractions", "pageloadId", "userContext", "customContext", "breadcrumbs", "_consoleLog", "generateId", "prefix", "getIds", "userId", "sessionId", "pageloadId", "getBrowser", "ua", "b", "getOS", "o", "captureBrowserDetails", "conn", "userInteractions", "postData", "url", "data", "controller", "timeout", "headers", "config", "r", "resolveSourceMap", "sourceUrl", "lineno", "colno", "jsResponse", "jsCode", "inlineMatch", "externalMatch", "sourceMapData", "mapURL", "mapResponse", "pos", "sourceIndex", "snippet", "pushErrorEvent", "obj", "details", "config", "captureBrowserDetails", "event", "scope", "getIds", "userContext", "customContext", "breadcrumbs", "_consoleLog", "lines", "filtered", "i", "stack", "match", "resolved", "resolveSourceMap", "postData", "captureError", "ScoutVue", "app", "err", "vm", "info", "captureError", "msg", "trace"]
5
+ "mappings": "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",
6
+ "names": ["defaultConfig", "config", "__spreadValues", "_a", "scope", "userInteractions", "pageloadId", "userContext", "customContext", "breadcrumbs", "_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", "postData", "url", "data", "controller", "timeout", "headers", "config", "r", "resolveSourceMap", "sourceUrl", "lineno", "colno", "__async", "_a", "jsResponse", "jsCode", "inlineMatch", "externalMatch", "sourceMapData", "mapURL", "mapResponse", "pos", "sourceIndex", "snippet", "e", "pushErrorEvent", "obj", "__async", "details", "config", "captureBrowserDetails", "event", "scope", "getIds", "userContext", "customContext", "__spreadValues", "breadcrumbs", "_consoleLog", "lines", "filtered", "i", "e", "stack", "match", "resolved", "resolveSourceMap", "postData", "captureError", "ScoutVue", "app", "err", "vm", "info", "_a", "_b", "captureError", "msg", "trace"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scout-error",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "description": "Lightweight error tracking for JavaScript applications",
5
5
  "author": "James Futhey",
6
6
  "license": "MIT",