-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathappfail.reporting.min.js
More file actions
1 lines (1 loc) · 5.78 KB
/
appfail.reporting.min.js
File metadata and controls
1 lines (1 loc) · 5.78 KB
1
window.appfail=window.appfail||{};appfail.reporting=(function(){var q=function(){function K(){return(((1+Math.random())*65536)|0).toString(16).substring(1)}return(K()+K()+"-"+K()+"-"+K()+"-"+K()+"-"+K()+K()+K())};var x={slug:null,processInterval:4,daysToStore:7,onBeforeStore:null,appfailApiRoot:"https://api.appfail.net"};var E={RequestUrl:"",HttpVerb:"",ReferrerUrl:document.referrer,OccurrenceTimeUtc:null,User:"Anonymous",PostValuePairs:[],QueryValuePairs:[],Cookies:[],UniqueId:null,UserAgent:navigator.userAgent,HttpStatus:null,Exceptions:[],PageCorrelationId:q(),IsXHRFailure:false,XHRRequestURL:null,ConnectionStatus:"online",IsStandalone:false,TimeOnPage:0};var j={ExceptionType:"Javascript Error",ExceptionMessage:"",StackTrace:""};var F={};var w=[];var m;var c=("ononline" in window&&"onoffline" in window)?true:false;function a(){return"JSON" in window&&window.JSON}var k=("localStorage" in window&&window.localStorage)?true:false;var y=new Date();var J=false;var i=null;var g=false;var D="appfail.reporting.min.js";var h="https://s3.amazonaws.com/appfail-us/json2.min.js";var o=J?false:(typeof navigator.onLine==="boolean")?true:false;var d=function(L){var M=!L?null:(L instanceof Array?[]:{});for(var K in L){if(typeof(L[K])==="object"){M[K]=d(L[K])}else{M[K]=L[K]}}return M};var z=function(O,N){var L={};for(var M in O){if(O.hasOwnProperty(M)){L[M]=O[M]}}for(var K in N){if(N.hasOwnProperty(K)){L[K]=N[K]}}return L};var G=function(K){if(g&&typeof console==="object"){console.log(K)}};var f=function(M,N,L){if(M.addEventListener){M.addEventListener(N.replace(/^on/,""),L,false)}else{if(M[N]){var K=M[N];M[N]=function(O){K(O);L(O)}}else{M[N]=function(O){L(O)}}}};(function(L){var M=L.prototype.send;L.prototype.send=function(Q){var O=this;var P;var N=function(){if(O.readyState===4){G(O);var R=O.appfailData;if(O.status&&O.status>=400){H({ReadyState:O.readyState,Status:O.status,StatusText:O.statusText,Method:R?R.method:null,Url:R?R.url:null})}}if(P){P()}};if(this.addEventListener){this.addEventListener("readystatechange",N,false)}else{P=this.onreadystatechange;this.onreadystatechange=N}M.call(this,Q)};var K=L.prototype.open;L.prototype.open=function(P,N,O){this.appfailData={method:P,url:N};K.call(this,P,N,O)}})(XMLHttpRequest);var s=function(){f(window,"onerror",function(M,L,K){I(M,L,K);return true});m=window.setInterval(function(){if(w.length){B()}},F.processInterval*1000);if(c){f(window,"ononline",function(){v();B()})}};var b=function(){return(new Date()-y)};var p=[];(function(){var K,M=/\+/g,L=/([^&=]+)=?([^&]*)/g,O=function(P){return decodeURIComponent(P.replace(M," "))},N=window.location.search.substring(1);K=L.exec(N);while(K){p.push([O(K[1]),O(K[2])]);K=L.exec(N)}})();var u=function(K){K.RequestUrl=i?i:document.location.href;if(!K.OccurrenceTimeUtc){K.OccurrenceTimeUtc=new Date().getTime()}K.UniqueId=q();K.TimeOnPage=b();K.UserAgent=navigator.userAgent;K.Cookies=[];K.ReferrerUrl=document.referrer;K.QueryValuePairs=p};var I=function(N,M,L){G(N,M,L);var K=d(E);K.OccurrenceTimeUtc=(N&&N.timeStamp)?new Date(N.timeStamp).getTime():null;var O=d(j);O.ExceptionMessage=N.message;O.StackTrace=N.filename+" --- line "+N.lineno;K.Exceptions.push(O);u(K);if(F.onBeforeStore){F.onBeforeStore(K)}w.push(K)};var H=function(L){G(L);if(!L.Url){return}var K=d(E);K.XHRRequestUrl=L.Url;K.IsXHRFailure=true;K.HttpStatus=L.Status;K.HttpVerb=L.Method;u(K);if(F.onBeforeStore){F.onBeforeStore(K)}w.push(K)};var C=function(L){G(L);var K=d(E);var M=d(j);M.StackTrace=L.stack||"";if(L.type){M.ExceptionType=L.type}M.ExceptionMessage=L.message;K.Exceptions.push(M);u(K);if(F.onBeforeStore){F.onBeforeStore(K)}w.push(K)};var B=function(){if(w.length&&((o&&!navigator.onLine)||!a())){if(!a()){r("JSON parser has not yet loaded. Stored failure reports to local storage.")}else{r("No connection found, stored failure reports to local storage")}l();w=[];return}var M={Slug:F.slug,ModuleVersion:"1.0.0.0",ApplicationType:"Javascript",FailOccurrences:[]};while(w.length){var L=w.shift();M.FailOccurrences.push(L)}w.length=0;var K=new Image();K.src=F.appfailApiRoot+"/JsFail/v1?json="+encodeURIComponent(JSON.stringify(M))};var l=function(){if(a()&&k){var N=window.localStorage.getItem("appfail-errors");if(N!==""&&N!==null){var L=JSON.parse(N);for(var M=0,K=L.length;M<K;M++){w.push(L[M])}}window.localStorage.setItem("appfail-errors",JSON.stringify(w))}};var v=function(){if(!k){return}var P;var Q=window.localStorage.getItem("appfail-errors");if(Q===""||Q===null){return}P=JSON.parse(Q);var N=+new Date();var L=86400000;var R=F.daysToStore*L;var M=[];for(var O=0,K=P.length;O<K;O++){if(N-R>P[O].OccurrenceTimeUtc){r("Dropping an old error")}else{M.push(P[O])}}w=M;window.localStorage.removeItem("appfail-errors")};var A=function(){if(appfail.config){F=z(x,appfail.config);return}var O=document.getElementsByTagName("script");var K;for(var R=0,S=O.length;R<S;R++){if(O[R].src.indexOf(D)>-1){K=O[R];break}}if(K.src.indexOf("?")===-1){return}var L=K.src.split("?")[1];var M=L.split("&");var N={};for(var P=0,T=M.length;P<T;P++){var Q=M[P].split("=");N[Q[0]]=Q[1]}F=z(x,N)};function t(L){var K=new RegExp("[?&]"+L+"=([^&]*)").exec(window.location.search);return K&&decodeURIComponent(K[1].replace(/\+/g," "))}function n(){var K=document.createElement("script");K.type="text/javascript";K.src=h;document.body.appendChild(K)}(function(){if(!a()){n()}A();if(!F.slug){r("No application slug was found.");return}if(o&&navigator.onLine){v()}s();if(t("appfail-report-test-exception")){try{throw new Error("This is an Appfail test exception. Congratulations, your web-site is successfully reporting javascript errors to Appfail")}catch(K){C(K)}}})();var r=function(K){if(console&&console.error){console.error("appfail: "+K)}};var e=function(){G("hasOnlineBool: ",o);G("hasOfflineEvents: ",c);G("hasJSON: ",a());G("hasLocalStorage: ",k)};return{catchManual:C,processQueue:B,storeQueue:l,loadStoredErrors:v,runTests:e}})();