-
Notifications
You must be signed in to change notification settings - Fork 60
/
raygun.vanilla.min.js
4 lines (4 loc) · 13.1 KB
/
raygun.vanilla.min.js
1
2
3
4
/*! Raygun4js - v1.9.0 - 2014-06-24
* https://github.com/MindscapeHQ/raygun4js
* Copyright (c) 2014 MindscapeHQ; Licensed MIT */
(function(n){function e(n,e){return Object.prototype.hasOwnProperty.call(n,e)}function t(n){return n===undefined}var r={},o=n.TraceKit,i=[].slice,a="?";r.noConflict=function(){return n.TraceKit=o,r},r.wrap=function(n){function e(){try{return n.apply(this,arguments)}catch(e){throw r.report(e),e}}return e},r.report=function(){function t(n){c.push(n)}function o(n){for(var e=c.length-1;e>=0;--e)c[e]===n&&c.splice(e,1)}function a(n,t){var o=null;if(!t||r.collectWindowErrors){for(var a in c)if(e(c,a))try{c[a].apply(null,[n].concat(i.call(arguments,2)))}catch(u){o=u}if(o)throw o}}function u(e){var t=i.call(arguments,1);if(s){if(l===e)return;var o=s;s=null,l=null,a.apply(null,[o,null].concat(t))}var u=r.computeStackTrace(e);throw s=u,l=e,n.setTimeout(function(){l===e&&(s=null,l=null,a.apply(null,[u,null].concat(t)))},u.incomplete?2e3:0),e}var c=[],l=null,s=null,f=n.onerror;return n.onerror=function(n,e,t,o,i){var u=null;if(i)u=r.computeStackTrace(i);else if(s)r.computeStackTrace.augmentStackTraceWithInitialElement(s,e,t,n),u=s,s=null,l=null;else{var c={url:e,line:t,column:o};c.func=r.computeStackTrace.guessFunctionName(c.url,c.line),c.context=r.computeStackTrace.gatherContext(c.url,c.line),u={mode:"onerror",message:n,url:document.location.href,stack:[c],useragent:navigator.userAgent}}return a(u,"from window.onerror"),f?f.apply(this,arguments):!1},u.subscribe=t,u.unsubscribe=o,u}(),r.computeStackTrace=function(){function o(e){function t(){try{return new n.XMLHttpRequest}catch(e){return new n.ActiveXObject("Microsoft.XMLHTTP")}}if(!r.remoteFetching)return"";try{var o=t();return o.open("GET",e,!1),o.send(""),o.responseText}catch(i){return""}}function i(n){if(!e(k,n)){var t="";n=n||"",-1!==n.indexOf(document.domain)&&(t=o(n)),k[n]=t?t.split("\n"):[]}return k[n]}function u(n,e){var r,o=/function ([^(]*)\(([^)]*)\)/,u=/['"]?([0-9A-Za-z$_]+)['"]?\s*[:=]\s*(function|eval|new Function)/,c="",l=10,s=i(n);if(!s.length)return a;for(var f=0;l>f;++f)if(c=s[e-f]+c,!t(c)){if(r=u.exec(c))return r[1];if(r=o.exec(c))return r[1]}return a}function c(n,e){var o=i(n);if(!o.length)return null;var a=[],u=Math.floor(r.linesOfContext/2),c=u+r.linesOfContext%2,l=Math.max(0,e-u-1),s=Math.min(o.length,e+c-1);e-=1;for(var f=l;s>f;++f)t(o[f])||a.push(o[f]);return a.length>0?a:null}function l(n){return n.replace(/[\-\[\]{}()*+?.,\\\^$|#]/g,"\\$&")}function s(n){return l(n).replace("<","(?:<|<)").replace(">","(?:>|>)").replace("&","(?:&|&)").replace('"','(?:"|")').replace(/\s+/g,"\\s+")}function f(n,e){for(var t,r,o=0,a=e.length;a>o;++o)if((t=i(e[o])).length&&(t=t.join("\n"),r=n.exec(t)))return{url:e[o],line:t.substring(0,r.index).split("\n").length,column:r.index-t.lastIndexOf("\n",r.index)-1};return null}function g(n,e,t){var r,o=i(e),a=RegExp("\\b"+l(n)+"\\b");return t-=1,o&&o.length>t&&(r=a.exec(o[t]))?r.index:null}function p(e){for(var t,r,o,i,a=[n.location.href],u=document.getElementsByTagName("script"),c=""+e,g=/^function(?:\s+([\w$]+))?\s*\(([\w\s,]*)\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/,p=/^function on([\w$]+)\s*\(event\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/,m=0;u.length>m;++m){var h=u[m];h.src&&a.push(h.src)}if(o=g.exec(c)){var d=o[1]?"\\s+"+o[1]:"",v=o[2].split(",").join("\\s*,\\s*");t=l(o[3]).replace(/;$/,";?"),r=RegExp("function"+d+"\\s*\\(\\s*"+v+"\\s*\\)\\s*{\\s*"+t+"\\s*}")}else r=RegExp(l(c).replace(/\s+/g,"\\s+"));if(i=f(r,a))return i;if(o=p.exec(c)){var y=o[1];if(t=s(o[2]),r=RegExp("on"+y+"=[\\'\"]\\s*"+t+"\\s*[\\'\"]","i"),i=f(r,a[0]))return i;if(r=RegExp(t),i=f(r,a))return i}return null}function m(n){if(!n.stack)return null;for(var e,t,r=/^\s*at (?:((?:\[object object\])?\S+) )?\(?((?:file|http|https):.*?):(\d+)(?::(\d+))?\)?\s*$/i,o=/^\s*(\S*)(?:\((.*?)\))?@((?:file|http|https).*?):(\d+)(?::(\d+))?\s*$/i,i=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:ms-appx|http|https):.*?):(\d+)(?::(\d+))?\)?\s*$/i,l=n.stack.split("\n"),s=[],f=/^(.*) is undefined$/.exec(n.message),p=0,m=l.length;m>p;++p){if(e=o.exec(l[p]))t={url:e[3],func:e[1]||a,args:e[2]?e[2].split(","):"",line:+e[4],column:e[5]?+e[5]:null};else if(e=r.exec(l[p]))t={url:e[2],func:e[1]||a,line:+e[3],column:e[4]?+e[4]:null};else{if(!(e=i.exec(l[p])))continue;t={url:e[2],func:e[1]||a,line:+e[3],column:e[4]?+e[4]:null}}!t.func&&t.line&&(t.func=u(t.url,t.line)),t.line&&(t.context=c(t.url,t.line)),s.push(t)}return s[0]&&s[0].line&&!s[0].column&&f&&(s[0].column=g(f[1],s[0].url,s[0].line)),s.length?{mode:"stack",name:n.name,message:n.message,url:document.location.href,stack:s,useragent:navigator.userAgent}:null}function h(n){for(var e,t=n.stacktrace,r=/ line (\d+), column (\d+) in (?:<anonymous function: ([^>]+)>|([^\)]+))\((.*)\) in (.*):\s*$/i,o=t.split("\n"),i=[],a=0,l=o.length;l>a;a+=2)if(e=r.exec(o[a])){var s={line:+e[1],column:+e[2],func:e[3]||e[4],args:e[5]?e[5].split(","):[],url:e[6]};if(!s.func&&s.line&&(s.func=u(s.url,s.line)),s.line)try{s.context=c(s.url,s.line)}catch(f){}s.context||(s.context=[o[a+1]]),i.push(s)}return i.length?{mode:"stacktrace",name:n.name,message:n.message,url:document.location.href,stack:i,useragent:navigator.userAgent}:null}function d(t){var r=t.message.split("\n");if(4>r.length)return null;var o,a,l,g,p=/^\s*Line (\d+) of linked script ((?:file|http|https)\S+)(?:: in function (\S+))?\s*$/i,m=/^\s*Line (\d+) of inline#(\d+) script in ((?:file|http|https)\S+)(?:: in function (\S+))?\s*$/i,h=/^\s*Line (\d+) of function script\s*$/i,d=[],v=document.getElementsByTagName("script"),y=[];for(a in v)e(v,a)&&!v[a].src&&y.push(v[a]);for(a=2,l=r.length;l>a;a+=2){var x=null;if(o=p.exec(r[a]))x={url:o[2],func:o[3],line:+o[1]};else if(o=m.exec(r[a])){x={url:o[3],func:o[4]};var w=+o[1],S=y[o[2]-1];if(S&&(g=i(x.url))){g=g.join("\n");var k=g.indexOf(S.innerText);k>=0&&(x.line=w+g.substring(0,k).split("\n").length)}}else if(o=h.exec(r[a])){var b=n.location.href.replace(/#.*$/,""),T=o[1],R=RegExp(s(r[a+1]));g=f(R,[b]),x={url:b,line:g?g.line:T,func:""}}if(x){x.func||(x.func=u(x.url,x.line));var O=c(x.url,x.line),C=O?O[Math.floor(O.length/2)]:null;x.context=O&&C.replace(/^\s*/,"")===r[a+1].replace(/^\s*/,"")?O:[r[a+1]],d.push(x)}}return d.length?{mode:"multiline",name:t.name,message:r[0],url:document.location.href,stack:d,useragent:navigator.userAgent}:null}function v(n,e,t,r){var o={url:e,line:t};if(o.url&&o.line){n.incomplete=!1,o.func||(o.func=u(o.url,o.line)),o.context||(o.context=c(o.url,o.line));var i=/ '([^']+)' /.exec(r);if(i&&(o.column=g(i[1],o.url,o.line)),n.stack.length>0&&n.stack[0].url===o.url){if(n.stack[0].line===o.line)return!1;if(!n.stack[0].line&&n.stack[0].func===o.func)return n.stack[0].line=o.line,n.stack[0].context=o.context,!1}return n.stack.unshift(o),n.partial=!0,!0}return n.incomplete=!0,!1}function y(n,e){for(var t,o,i,c=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],s={},f=!1,m=y.caller;m&&!f;m=m.caller)if(m!==x&&m!==r.report){if(o={url:null,func:a,line:null,column:null},m.name?o.func=m.name:(t=c.exec(""+m))&&(o.func=t[1]),i=p(m)){o.url=i.url,o.line=i.line,o.func===a&&(o.func=u(o.url,o.line));var h=/ '([^']+)' /.exec(n.message||n.description);h&&(o.column=g(h[1],i.url,i.line))}s[""+m]?f=!0:s[""+m]=!0,l.push(o)}e&&l.splice(0,e);var d={mode:"callers",name:n.name,message:n.message,url:document.location.href,stack:l,useragent:navigator.userAgent};return v(d,n.sourceURL||n.fileName,n.line||n.lineNumber,n.message||n.description),d}function x(n,e){var t=null;e=null==e?0:+e;try{if(t=h(n))return t}catch(r){if(S)throw r}try{if(t=m(n))return t}catch(r){if(S)throw r}try{if(t=d(n))return t}catch(r){if(S)throw r}try{if(t=y(n,e+1))return t}catch(r){if(S)throw r}return{mode:"failed"}}function w(n){n=(null==n?0:+n)+1;try{throw Error()}catch(e){return x(e,n+1)}return null}var S=!1,k={};return x.augmentStackTraceWithInitialElement=v,x.guessFunctionName=u,x.gatherContext=c,x.ofCaller=w,x}(),function(){var e=function e(e){var t=n[e];n[e]=function(){var n=i.call(arguments),e=n[0];return"function"==typeof e&&(n[0]=r.wrap(e)),t.apply?t.apply(this,n):t(n[0],n[1])}};e("setTimeout"),e("setInterval")}(),r.remoteFetching||(r.remoteFetching=!0),r.collectWindowErrors||(r.collectWindowErrors=!0),(!r.linesOfContext||1>r.linesOfContext)&&(r.linesOfContext=11),n.TraceKit=r})(window),function(n,e,t){function r(n){var e=n,t=n.split("//")[1];if(t){var r=t.indexOf("?"),o=(""+t).substring(0,r),i=o.split("/").slice(0,4).join("/"),a=o.substring(0,48);e=i.length<a.length?i:a,e!==o&&(e+="..")}return e}function o(n,e,o,i){var a="AJAX Error: "+(e.statusText||"unknown")+" "+(o.type||"unknown")+" "+(r(o.url)||"unknown");(!A||e.getAllResponseHeaders())&&M.send(i||n.type,{status:e.status,statusText:e.statusText,type:o.type,url:o.url,ajaxErrorMessage:a,contentType:o.contentType,data:o.data?o.data.slice(0,10240):t})}function i(e,t){n.console&&n.console.log&&C&&(n.console.log(e),t&&n.console.log(t))}function a(){return w&&""!==w?!0:(i("Raygun API key has not been configured, make sure you call Raygun.init(yourApiKey)"),!1)}function u(n,e){var t,r={};for(t in n)r[t]=n[t];for(t in e)r[t]=e[t];return r}function c(n,e){return null!=e?n.concat(e):n}function l(n,e){for(var t=0;n.length>t;t++)e.call(null,t,n[t])}function s(n){for(var e in n)if(n.hasOwnProperty(e))return!1;return!0}function f(){return Math.floor(9007199254740992*Math.random())}function g(){var e=document.documentElement,t=document.getElementsByTagName("body")[0],r=n.innerWidth||e.clientWidth||t.clientWidth,o=n.innerHeight||e.clientHeight||t.clientHeight;return{width:r,height:o}}function p(n){var e=(new Date).toJSON();try{var r="raygunjs="+e+"="+f();localStorage[r]===t&&(localStorage[r]=n)}catch(o){i("Raygun4JS: LocalStorage full, cannot save exception")}}function m(){try{return"localStorage"in n&&null!==n.localStorage}catch(e){return!1}}function h(){if(m()&&localStorage.length>0)for(var n in localStorage)"raygunjs="===n.substring(0,9)&&(v(JSON.parse(localStorage[n])),localStorage.removeItem(n))}function d(e,r){var o=[],a={};e.stack&&e.stack.length&&l(e.stack,function(n,e){o.push({LineNumber:e.line,ColumnNumber:e.column,ClassName:"line "+e.line+", column "+e.column,FileName:e.url,MethodName:e.func||"[anonymous]"})}),n.location.search&&n.location.search.length>1&&l(n.location.search.substring(1).split("&"),function(n,e){var t=e.split("=");if(t&&2===t.length){var r=decodeURIComponent(t[0]),o=t[1];if(Array.prototype.indexOf&&b.indexOf===Array.prototype.indexOf)-1===b.indexOf(r)&&(a[r]=o);else for(n=0;b.length>n;n++)b[n]===r&&(a[r]=o)}}),r===t&&(r={}),s(r.customData)&&(r.customData="function"==typeof j?j():j),s(r.tags)&&(r.tags=D);var u=n.screen||{width:g().width,height:g().height,colorDepth:8},c=r.customData&&r.customData.ajaxErrorMessage,f=r.customData;try{JSON.stringify(f)}catch(p){var m="Cannot add custom data; may contain circular reference";f={error:m},i("Raygun4JS: "+m)}var h={OccurredOn:new Date,Details:{Error:{ClassName:e.name,Message:c||e.message||r.status||"Script error",StackTrace:o},Environment:{UtcOffset:(new Date).getTimezoneOffset()/-60,"User-Language":navigator.userLanguage,"Document-Mode":document.documentMode,"Browser-Width":g().width,"Browser-Height":g().height,"Screen-Width":u.width,"Screen-Height":u.height,"Color-Depth":u.colorDepth,Browser:navigator.appCodeName,"Browser-Name":navigator.appName,"Browser-Version":navigator.appVersion,Platform:navigator.platform},Client:{Name:"raygun-js",Version:"1.9.1"},UserCustomData:f,Tags:r.tags,Request:{Url:document.location.href,QueryString:a,Headers:{"User-Agent":navigator.userAgent,Referer:document.referrer,Host:document.domain}},Version:k||"Not supplied"}};S&&(h.Details.User=S),v(h)}function v(n){if(a()){i("Sending exception data to Raygun:",n);var e=$+"/entries?apikey="+encodeURIComponent(w);x(e,JSON.stringify(n))}}function y(e,t){var r;return r=new n.XMLHttpRequest,"withCredentials"in r?r.open(e,t,!0):n.XDomainRequest&&(E&&(t=t.slice(6)),r=new n.XDomainRequest,r.open(e,t)),r.timeout=1e4,r}function x(e,r){var o=y("POST",e,r);return"withCredentials"in o?(o.onreadystatechange=function(){4===o.readyState&&(202===o.status?h():N&&403!==o.status&&400!==o.status&&p(r))},o.onload=function(){i("logged error to Raygun")}):n.XDomainRequest&&(o.ontimeout=function(){N&&(i("Raygun: saved error locally"),p(r))},o.onload=function(){i("logged error to Raygun"),h()}),o.onerror=function(){i("failed to log error to Raygun")},o?(o.send(r),t):(i("CORS not supported"),t)}var w,S,k,b,T,R=TraceKit.noConflict(),O=n.Raygun,C=!1,E=!1,A=!1,N=!1,j={},D=[],$="https://api.raygun.io";e&&(T=e(document));var M={noConflict:function(){return n.Raygun=O,M},init:function(n,e,t){return w=n,R.remoteFetching=!1,j=t,e&&(E=e.allowInsecureSubmissions||!1,A=e.ignoreAjaxAbort||!1,e.debugMode&&(C=e.debugMode)),h(),M},withCustomData:function(n){return j=n,M},withTags:function(n){D=n},attach:function(){return a()?(R.report.subscribe(d),T&&T.ajaxError(o),M):t},detach:function(){return R.report.unsubscribe(d),T&&T.unbind("ajaxError",o),M},send:function(n,e,t){try{d(R.computeStackTrace(n),{customData:"function"==typeof j?u(j(),e):u(j,e),tags:c(D,t)})}catch(r){if(n!==r)throw r}return M},setUser:function(n){return S={Identifier:n},M},setVersion:function(n){return k=n,M},saveIfOffline:function(n){return n!==t&&"boolean"==typeof n&&(N=n),M},filterSensitiveData:function(n){return b=n,M}};n.Raygun=M}(window,window.jQuery);