Comparing version 1.2.0 to 1.3.0
{ | ||
"name": "raven-js", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"dependencies": {}, | ||
@@ -17,4 +17,5 @@ "main": "dist/raven.js", | ||
"example", | ||
"test" | ||
"test", | ||
"dist/sri.json" | ||
] | ||
} |
# Changelog | ||
## 1.3.0 | ||
* CHANGE: `console` plugin will now send all arguments as an `extra` value. See: https://github.com/getsentry/raven-js/pull/398 | ||
* CHANGE: Bump to v7 of the Sentry API spec. This now requires a Sentry 7.7.0+ https://github.com/getsentry/raven-js/pull/403 | ||
* CHANGE: Revamp of AngularJS plugin. Please see documentation. See: https://github.com/getsentry/raven-js/pull/405 | ||
* CHANGE: `Raven.debug` now defaults to `false`. https://github.com/getsentry/raven-js/commit/dc142b88f0c4953f54cb3754f9015d95ada55ba0 | ||
* BUGFIX: `Raven.wrap` now correctly preserves `prototype`. See: https://github.com/getsentry/raven-js/issues/401 and https://github.com/getsentry/raven-js/pull/402 | ||
* NEW: `serverName` config option. https://github.com/getsentry/raven-js/pull/404 | ||
* NEW: Experimental support for React Native added. | ||
## 1.2.0 | ||
@@ -4,0 +13,0 @@ * BUGFIX: Error in cases where a `document` context doesn't exist. See: https://github.com/getsentry/raven-js/pull/383 |
@@ -1,3 +0,3 @@ | ||
/*! Raven.js 1.2.0 (17e3431) | github.com/getsentry/raven-js */ | ||
!function(a,b){"use strict";function c(){return"undefined"==typeof document?"":document.location.href}function d(a,b){var c,d;if(Q){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),document.createEvent?(c=document.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=document.createEventObject(),c.eventType=a);for(d in b)m(b,d)&&(c[d]=b[d]);if(document.createEvent)document.dispatchEvent(c);else try{document.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}}function e(a){this.name="RavenConfigError",this.message=a}function f(a){var b=aa.exec(a),c={},d=7;try{for(;d--;)c[_[d]]=b[d]||""}catch(f){throw new e("Invalid DSN: "+a)}if(c.pass)throw new e("Do not specify your private key in the DSN!");return c}function g(a){return void 0===a}function h(a){return"function"==typeof a}function i(a){return"[object String]"===U.toString.call(a)}function j(a){return"object"==typeof a&&null!==a}function k(a){for(var b in a)return!1;return!0}function l(a){return j(a)&&"[object Error]"===U.toString.call(a)||a instanceof Error}function m(a,b){return U.hasOwnProperty.call(a,b)}function n(a,b){var c,d;if(g(a.length))for(c in a)m(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;d>c;c++)b.call(null,c,a[c])}function o(a,b){var c=[];a.stack&&a.stack.length&&n(a.stack,function(a,b){var d=p(b);d&&c.push(d)}),d("handle",{stackInfo:a,options:b}),r(a.name,a.message,a.url,a.lineno,c,b)}function p(a){if(a.url){var b,c={filename:a.url,lineno:a.line,colno:a.column,"function":a.func||"?"},d=q(a);if(d){var e=["pre_context","context_line","post_context"];for(b=3;b--;)c[e[b]]=d[b]}return c.in_app=!(S.includePaths.test&&!S.includePaths.test(c.filename)||/(Raven|TraceKit)\./.test(c["function"])||/raven\.(min\.)?js$/.test(c.filename)),c}}function q(a){if(a.context&&S.fetchContext){for(var b=a.context,c=~~(b.length/2),d=b.length,e=!1;d--;)if(b[d].length>300){e=!0;break}if(e){if(g(a.column))return;return[[],b[c].substr(a.column,50),[]]}return[b.slice(0,c),b[c],b.slice(c+1)]}}function r(a,b,c,d,e,f){var g,h;S.ignoreErrors.test&&S.ignoreErrors.test(b)||(b+="",b=t(b,S.maxMessageLength),h=a+": "+b,h=t(h,S.maxMessageLength),e&&e.length?(c=e[0].filename||c,e.reverse(),g={frames:e}):c&&(g={frames:[{filename:c,lineno:d,in_app:!0}]}),S.ignoreUrls.test&&S.ignoreUrls.test(c)||(!S.whitelistUrls.test||S.whitelistUrls.test(c))&&w(s({exception:{type:a,value:b},stacktrace:g,culprit:c,message:h},f)))}function s(a,b){return b?(n(b,function(b,c){a[b]=c}),a):a}function t(a,b){return a.length<=b?a:a.substr(0,b)+"…"}function u(){return+new Date}function v(){if(Q&&document.location&&document.location.href){var a={headers:{"User-Agent":navigator.userAgent}};return a.url=document.location.href,document.referrer&&(a.headers.Referer=document.referrer),a}}function w(a){var b={project:N,logger:S.logger,platform:"javascript"},c=v();c&&(b.request=c),a=s(b,a),a.tags=s(s({},R.tags),a.tags),a.extra=s(s({},R.extra),a.extra),a.extra=s({"session:duration":u()-Y},a.extra),k(a.tags)&&delete a.tags,R.user&&(a.user=R.user),S.release&&(a.release=S.release),h(S.dataCallback)&&(a=S.dataCallback(a)||a),a&&!k(a)&&(!h(S.shouldSendCallback)||S.shouldSendCallback(a))&&(K=a.event_id||(a.event_id=B()),C("debug","Raven about to send:",a),z()&&(S.transport||x)({url:L,auth:{sentry_version:"4",sentry_client:"raven-js/"+$.VERSION,sentry_key:M},data:a,options:S,onSuccess:function(){d("success",{data:a,src:L})},onError:function(){d("failure",{data:a,src:L})}}))}function x(a){a.auth.sentry_data=JSON.stringify(a.data);var b=y(),c=a.url+"?"+E(a.auth);(a.options.crossOrigin||""===a.options.crossOrigin)&&(b.crossOrigin=a.options.crossOrigin),b.onload=a.onSuccess,b.onerror=b.onabort=a.onError,b.src=c}function y(){return document.createElement("img")}function z(){return P?L?!0:(ba||C("error","Error: Raven has not been configured."),ba=!0,!1):!1}function A(a){for(var b,c=[],d=0,e=a.length;e>d;d++)b=a[d],i(b)?c.push(b.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")):b&&b.source&&c.push(b.source);return new RegExp(c.join("|"),"i")}function B(){var b=a.crypto||a.msCrypto;if(!g(b)&&b.getRandomValues){var c=new Uint16Array(8);b.getRandomValues(c),c[3]=4095&c[3]|16384,c[4]=16383&c[4]|32768;var d=function(a){for(var b=a.toString(16);b.length<4;)b="0"+b;return b};return d(c[0])+d(c[1])+d(c[2])+d(c[3])+d(c[4])+d(c[5])+d(c[6])+d(c[7])}return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"==a?b:3&b|8;return c.toString(16)})}function C(a){W[a]&&$.debug&&W[a].apply(V,H.call(arguments,1))}function D(){var b=a.RavenConfig;b&&$.config(b.dsn,b.config).install()}function E(a){var b=[];return n(a,function(a,c){b.push(encodeURIComponent(a)+"="+encodeURIComponent(c))}),b.join("&")}function F(a,b){g(b)?delete R[a]:R[a]=s(R[a]||{},b)}var G={remoteFetching:!1,collectWindowErrors:!0,linesOfContext:7,debug:!1},H=[].slice,I="?";G.wrap=function(a){function b(){try{return a.apply(this,arguments)}catch(b){throw G.report(b),b}}return b},G.report=function(){function d(a){i(),p.push(a)}function e(a){for(var b=p.length-1;b>=0;--b)p[b]===a&&p.splice(b,1)}function f(){j(),p=[]}function g(a,b){var c=null;if(!b||G.collectWindowErrors){for(var d in p)if(m(p,d))try{p[d].apply(null,[a].concat(H.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function h(a,b,d,e,f){var h=null;if(s)G.computeStackTrace.augmentStackTraceWithInitialElement(s,b,d,a),k();else if(f)h=G.computeStackTrace(f),g(h,!0);else{var i={url:b,line:d,column:e};i.func=G.computeStackTrace.guessFunctionName(i.url,i.line),i.context=G.computeStackTrace.gatherContext(i.url,i.line),h={message:a,url:c(),stack:[i]},g(h,!0)}return n?n.apply(this,arguments):!1}function i(){o||(n=a.onerror,a.onerror=h,o=!0)}function j(){o&&(a.onerror=n,o=!1,n=b)}function k(){var a=s,b=q;q=null,s=null,r=null,g.apply(null,[a,!1].concat(b))}function l(b,c){var d=H.call(arguments,1);if(s){if(r===b)return;k()}var e=G.computeStackTrace(b);if(s=e,r=b,q=d,a.setTimeout(function(){r===b&&k()},e.incomplete?2e3:0),c!==!1)throw b}var n,o,p=[],q=null,r=null,s=null;return l.subscribe=d,l.unsubscribe=e,l.uninstall=f,l}(),G.computeStackTrace=function(){function b(b){if(!G.remoteFetching)return"";try{var c=function(){try{return new a.XMLHttpRequest}catch(b){return new a.ActiveXObject("Microsoft.XMLHTTP")}},d=c();return d.open("GET",b,!1),d.send(""),d.responseText}catch(e){return""}}function d(a){if(!i(a))return[];if(!m(u,a)){var c="",d="";try{d=document.domain}catch(e){}-1!==a.indexOf(d)&&(c=b(a)),u[a]=c?c.split("\n"):[]}return u[a]}function e(a,b){var c,e=/function ([^(]*)\(([^)]*)\)/,f=/['"]?([0-9A-Za-z$_]+)['"]?\s*[:=]\s*(function|eval|new Function)/,h="",i=10,j=d(a);if(!j.length)return I;for(var k=0;i>k;++k)if(h=j[b-k]+h,!g(h)){if(c=f.exec(h))return c[1];if(c=e.exec(h))return c[1]}return I}function f(a,b){var c=d(a);if(!c.length)return null;var e=[],f=Math.floor(G.linesOfContext/2),h=f+G.linesOfContext%2,i=Math.max(0,b-f-1),j=Math.min(c.length,b+h-1);b-=1;for(var k=i;j>k;++k)g(c[k])||e.push(c[k]);return e.length>0?e:null}function h(a){return a.replace(/[\-\[\]{}()*+?.,\\\^$|#]/g,"\\$&")}function j(a){return h(a).replace("<","(?:<|<)").replace(">","(?:>|>)").replace("&","(?:&|&)").replace('"','(?:"|")').replace(/\s+/g,"\\s+")}function k(a,b){for(var c,e,f=0,g=b.length;g>f;++f)if((c=d(b[f])).length&&(c=c.join("\n"),e=a.exec(c)))return{url:b[f],line:c.substring(0,e.index).split("\n").length,column:e.index-c.lastIndexOf("\n",e.index)-1};return null}function l(a,b,c){var e,f=d(b),g=new RegExp("\\b"+h(a)+"\\b");return c-=1,f&&f.length>c&&(e=g.exec(f[c]))?e.index:null}function n(b){if("undefined"!=typeof document){for(var c,d,e,f,g=[a.location.href],i=document.getElementsByTagName("script"),l=""+b,m=/^function(?:\s+([\w$]+))?\s*\(([\w\s,]*)\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/,n=/^function on([\w$]+)\s*\(event\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/,o=0;o<i.length;++o){var p=i[o];p.src&&g.push(p.src)}if(e=m.exec(l)){var q=e[1]?"\\s+"+e[1]:"",r=e[2].split(",").join("\\s*,\\s*");c=h(e[3]).replace(/;$/,";?"),d=new RegExp("function"+q+"\\s*\\(\\s*"+r+"\\s*\\)\\s*{\\s*"+c+"\\s*}")}else d=new RegExp(h(l).replace(/\s+/g,"\\s+"));if(f=k(d,g))return f;if(e=n.exec(l)){var s=e[1];if(c=j(e[2]),d=new RegExp("on"+s+"=[\\'\"]\\s*"+c+"\\s*[\\'\"]","i"),f=k(d,g[0]))return f;if(d=new RegExp(c),f=k(d,g))return f}return null}}function o(a){if(!g(a.stack)&&a.stack){for(var b,d,h=/^\s*at (.*?) ?\(?((?:(?:file|https?|chrome-extension):.*?)|<anonymous>):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?@((?:file|https?|chrome).*?):(\d+)(?::(\d+))?\s*$/i,j=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:ms-appx|http|https):.*?):(\d+)(?::(\d+))?\)?\s*$/i,k=a.stack.split("\n"),m=[],n=/^(.*) is undefined$/.exec(a.message),o=0,p=k.length;p>o;++o){if(b=i.exec(k[o]))d={url:b[3],func:b[1]||I,args:b[2]?b[2].split(","):"",line:+b[4],column:b[5]?+b[5]:null};else if(b=h.exec(k[o]))d={url:b[2],func:b[1]||I,line:+b[3],column:b[4]?+b[4]:null};else{if(!(b=j.exec(k[o])))continue;d={url:b[2],func:b[1]||I,line:+b[3],column:b[4]?+b[4]:null}}!d.func&&d.line&&(d.func=e(d.url,d.line)),d.line&&(d.context=f(d.url,d.line)),m.push(d)}return m.length?(m[0].line&&!m[0].column&&n?m[0].column=l(n[1],m[0].url,m[0].line):m[0].column||g(a.columnNumber)||(m[0].column=a.columnNumber+1),{name:a.name,message:a.message,url:c(),stack:m}):null}}function p(a){var b=a.stacktrace;if(!g(a.stacktrace)&&a.stacktrace){for(var d,h=/ line (\d+), column (\d+) in (?:<anonymous function: ([^>]+)>|([^\)]+))\((.*)\) in (.*):\s*$/i,i=b.split("\n"),j=[],k=0,l=i.length;l>k;k+=2)if(d=h.exec(i[k])){var m={line:+d[1],column:+d[2],func:d[3]||d[4],args:d[5]?d[5].split(","):[],url:d[6]};if(!m.func&&m.line&&(m.func=e(m.url,m.line)),m.line)try{m.context=f(m.url,m.line)}catch(n){}m.context||(m.context=[i[k+1]]),j.push(m)}return j.length?{name:a.name,message:a.message,url:c(),stack:j}:null}}function q(b){var g=b.message.split("\n");if(g.length<4)return null;var h,i,l,n,o=/^\s*Line (\d+) of linked script ((?:file|https?)\S+)(?:: in function (\S+))?\s*$/i,p=/^\s*Line (\d+) of inline#(\d+) script in ((?:file|https?)\S+)(?:: in function (\S+))?\s*$/i,q=/^\s*Line (\d+) of function script\s*$/i,r=[],s=document.getElementsByTagName("script"),t=[];for(i in s)m(s,i)&&!s[i].src&&t.push(s[i]);for(i=2,l=g.length;l>i;i+=2){var u=null;if(h=o.exec(g[i]))u={url:h[2],func:h[3],line:+h[1]};else if(h=p.exec(g[i])){u={url:h[3],func:h[4]};var v=+h[1],w=t[h[2]-1];if(w&&(n=d(u.url))){n=n.join("\n");var x=n.indexOf(w.innerText);x>=0&&(u.line=v+n.substring(0,x).split("\n").length)}}else if(h=q.exec(g[i])){var y=a.location.href.replace(/#.*$/,""),z=h[1],A=new RegExp(j(g[i+1]));n=k(A,[y]),u={url:y,line:n?n.line:z,func:""}}if(u){u.func||(u.func=e(u.url,u.line));var B=f(u.url,u.line),C=B?B[Math.floor(B.length/2)]:null;B&&C.replace(/^\s*/,"")===g[i+1].replace(/^\s*/,"")?u.context=B:u.context=[g[i+1]],r.push(u)}}return r.length?{name:b.name,message:g[0],url:c(),stack:r}:null}function r(a,b,c,d){var g={url:b,line:c};if(g.url&&g.line){a.incomplete=!1,g.func||(g.func=e(g.url,g.line)),g.context||(g.context=f(g.url,g.line));var h=/ '([^']+)' /.exec(d);if(h&&(g.column=l(h[1],g.url,g.line)),a.stack.length>0&&a.stack[0].url===g.url){if(a.stack[0].line===g.line)return!1;if(!a.stack[0].line&&a.stack[0].func===g.func)return a.stack[0].line=g.line,a.stack[0].context=g.context,!1}return a.stack.unshift(g),a.partial=!0,!0}return a.incomplete=!0,!1}function s(a,b){for(var d,f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,m=s.caller;m&&!k;m=m.caller)if(m!==t&&m!==G.report){if(f={url:null,func:I,line:null,column:null},m.name?f.func=m.name:(d=h.exec(m.toString()))&&(f.func=d[1]),"undefined"==typeof f.func)try{f.func=d.input.substring(0,d.input.indexOf("{"))}catch(o){}if(g=n(m)){f.url=g.url,f.line=g.line,f.func===I&&(f.func=e(f.url,f.line));var p=/ '([^']+)' /.exec(a.message||a.description);p&&(f.column=l(p[1],g.url,g.line))}j[""+m]?k=!0:j[""+m]=!0,i.push(f)}b&&i.splice(0,b);var q={name:a.name,message:a.message,url:c(),stack:i};return r(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function t(a,b){var d=null;b=null==b?0:+b;try{if(d=p(a))return d}catch(e){if(G.debug)throw e}try{if(d=o(a))return d}catch(e){if(G.debug)throw e}try{if(d=q(a))return d}catch(e){if(G.debug)throw e}try{if(d=s(a,b+1))return d}catch(e){if(G.debug)throw e}return{name:a.name,message:a.message,url:c()}}var u={};return t.augmentStackTraceWithInitialElement=r,t.computeStackTraceFromStackProp=o,t.guessFunctionName=e,t.gatherContext=f,t}();var J,K,L,M,N,O=a.Raven,P=!("object"!=typeof JSON||!JSON.stringify),Q="undefined"!=typeof document,R={},S={logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],crossOrigin:"anonymous",collectWindowErrors:!0,maxMessageLength:100},T=!1,U=Object.prototype,V=a.console||{},W={},X=[],Y=u();for(var Z in V)W[Z]=V[Z];var $={VERSION:"1.2.0",debug:!0,noConflict:function(){return a.Raven=O,$},config:function(a,b){if(L)return C("error","Error: Raven has already been configured"),$;if(!a)return $;var c=f(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);return b&&n(b,function(a,b){"tags"==a||"extra"==a?R[a]=b:S[a]=b}),S.ignoreErrors.push(/^Script error\.?$/),S.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),S.ignoreErrors=A(S.ignoreErrors),S.ignoreUrls=S.ignoreUrls.length?A(S.ignoreUrls):!1,S.whitelistUrls=S.whitelistUrls.length?A(S.whitelistUrls):!1,S.includePaths=A(S.includePaths),M=c.user,N=c.path.substr(d+1),L="//"+c.host+(c.port?":"+c.port:"")+"/"+e+"api/"+N+"/store/",c.protocol&&(L=c.protocol+":"+L),S.fetchContext&&(G.remoteFetching=!0),S.linesOfContext&&(G.linesOfContext=S.linesOfContext),G.collectWindowErrors=!!S.collectWindowErrors,$},install:function(){return z()&&!T&&(G.report.subscribe(o),n(X,function(a,b){b()}),T=!0),$},context:function(a,c,d){return h(a)&&(d=c||[],c=a,a=b),$.wrap(a,c).apply(this,d)},wrap:function(a,c){function d(){for(var b=[],d=arguments.length,e=!a||a&&a.deep!==!1;d--;)b[d]=e?$.wrap(a,arguments[d]):arguments[d];try{return c.apply(this,b)}catch(f){throw $.captureException(f,a),f}}if(g(c)&&!h(a))return a;if(h(a)&&(c=a,a=b),!h(c))return c;if(c.__raven__)return c;for(var e in c)m(c,e)&&(d[e]=c[e]);return d.__raven__=!0,d.__inner__=c,d},uninstall:function(){return G.report.uninstall(),T=!1,$},captureException:function(a,b){if(!l(a))return $.captureMessage(a,b);J=a;try{var c=G.computeStackTrace(a);o(c,b)}catch(d){if(a!==d)throw d}return $},captureMessage:function(a,b){return S.ignoreErrors.test&&S.ignoreErrors.test(a)?void 0:(w(s({message:a+""},b)),$)},addPlugin:function(a){return X.push(a),T&&a(),$},setUserContext:function(a){return R.user=a,$},setExtraContext:function(a){return F("extra",a),$},setTagsContext:function(a){return F("tags",a),$},clearContext:function(){return R={},$},getContext:function(){return JSON.parse(JSON.stringify(R))},setRelease:function(a){return S.release=a,$},setDataCallback:function(a){return S.dataCallback=a,$},setShouldSendCallback:function(a){return S.shouldSendCallback=a,$},setTransport:function(a){return S.transport=a,$},lastException:function(){return J},lastEventId:function(){return K},isSetup:function(){return z()}};$.setUser=$.setUserContext,$.setReleaseContext=$.setRelease;var _="source protocol user pass host port path".split(" "),aa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;e.prototype=new Error,e.prototype.constructor=e;var ba;D(),a.Raven=$,"function"==typeof define&&define.amd?define("raven",[],function(){return $}):"object"==typeof module?module.exports=$:"object"==typeof exports&&(exports=$)}("undefined"!=typeof window?window:this); | ||
/*! Raven.js 1.3.0 (768fdca) | github.com/getsentry/raven-js */ | ||
!function(a,b){"use strict";function c(){return"undefined"==typeof document?"":document.location.href}function d(a,b){var c,d;if(R){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),document.createEvent?(c=document.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=document.createEventObject(),c.eventType=a);for(d in b)m(b,d)&&(c[d]=b[d]);if(document.createEvent)document.dispatchEvent(c);else try{document.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}}function e(a){this.name="RavenConfigError",this.message=a}function f(a){var b=ba.exec(a),c={},d=7;try{for(;d--;)c[aa[d]]=b[d]||""}catch(f){throw new e("Invalid DSN: "+a)}if(c.pass)throw new e("Do not specify your private key in the DSN!");return c}function g(a){return void 0===a}function h(a){return"function"==typeof a}function i(a){return"[object String]"===V.toString.call(a)}function j(a){return"object"==typeof a&&null!==a}function k(a){for(var b in a)return!1;return!0}function l(a){return j(a)&&"[object Error]"===V.toString.call(a)||a instanceof Error}function m(a,b){return V.hasOwnProperty.call(a,b)}function n(a,b){var c,d;if(g(a.length))for(c in a)m(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;d>c;c++)b.call(null,c,a[c])}function o(a,b){var c=[];a.stack&&a.stack.length&&n(a.stack,function(a,b){var d=p(b);d&&c.push(d)}),d("handle",{stackInfo:a,options:b}),r(a.name,a.message,a.url,a.lineno,c,b)}function p(a){if(a.url){var b,c={filename:a.url,lineno:a.line,colno:a.column,"function":a.func||"?"},d=q(a);if(d){var e=["pre_context","context_line","post_context"];for(b=3;b--;)c[e[b]]=d[b]}return c.in_app=!(T.includePaths.test&&!T.includePaths.test(c.filename)||/(Raven|TraceKit)\./.test(c["function"])||/raven\.(min\.)?js$/.test(c.filename)),c}}function q(a){if(a.context&&T.fetchContext){for(var b=a.context,c=~~(b.length/2),d=b.length,e=!1;d--;)if(b[d].length>300){e=!0;break}if(e){if(g(a.column))return;return[[],b[c].substr(a.column,50),[]]}return[b.slice(0,c),b[c],b.slice(c+1)]}}function r(a,b,c,d,e,f){var g,h;T.ignoreErrors.test&&T.ignoreErrors.test(b)||(b+="",h=a+": "+b,e&&e.length?(c=e[0].filename||c,e.reverse(),g={frames:e}):c&&(g={frames:[{filename:c,lineno:d,in_app:!0}]}),T.ignoreUrls.test&&T.ignoreUrls.test(c)||(!T.whitelistUrls.test||T.whitelistUrls.test(c))&&x(s({exception:{values:[{type:a,value:b,stacktrace:g}]},culprit:c,message:h},f)))}function s(a,b){return b?(n(b,function(b,c){a[b]=c}),a):a}function t(a,b){return a.length<=b?a:a.substr(0,b)+"…"}function u(a){var b=T.maxMessageLength;if(a.message=t(a.message,b),a.exception){var c=a.exception.values[0];c.value=t(c.value,b)}return a}function v(){return+new Date}function w(){if(R&&document.location&&document.location.href){var a={headers:{"User-Agent":navigator.userAgent}};return a.url=document.location.href,document.referrer&&(a.headers.Referer=document.referrer),a}}function x(a){var b={project:O,logger:T.logger,platform:"javascript"},c=w();c&&(b.request=c),a=s(b,a),a.tags=s(s({},S.tags),a.tags),a.extra=s(s({},S.extra),a.extra),a.extra["session:duration"]=v()-Z,k(a.tags)&&delete a.tags,S.user&&(a.user=S.user),T.release&&(a.release=T.release),T.serverName&&(a.server_name=T.serverName),h(T.dataCallback)&&(a=T.dataCallback(a)||a),a&&!k(a)&&(!h(T.shouldSendCallback)||T.shouldSendCallback(a))&&(L=a.event_id||(a.event_id=C()),a=u(a),D("debug","Raven about to send:",a),A()&&(T.transport||y)({url:M,auth:{sentry_version:"7",sentry_client:"raven-js/"+_.VERSION,sentry_key:N},data:a,options:T,onSuccess:function(){d("success",{data:a,src:M})},onError:function(){d("failure",{data:a,src:M})}}))}function y(a){a.auth.sentry_data=JSON.stringify(a.data);var b=z(),c=a.url+"?"+F(a.auth),d=a.options.crossOrigin;(d||""===d)&&(b.crossOrigin=d),b.onload=a.onSuccess,b.onerror=b.onabort=a.onError,b.src=c}function z(){return document.createElement("img")}function A(){return Q?M?!0:(ca||D("error","Error: Raven has not been configured."),ca=!0,!1):!1}function B(a){for(var b,c=[],d=0,e=a.length;e>d;d++)b=a[d],i(b)?c.push(b.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")):b&&b.source&&c.push(b.source);return new RegExp(c.join("|"),"i")}function C(){var b=a.crypto||a.msCrypto;if(!g(b)&&b.getRandomValues){var c=new Uint16Array(8);b.getRandomValues(c),c[3]=4095&c[3]|16384,c[4]=16383&c[4]|32768;var d=function(a){for(var b=a.toString(16);b.length<4;)b="0"+b;return b};return d(c[0])+d(c[1])+d(c[2])+d(c[3])+d(c[4])+d(c[5])+d(c[6])+d(c[7])}return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"==a?b:3&b|8;return c.toString(16)})}function D(a){X[a]&&_.debug&&X[a].apply(W,I.call(arguments,1))}function E(){var b=a.RavenConfig;b&&_.config(b.dsn,b.config).install()}function F(a){var b=[];return n(a,function(a,c){b.push(encodeURIComponent(a)+"="+encodeURIComponent(c))}),b.join("&")}function G(a,b){g(b)?delete S[a]:S[a]=s(S[a]||{},b)}var H={remoteFetching:!1,collectWindowErrors:!0,linesOfContext:7,debug:!1},I=[].slice,J="?";H.report=function(){function d(a){i(),p.push(a)}function e(a){for(var b=p.length-1;b>=0;--b)p[b]===a&&p.splice(b,1)}function f(){j(),p=[]}function g(a,b){var c=null;if(!b||H.collectWindowErrors){for(var d in p)if(m(p,d))try{p[d].apply(null,[a].concat(I.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function h(a,b,d,e,f){var h=null;if(s)H.computeStackTrace.augmentStackTraceWithInitialElement(s,b,d,a),k();else if(f)h=H.computeStackTrace(f),g(h,!0);else{var i={url:b,line:d,column:e};i.func=H.computeStackTrace.guessFunctionName(i.url,i.line),i.context=H.computeStackTrace.gatherContext(i.url,i.line),h={message:a,url:c(),stack:[i]},g(h,!0)}return n?n.apply(this,arguments):!1}function i(){o||(n=a.onerror,a.onerror=h,o=!0)}function j(){o&&(a.onerror=n,o=!1,n=b)}function k(){var a=s,b=q;q=null,s=null,r=null,g.apply(null,[a,!1].concat(b))}function l(b,c){var d=I.call(arguments,1);if(s){if(r===b)return;k()}var e=H.computeStackTrace(b);if(s=e,r=b,q=d,a.setTimeout(function(){r===b&&k()},e.incomplete?2e3:0),c!==!1)throw b}var n,o,p=[],q=null,r=null,s=null;return l.subscribe=d,l.unsubscribe=e,l.uninstall=f,l}(),H.computeStackTrace=function(){function b(b){if(!H.remoteFetching)return"";try{var c=function(){try{return new a.XMLHttpRequest}catch(b){return new a.ActiveXObject("Microsoft.XMLHTTP")}},d=c();return d.open("GET",b,!1),d.send(""),d.responseText}catch(e){return""}}function d(a){if(!i(a))return[];if(!m(u,a)){var c="",d="";try{d=document.domain}catch(e){}-1!==a.indexOf(d)&&(c=b(a)),u[a]=c?c.split("\n"):[]}return u[a]}function e(a,b){var c,e=/function ([^(]*)\(([^)]*)\)/,f=/['"]?([0-9A-Za-z$_]+)['"]?\s*[:=]\s*(function|eval|new Function)/,h="",i=10,j=d(a);if(!j.length)return J;for(var k=0;i>k;++k)if(h=j[b-k]+h,!g(h)){if(c=f.exec(h))return c[1];if(c=e.exec(h))return c[1]}return J}function f(a,b){var c=d(a);if(!c.length)return null;var e=[],f=Math.floor(H.linesOfContext/2),h=f+H.linesOfContext%2,i=Math.max(0,b-f-1),j=Math.min(c.length,b+h-1);b-=1;for(var k=i;j>k;++k)g(c[k])||e.push(c[k]);return e.length>0?e:null}function h(a){return a.replace(/[\-\[\]{}()*+?.,\\\^$|#]/g,"\\$&")}function j(a){return h(a).replace("<","(?:<|<)").replace(">","(?:>|>)").replace("&","(?:&|&)").replace('"','(?:"|")').replace(/\s+/g,"\\s+")}function k(a,b){for(var c,e,f=0,g=b.length;g>f;++f)if((c=d(b[f])).length&&(c=c.join("\n"),e=a.exec(c)))return{url:b[f],line:c.substring(0,e.index).split("\n").length,column:e.index-c.lastIndexOf("\n",e.index)-1};return null}function l(a,b,c){var e,f=d(b),g=new RegExp("\\b"+h(a)+"\\b");return c-=1,f&&f.length>c&&(e=g.exec(f[c]))?e.index:null}function n(b){if("undefined"!=typeof document){for(var c,d,e,f,g=[a.location.href],i=document.getElementsByTagName("script"),l=""+b,m=/^function(?:\s+([\w$]+))?\s*\(([\w\s,]*)\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/,n=/^function on([\w$]+)\s*\(event\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/,o=0;o<i.length;++o){var p=i[o];p.src&&g.push(p.src)}if(e=m.exec(l)){var q=e[1]?"\\s+"+e[1]:"",r=e[2].split(",").join("\\s*,\\s*");c=h(e[3]).replace(/;$/,";?"),d=new RegExp("function"+q+"\\s*\\(\\s*"+r+"\\s*\\)\\s*{\\s*"+c+"\\s*}")}else d=new RegExp(h(l).replace(/\s+/g,"\\s+"));if(f=k(d,g))return f;if(e=n.exec(l)){var s=e[1];if(c=j(e[2]),d=new RegExp("on"+s+"=[\\'\"]\\s*"+c+"\\s*[\\'\"]","i"),f=k(d,g[0]))return f;if(d=new RegExp(c),f=k(d,g))return f}return null}}function o(a){if(!g(a.stack)&&a.stack){for(var b,d,h=/^\s*at (.*?) ?\(?((?:(?:file|https?|chrome-extension):.*?)|<anonymous>):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?@((?:file|https?|chrome).*?):(\d+)(?::(\d+))?\s*$/i,j=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:ms-appx|http|https):.*?):(\d+)(?::(\d+))?\)?\s*$/i,k=a.stack.split("\n"),m=[],n=/^(.*) is undefined$/.exec(a.message),o=0,p=k.length;p>o;++o){if(b=i.exec(k[o]))d={url:b[3],func:b[1]||J,args:b[2]?b[2].split(","):"",line:+b[4],column:b[5]?+b[5]:null};else if(b=h.exec(k[o]))d={url:b[2],func:b[1]||J,line:+b[3],column:b[4]?+b[4]:null};else{if(!(b=j.exec(k[o])))continue;d={url:b[2],func:b[1]||J,line:+b[3],column:b[4]?+b[4]:null}}!d.func&&d.line&&(d.func=e(d.url,d.line)),d.line&&(d.context=f(d.url,d.line)),m.push(d)}return m.length?(m[0].line&&!m[0].column&&n?m[0].column=l(n[1],m[0].url,m[0].line):m[0].column||g(a.columnNumber)||(m[0].column=a.columnNumber+1),{name:a.name,message:a.message,url:c(),stack:m}):null}}function p(a){var b=a.stacktrace;if(!g(a.stacktrace)&&a.stacktrace){for(var d,h=/ line (\d+), column (\d+) in (?:<anonymous function: ([^>]+)>|([^\)]+))\((.*)\) in (.*):\s*$/i,i=b.split("\n"),j=[],k=0,l=i.length;l>k;k+=2)if(d=h.exec(i[k])){var m={line:+d[1],column:+d[2],func:d[3]||d[4],args:d[5]?d[5].split(","):[],url:d[6]};if(!m.func&&m.line&&(m.func=e(m.url,m.line)),m.line)try{m.context=f(m.url,m.line)}catch(n){}m.context||(m.context=[i[k+1]]),j.push(m)}return j.length?{name:a.name,message:a.message,url:c(),stack:j}:null}}function q(b){var g=b.message.split("\n");if(g.length<4)return null;var h,i,l,n,o=/^\s*Line (\d+) of linked script ((?:file|https?)\S+)(?:: in function (\S+))?\s*$/i,p=/^\s*Line (\d+) of inline#(\d+) script in ((?:file|https?)\S+)(?:: in function (\S+))?\s*$/i,q=/^\s*Line (\d+) of function script\s*$/i,r=[],s=document.getElementsByTagName("script"),t=[];for(i in s)m(s,i)&&!s[i].src&&t.push(s[i]);for(i=2,l=g.length;l>i;i+=2){var u=null;if(h=o.exec(g[i]))u={url:h[2],func:h[3],line:+h[1]};else if(h=p.exec(g[i])){u={url:h[3],func:h[4]};var v=+h[1],w=t[h[2]-1];if(w&&(n=d(u.url))){n=n.join("\n");var x=n.indexOf(w.innerText);x>=0&&(u.line=v+n.substring(0,x).split("\n").length)}}else if(h=q.exec(g[i])){var y=a.location.href.replace(/#.*$/,""),z=h[1],A=new RegExp(j(g[i+1]));n=k(A,[y]),u={url:y,line:n?n.line:z,func:""}}if(u){u.func||(u.func=e(u.url,u.line));var B=f(u.url,u.line),C=B?B[Math.floor(B.length/2)]:null;B&&C.replace(/^\s*/,"")===g[i+1].replace(/^\s*/,"")?u.context=B:u.context=[g[i+1]],r.push(u)}}return r.length?{name:b.name,message:g[0],url:c(),stack:r}:null}function r(a,b,c,d){var g={url:b,line:c};if(g.url&&g.line){a.incomplete=!1,g.func||(g.func=e(g.url,g.line)),g.context||(g.context=f(g.url,g.line));var h=/ '([^']+)' /.exec(d);if(h&&(g.column=l(h[1],g.url,g.line)),a.stack.length>0&&a.stack[0].url===g.url){if(a.stack[0].line===g.line)return!1;if(!a.stack[0].line&&a.stack[0].func===g.func)return a.stack[0].line=g.line,a.stack[0].context=g.context,!1}return a.stack.unshift(g),a.partial=!0,!0}return a.incomplete=!0,!1}function s(a,b){for(var d,f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,m=s.caller;m&&!k;m=m.caller)if(m!==t&&m!==H.report){if(f={url:null,func:J,line:null,column:null},m.name?f.func=m.name:(d=h.exec(m.toString()))&&(f.func=d[1]),"undefined"==typeof f.func)try{f.func=d.input.substring(0,d.input.indexOf("{"))}catch(o){}if(g=n(m)){f.url=g.url,f.line=g.line,f.func===J&&(f.func=e(f.url,f.line));var p=/ '([^']+)' /.exec(a.message||a.description);p&&(f.column=l(p[1],g.url,g.line))}j[""+m]?k=!0:j[""+m]=!0,i.push(f)}b&&i.splice(0,b);var q={name:a.name,message:a.message,url:c(),stack:i};return r(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function t(a,b){var d=null;b=null==b?0:+b;try{if(d=p(a))return d}catch(e){if(H.debug)throw e}try{if(d=o(a))return d}catch(e){if(H.debug)throw e}try{if(d=q(a))return d}catch(e){if(H.debug)throw e}try{if(d=s(a,b+1))return d}catch(e){if(H.debug)throw e}return{name:a.name,message:a.message,url:c()}}var u={};return t.augmentStackTraceWithInitialElement=r,t.computeStackTraceFromStackProp=o,t.guessFunctionName=e,t.gatherContext=f,t}();var K,L,M,N,O,P=a.Raven,Q=!("object"!=typeof JSON||!JSON.stringify),R="undefined"!=typeof document,S={},T={logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],crossOrigin:"anonymous",collectWindowErrors:!0,maxMessageLength:100},U=!1,V=Object.prototype,W=a.console||{},X={},Y=[],Z=v();for(var $ in W)X[$]=W[$];var _={VERSION:"1.3.0",debug:!1,noConflict:function(){return a.Raven=P,_},config:function(a,b){if(M)return D("error","Error: Raven has already been configured"),_;if(!a)return _;var c=f(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);return b&&n(b,function(a,b){"tags"==a||"extra"==a?S[a]=b:T[a]=b}),T.ignoreErrors.push(/^Script error\.?$/),T.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),T.ignoreErrors=B(T.ignoreErrors),T.ignoreUrls=T.ignoreUrls.length?B(T.ignoreUrls):!1,T.whitelistUrls=T.whitelistUrls.length?B(T.whitelistUrls):!1,T.includePaths=B(T.includePaths),N=c.user,O=c.path.substr(d+1),M="//"+c.host+(c.port?":"+c.port:"")+"/"+e+"api/"+O+"/store/",c.protocol&&(M=c.protocol+":"+M),T.fetchContext&&(H.remoteFetching=!0),T.linesOfContext&&(H.linesOfContext=T.linesOfContext),H.collectWindowErrors=!!T.collectWindowErrors,_},install:function(){return A()&&!U&&(H.report.subscribe(o),n(Y,function(a,b){b()}),U=!0),_},context:function(a,c,d){return h(a)&&(d=c||[],c=a,a=b),_.wrap(a,c).apply(this,d)},wrap:function(a,c){function d(){for(var b=[],d=arguments.length,e=!a||a&&a.deep!==!1;d--;)b[d]=e?_.wrap(a,arguments[d]):arguments[d];try{return c.apply(this,b)}catch(f){throw _.captureException(f,a),f}}if(g(c)&&!h(a))return a;if(h(a)&&(c=a,a=b),!h(c))return c;if(c.__raven__)return c;for(var e in c)m(c,e)&&(d[e]=c[e]);return d.prototype=c.prototype,d.__raven__=!0,d.__inner__=c,d},uninstall:function(){return H.report.uninstall(),U=!1,_},captureException:function(a,b){if(!l(a))return _.captureMessage(a,b);K=a;try{var c=H.computeStackTrace(a);o(c,b)}catch(d){if(a!==d)throw d}return _},captureMessage:function(a,b){return T.ignoreErrors.test&&T.ignoreErrors.test(a)?void 0:(x(s({message:a+""},b)),_)},addPlugin:function(a){return Y.push(a),U&&a(),_},setUserContext:function(a){return S.user=a,_},setExtraContext:function(a){return G("extra",a),_},setTagsContext:function(a){return G("tags",a),_},clearContext:function(){return S={},_},getContext:function(){return JSON.parse(JSON.stringify(S))},setRelease:function(a){return T.release=a,_},setDataCallback:function(a){return T.dataCallback=a,_},setShouldSendCallback:function(a){return T.shouldSendCallback=a,_},setTransport:function(a){return T.transport=a,_},lastException:function(){return K},lastEventId:function(){return L},isSetup:function(){return A()}};_.setUser=_.setUserContext,_.setReleaseContext=_.setRelease;var aa="source protocol user pass host port path".split(" "),ba=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;e.prototype=new Error,e.prototype.constructor=e;var ca;E(),a.Raven=_,"function"==typeof define&&define.amd?define("raven",[],function(){return _}):"object"==typeof module?module.exports=_:"object"==typeof exports&&(exports=_)}("undefined"!=typeof window?window:this); | ||
//# sourceMappingURL=raven.min.map |
{ | ||
"support_level": "production", | ||
"platforms": { | ||
@@ -13,2 +14,11 @@ "javascript": { | ||
}, | ||
"javascript.angular": { | ||
"name": "Angular", | ||
"type": "framework", | ||
"doc_link": "integrations/angular/", | ||
"wizard": [ | ||
"integrations/angular#installation", | ||
"integrations/angular#configuring-the-client" | ||
] | ||
}, | ||
"javascript.backbone": { | ||
@@ -15,0 +25,0 @@ "name": "Backbone", |
function add(a,b){"use strict";return a+b}function multiply(a,b){"use strict";return a*b}function divide(a,b){"use strict";try{return multiply(add(a,b),a,b)/c}catch(e){Raven.captureException(e)}} | ||
//@ sourceMappingURL=file.sourcemap.js | ||
//# sourceMappingURL=file.sourcemap.js |
@@ -195,2 +195,19 @@ module.exports = function(grunt) { | ||
} | ||
}, | ||
sri: { | ||
dist: { | ||
src: ['dist/*.js'], | ||
options: { | ||
dest: 'dist/sri.json', | ||
pretty: true | ||
} | ||
}, | ||
build: { | ||
src: ['build/**/*.js'], | ||
options: { | ||
dest: 'build/sri.json', | ||
pretty: true | ||
} | ||
} | ||
} | ||
@@ -249,2 +266,3 @@ }; | ||
grunt.loadNpmTasks('grunt-gitinfo'); | ||
grunt.loadNpmTasks('grunt-sri'); | ||
@@ -255,4 +273,4 @@ // Build tasks | ||
grunt.registerTask('concat.all', ['_prep', 'concat:all']); | ||
grunt.registerTask('build.core', ['concat.core', 'uglify', 'fixSourceMaps']); | ||
grunt.registerTask('build.all', ['concat.all', 'uglify', 'fixSourceMaps']); | ||
grunt.registerTask('build.core', ['concat.core', 'uglify', 'fixSourceMaps', 'sri:dist']); | ||
grunt.registerTask('build.all', ['concat.all', 'uglify', 'fixSourceMaps', 'sri:dist', 'sri:build']); | ||
grunt.registerTask('build', ['build.all']); | ||
@@ -259,0 +277,0 @@ grunt.registerTask('dist', ['build.core', 'copy:dist']); |
{ | ||
"name": "raven-js", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"license": "BSD-2-Clause", | ||
@@ -17,3 +17,3 @@ "homepage": "https://getsentry.com", | ||
"chai": "~1.8.1", | ||
"grunt": "~0.4.1", | ||
"grunt": "^0.4.5", | ||
"grunt-cli": "~0.1.9", | ||
@@ -30,6 +30,15 @@ "grunt-contrib-clean": "~0.4.0", | ||
"grunt-s3": "~0.2.0-alpha.3", | ||
"grunt-sri": "mattrobenolt/grunt-sri#pretty", | ||
"jquery": "^2.1.4", | ||
"lodash": "~2.4.0", | ||
"sinon": "~1.7.3" | ||
} | ||
}, | ||
"keywords": [ | ||
"exceptions", | ||
"debugging", | ||
"logging", | ||
"errors", | ||
"sentry", | ||
"raven" | ||
] | ||
} |
@@ -15,31 +15,49 @@ /** | ||
// Angular plugin doesn't go through the normal `Raven.addPlugin` | ||
// since this bootstraps the `install()` automatically. | ||
function RavenProvider() { | ||
this.$get = ['$window', function($window, $log) { | ||
return $window.Raven; | ||
}]; | ||
} | ||
function ngRavenProvider($provide) { | ||
$provide.decorator('$exceptionHandler', [ | ||
'RavenConfig', '$delegate', | ||
ngRavenExceptionHandler | ||
]); | ||
function ExceptionHandlerProvider($provide) { | ||
$provide.decorator('$exceptionHandler', | ||
['Raven', '$delegate', exceptionHandler]); | ||
} | ||
function ngRavenExceptionHandler(RavenConfig, $delegate) { | ||
if (!RavenConfig) | ||
throw new Error('RavenConfig must be set before using this'); | ||
if (RavenConfig.debug !== void 0) { | ||
Raven.debug = RavenConfig.debug; | ||
} | ||
Raven.config(RavenConfig.dsn, RavenConfig.config).install(); | ||
return function angularExceptionHandler(ex, cause) { | ||
function exceptionHandler(Raven, $delegate) { | ||
return function (ex, cause) { | ||
Raven.captureException(ex, { | ||
extra: { cause: cause } | ||
}); | ||
$delegate(ex, cause); | ||
Raven.captureException(ex, {extra: {cause: cause}}); | ||
}; | ||
} | ||
angular.module('ngRaven', []) | ||
.config(['$provide', ngRavenProvider]) | ||
.value('Raven', Raven); | ||
// See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js | ||
var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.+?)\n(\S+)$/; | ||
Raven.addPlugin(function () { | ||
angular.module('ngRaven', []) | ||
.provider('Raven', RavenProvider) | ||
.config(['$provide', ExceptionHandlerProvider]); | ||
}); | ||
Raven.setDataCallback(function(data) { | ||
// We only care about mutating an exception | ||
var exception = data.exception; | ||
if (exception) { | ||
exception = exception.values[0]; | ||
var matches = angularPattern.exec(exception.value); | ||
if (matches) { | ||
// This type now becomes something like: $rootScope:inprog | ||
exception.type = matches[1]; | ||
exception.value = matches[2]; | ||
data.message = exception.type + ': ' + exception.value; | ||
// auto set a new tag specifically for the angular error url | ||
data.extra.angularDocs = matches[3].substr(0, 250); | ||
} | ||
} | ||
}); | ||
}(typeof window !== 'undefined' ? window : this)); |
@@ -26,3 +26,3 @@ /** | ||
var args = [].slice.call(arguments); | ||
Raven.captureMessage('' + args, {level: level, logger: 'console'}); | ||
Raven.captureMessage('' + args[0], {level: level, logger: 'console', extra: { 'arguments': args }}); | ||
@@ -29,0 +29,0 @@ // this fails for some browsers. :( |
@@ -10,2 +10,12 @@ /*global ErrorUtils:false*/ | ||
*/ | ||
var DEVICE_PATH_RE = /^\/var\/mobile\/Containers\/Bundle\/Application\/[^\/]+\/[^\.]+\.app/; | ||
function normalizeUrl(url) { | ||
"use strict"; | ||
return url | ||
.replace(/file\:\/\//, '') | ||
.replace(DEVICE_PATH_RE, ''); | ||
} | ||
module.exports = function (Raven) { | ||
@@ -51,3 +61,18 @@ "use strict"; | ||
// Use data callback to strip device-specific paths from stack traces | ||
Raven.setDataCallback(function (data) { | ||
if (data.culprit) { | ||
data.culprit = normalizeUrl(data.culprit); | ||
} | ||
if (data.exception) { | ||
// if data.exception exists, all of the other keys are guaranteed to exist | ||
data.exception.values[0].stacktrace.frames.forEach(function (frame) { | ||
frame.filename = normalizeUrl(frame.filename); | ||
}); | ||
} | ||
}); | ||
ErrorUtils.setGlobalHandler(Raven.captureException); | ||
}; |
@@ -5,3 +5,3 @@ # Raven.js [![Build Status](https://travis-ci.org/getsentry/raven-js.svg?branch=master)](https://travis-ci.org/getsentry/raven-js) | ||
**Raven.js v1.1 requires Sentry v6.0 or later.** | ||
**Raven.js v1.3 requires Sentry v7.7.0 or later.** | ||
@@ -8,0 +8,0 @@ ## Resources |
@@ -46,3 +46,3 @@ 'use strict'; | ||
debug: true, | ||
debug: false, | ||
@@ -222,2 +222,3 @@ /* | ||
} | ||
wrapped.prototype = func.prototype; | ||
@@ -672,6 +673,3 @@ // Signal that this function has been wrapped already | ||
message += ''; | ||
message = truncate(message, globalOptions.maxMessageLength); | ||
fullMessage = type + ': ' + message; | ||
fullMessage = truncate(fullMessage, globalOptions.maxMessageLength); | ||
@@ -702,7 +700,8 @@ if (frames && frames.length) { | ||
exception: { | ||
type: type, | ||
value: message | ||
values: [{ | ||
type: type, | ||
value: message, | ||
stacktrace: stacktrace | ||
}] | ||
}, | ||
// sentry.interfaces.Stacktrace | ||
stacktrace: stacktrace, | ||
culprit: fileurl, | ||
@@ -728,2 +727,15 @@ message: fullMessage | ||
function trimPacket(data) { | ||
// For now, we only want to truncate the two different messages | ||
// but this could/should be expanded to just trim everything | ||
var max = globalOptions.maxMessageLength; | ||
data.message = truncate(data.message, max); | ||
if (data.exception) { | ||
var exception = data.exception.values[0]; | ||
exception.value = truncate(exception.value, max); | ||
} | ||
return data; | ||
} | ||
function now() { | ||
@@ -738,3 +750,3 @@ return +new Date(); | ||
var http = { | ||
var httpData = { | ||
headers: { | ||
@@ -745,9 +757,9 @@ 'User-Agent': navigator.userAgent | ||
http.url = document.location.href; | ||
httpData.url = document.location.href; | ||
if (document.referrer) { | ||
http.headers.Referer = document.referrer; | ||
httpData.headers.Referer = document.referrer; | ||
} | ||
return http; | ||
return httpData; | ||
} | ||
@@ -760,6 +772,6 @@ | ||
platform: 'javascript' | ||
}; | ||
var http = getHttpData(); | ||
if (http) { | ||
baseData.request = http; | ||
}, httpData = getHttpData(); | ||
if (httpData) { | ||
baseData.request = httpData; | ||
} | ||
@@ -774,5 +786,3 @@ | ||
// Send along our own collected metadata with extra | ||
data.extra = objectMerge({ | ||
'session:duration': now() - startTime | ||
}, data.extra); | ||
data.extra['session:duration'] = now() - startTime; | ||
@@ -789,2 +799,4 @@ // If there are no tags/extra, strip the key from the payload alltogther. | ||
if (globalOptions.release) data.release = globalOptions.release; | ||
// Include server_name if it's defined in globalOptions | ||
if (globalOptions.serverName) data.server_name = globalOptions.serverName; | ||
@@ -810,2 +822,5 @@ if (isFunction(globalOptions.dataCallback)) { | ||
// Try and clean up the packet before sending by truncating long values | ||
data = trimPacket(data); | ||
logDebug('debug', 'Raven about to send:', data); | ||
@@ -818,3 +833,3 @@ | ||
auth: { | ||
sentry_version: '4', | ||
sentry_version: '7', | ||
sentry_client: 'raven-js/' + Raven.VERSION, | ||
@@ -845,6 +860,7 @@ sentry_key: globalKey | ||
var img = newImage(), | ||
src = opts.url + '?' + urlencode(opts.auth); | ||
src = opts.url + '?' + urlencode(opts.auth), | ||
crossOrigin = opts.options.crossOrigin; | ||
if (opts.options.crossOrigin || opts.options.crossOrigin === '') { | ||
img.crossOrigin = opts.options.crossOrigin; | ||
if (crossOrigin || crossOrigin === '') { | ||
img.crossOrigin = crossOrigin; | ||
} | ||
@@ -851,0 +867,0 @@ img.onload = opts.onSuccess; |
@@ -18,20 +18,2 @@ /* | ||
/** | ||
* TraceKit.wrap: Wrap any function in a TraceKit reporter | ||
* Example: func = TraceKit.wrap(func); | ||
* | ||
* @param {Function} func Function to be wrapped | ||
* @return {Function} The wrapped func | ||
*/ | ||
TraceKit.wrap = function traceKitWrapper(func) { | ||
function wrapped() { | ||
try { | ||
return func.apply(this, arguments); | ||
} catch (e) { | ||
TraceKit.report(e); | ||
throw e; | ||
} | ||
} | ||
return wrapped; | ||
}; | ||
@@ -38,0 +20,0 @@ function getLocationHref() { |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
385720
69
6482
17