Comparing version 1.1.22 to 1.2.0
{ | ||
"name": "raven-js", | ||
"version": "1.1.22", | ||
"version": "1.2.0", | ||
"dependencies": {}, | ||
@@ -5,0 +5,0 @@ "main": "dist/raven.js", |
# Changelog | ||
## 1.2.0 | ||
* BUGFIX: Error in cases where a `document` context doesn't exist. See: https://github.com/getsentry/raven-js/pull/383 | ||
* BUGFIX: Trailing comma when using unminified dist which affects IE9. See: https://github.com/getsentry/raven-js/pull/385 | ||
* NEW: Add ability to swap in a custom transport. Adds `Raven.setTransport`, and `transport` option to config. Docs: https://docs.getsentry.com/hosted/clients/javascript/config/ | ||
* CHANGE: Always expose `Raven` to `window`. Please call `Raven.noConflict()` if you want it restored to what it was. See: https://github.com/getsentry/raven-js/pull/393 | ||
* DEPRECATED: Replace `Raven.setReleaseContext` with `Raven.setRelease`. | ||
* NEW: Add `Raven.clearContext()` to empty all of the context. | ||
* NEW: Add `Raven.getContext()` to get a copy of the current context. | ||
* NEW: `Raven.set{Extra,Tags}Context(ctx)` now merges with existing values instead of overwriting. | ||
* NEW: Add `Raven.addPlugin()` to register a plugin to be initialized when installed. | ||
* NEW: Plugins are now initialized and loaded when calling `Raven.install()`. This avoid some race conditions with load order. | ||
## 1.1.22 | ||
@@ -4,0 +16,0 @@ |
@@ -1,3 +0,3 @@ | ||
/*! Raven.js 1.1.22 (6278810) | github.com/getsentry/raven-js */ | ||
!function(a,b){"use strict";function c(a,b){var c,d;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)l(b,d)&&(c[d]=b[d]);if(document.createEvent)document.dispatchEvent(c);else try{document.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}function d(a){this.name="RavenConfigError",this.message=a}function e(a){var b=Y.exec(a),c={},e=7;try{for(;e--;)c[X[e]]=b[e]||""}catch(f){throw new d("Invalid DSN: "+a)}if(c.pass)throw new d("Do not specify your private key in the DSN!");return c}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object String]"===R.toString.call(a)}function i(a){return"object"==typeof a&&null!==a}function j(a){for(var b in a)return!1;return!0}function k(a){return i(a)&&"[object Error]"===R.toString.call(a)||a instanceof Error}function l(a,b){return R.hasOwnProperty.call(a,b)}function m(a,b){var c,d;if(f(a.length))for(c in a)l(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 n(a,b){var d=[];a.stack&&a.stack.length&&m(a.stack,function(a,b){var c=o(b);c&&d.push(c)}),c("handle",{stackInfo:a,options:b}),q(a.name,a.message,a.url,a.lineno,d,b)}function o(a){if(a.url){var b,c={filename:a.url,lineno:a.line,colno:a.column,"function":a.func||"?"},d=p(a);if(d){var e=["pre_context","context_line","post_context"];for(b=3;b--;)c[e[b]]=d[b]}return c.in_app=!(P.includePaths.test&&!P.includePaths.test(c.filename)||/(Raven|TraceKit)\./.test(c["function"])||/raven\.(min\.)?js$/.test(c.filename)),c}}function p(a){if(a.context&&P.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(f(a.column))return;return[[],b[c].substr(a.column,50),[]]}return[b.slice(0,c),b[c],b.slice(c+1)]}}function q(a,b,c,d,e,f){var g,h;P.ignoreErrors.test&&P.ignoreErrors.test(b)||(b+="",b=s(b,P.maxMessageLength),h=a+": "+b,h=s(h,P.maxMessageLength),e&&e.length?(c=e[0].filename||c,e.reverse(),g={frames:e}):c&&(g={frames:[{filename:c,lineno:d,in_app:!0}]}),P.ignoreUrls.test&&P.ignoreUrls.test(c)||(!P.whitelistUrls.test||P.whitelistUrls.test(c))&&v(r({exception:{type:a,value:b},stacktrace:g,culprit:c,message:h},f)))}function r(a,b){return b?(m(b,function(b,c){a[b]=c}),a):a}function s(a,b){return a.length<=b?a:a.substr(0,b)+"…"}function t(){return+new Date}function u(){if(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 v(a){var b={project:M,logger:P.logger,platform:"javascript"},d=u();d&&(b.request=d),a=r(b,a),a.tags=r(r({},P.tags),a.tags),a.extra=r(r({},P.extra),a.extra),a.extra=r({"session:duration":t()-U},a.extra),j(a.tags)&&delete a.tags,K&&(a.user=K),P.release&&(a.release=P.release),g(P.dataCallback)&&(a=P.dataCallback(a)||a),a&&!j(a)&&(!g(P.shouldSendCallback)||P.shouldSendCallback(a))&&(I=a.event_id||(a.event_id=A()),B("debug","Raven about to send:",a),y()&&(P.transport||w)({url:J,auth:{sentry_version:"4",sentry_client:"raven-js/"+W.VERSION,sentry_key:L},data:a,options:P,onSuccess:function(){c("success",{data:a,src:J})},onError:function(){c("failure",{data:a,src:J})}}))}function w(a){a.auth.sentry_data=JSON.stringify(a.data);var b=x(),c=a.url+"?"+D(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 x(){return document.createElement("img")}function y(){return O?J?!0:(Z||B("error","Error: Raven has not been configured."),Z=!0,!1):!1}function z(a){for(var b,c=[],d=0,e=a.length;e>d;d++)b=a[d],h(b)?c.push(b.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")):b&&b.source&&c.push(b.source);return new RegExp(c.join("|"),"i")}function A(){var b=a.crypto||a.msCrypto;if(!f(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 B(a){T[a]&&W.debug&&T[a].apply(S,F.call(arguments,1))}function C(){var b=a.RavenConfig;b&&W.config(b.dsn,b.config).install()}function D(a){var b=[];return m(a,function(a,c){b.push(encodeURIComponent(a)+"="+encodeURIComponent(c))}),b.join("&")}var E={remoteFetching:!1,collectWindowErrors:!0,linesOfContext:7,debug:!1},F=[].slice,G="?";E.wrap=function(a){function b(){try{return a.apply(this,arguments)}catch(b){throw E.report(b),b}}return b},E.report=function(){function c(a){h(),o.push(a)}function d(a){for(var b=o.length-1;b>=0;--b)o[b]===a&&o.splice(b,1)}function e(){i(),o=[]}function f(a,b){var c=null;if(!b||E.collectWindowErrors){for(var d in o)if(l(o,d))try{o[d].apply(null,[a].concat(F.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function g(a,b,c,d,e){var g=null;if(r)E.computeStackTrace.augmentStackTraceWithInitialElement(r,b,c,a),j();else if(e)g=E.computeStackTrace(e),f(g,!0);else{var h={url:b,line:c,column:d};h.func=E.computeStackTrace.guessFunctionName(h.url,h.line),h.context=E.computeStackTrace.gatherContext(h.url,h.line),g={message:a,url:document.location.href,stack:[h]},f(g,!0)}return m?m.apply(this,arguments):!1}function h(){n||(m=a.onerror,a.onerror=g,n=!0)}function i(){n&&(a.onerror=m,n=!1,m=b)}function j(){var a=r,b=p;p=null,r=null,q=null,f.apply(null,[a,!1].concat(b))}function k(b,c){var d=F.call(arguments,1);if(r){if(q===b)return;j()}var e=E.computeStackTrace(b);if(r=e,q=b,p=d,a.setTimeout(function(){q===b&&j()},e.incomplete?2e3:0),c!==!1)throw b}var m,n,o=[],p=null,q=null,r=null;return k.subscribe=c,k.unsubscribe=d,k.uninstall=e,k}(),E.computeStackTrace=function(){function b(b){if(!E.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 c(a){if(!h(a))return[];if(!l(t,a)){var c="",d="";try{d=document.domain}catch(e){}-1!==a.indexOf(d)&&(c=b(a)),t[a]=c?c.split("\n"):[]}return t[a]}function d(a,b){var d,e=/function ([^(]*)\(([^)]*)\)/,g=/['"]?([0-9A-Za-z$_]+)['"]?\s*[:=]\s*(function|eval|new Function)/,h="",i=10,j=c(a);if(!j.length)return G;for(var k=0;i>k;++k)if(h=j[b-k]+h,!f(h)){if(d=g.exec(h))return d[1];if(d=e.exec(h))return d[1]}return G}function e(a,b){var d=c(a);if(!d.length)return null;var e=[],g=Math.floor(E.linesOfContext/2),h=g+E.linesOfContext%2,i=Math.max(0,b-g-1),j=Math.min(d.length,b+h-1);b-=1;for(var k=i;j>k;++k)f(d[k])||e.push(d[k]);return e.length>0?e:null}function g(a){return a.replace(/[\-\[\]{}()*+?.,\\\^$|#]/g,"\\$&")}function i(a){return g(a).replace("<","(?:<|<)").replace(">","(?:>|>)").replace("&","(?:&|&)").replace('"','(?:"|")').replace(/\s+/g,"\\s+")}function j(a,b){for(var d,e,f=0,g=b.length;g>f;++f)if((d=c(b[f])).length&&(d=d.join("\n"),e=a.exec(d)))return{url:b[f],line:d.substring(0,e.index).split("\n").length,column:e.index-d.lastIndexOf("\n",e.index)-1};return null}function k(a,b,d){var e,f=c(b),h=new RegExp("\\b"+g(a)+"\\b");return d-=1,f&&f.length>d&&(e=h.exec(f[d]))?e.index:null}function m(b){for(var c,d,e,f,h=[a.location.href],k=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<k.length;++o){var p=k[o];p.src&&h.push(p.src)}if(e=m.exec(l)){var q=e[1]?"\\s+"+e[1]:"",r=e[2].split(",").join("\\s*,\\s*");c=g(e[3]).replace(/;$/,";?"),d=new RegExp("function"+q+"\\s*\\(\\s*"+r+"\\s*\\)\\s*{\\s*"+c+"\\s*}")}else d=new RegExp(g(l).replace(/\s+/g,"\\s+"));if(f=j(d,h))return f;if(e=n.exec(l)){var s=e[1];if(c=i(e[2]),d=new RegExp("on"+s+"=[\\'\"]\\s*"+c+"\\s*[\\'\"]","i"),f=j(d,h[0]))return f;if(d=new RegExp(c),f=j(d,h))return f}return null}function n(a){if(!f(a.stack)&&a.stack){for(var b,c,g=/^\s*at (.*?) ?\(?((?:(?:file|https?|chrome-extension):.*?)|<anonymous>):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?@((?:file|https?|chrome).*?):(\d+)(?::(\d+))?\s*$/i,i=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:ms-appx|http|https):.*?):(\d+)(?::(\d+))?\)?\s*$/i,j=a.stack.split("\n"),l=[],m=/^(.*) is undefined$/.exec(a.message),n=0,o=j.length;o>n;++n){if(b=h.exec(j[n]))c={url:b[3],func:b[1]||G,args:b[2]?b[2].split(","):"",line:+b[4],column:b[5]?+b[5]:null};else if(b=g.exec(j[n]))c={url:b[2],func:b[1]||G,line:+b[3],column:b[4]?+b[4]:null};else{if(!(b=i.exec(j[n])))continue;c={url:b[2],func:b[1]||G,line:+b[3],column:b[4]?+b[4]:null}}!c.func&&c.line&&(c.func=d(c.url,c.line)),c.line&&(c.context=e(c.url,c.line)),l.push(c)}return l.length?(l[0].line&&!l[0].column&&m?l[0].column=k(m[1],l[0].url,l[0].line):l[0].column||f(a.columnNumber)||(l[0].column=a.columnNumber+1),{name:a.name,message:a.message,url:document.location.href,stack:l}):null}}function o(a){var b=a.stacktrace;if(!f(a.stacktrace)&&a.stacktrace){for(var c,g=/ line (\d+), column (\d+) in (?:<anonymous function: ([^>]+)>|([^\)]+))\((.*)\) in (.*):\s*$/i,h=b.split("\n"),i=[],j=0,k=h.length;k>j;j+=2)if(c=g.exec(h[j])){var l={line:+c[1],column:+c[2],func:c[3]||c[4],args:c[5]?c[5].split(","):[],url:c[6]};if(!l.func&&l.line&&(l.func=d(l.url,l.line)),l.line)try{l.context=e(l.url,l.line)}catch(m){}l.context||(l.context=[h[j+1]]),i.push(l)}return i.length?{name:a.name,message:a.message,url:document.location.href,stack:i}:null}}function p(b){var f=b.message.split("\n");if(f.length<4)return null;var g,h,k,m,n=/^\s*Line (\d+) of linked script ((?:file|https?)\S+)(?:: in function (\S+))?\s*$/i,o=/^\s*Line (\d+) of inline#(\d+) script in ((?:file|https?)\S+)(?:: in function (\S+))?\s*$/i,p=/^\s*Line (\d+) of function script\s*$/i,q=[],r=document.getElementsByTagName("script"),s=[];for(h in r)l(r,h)&&!r[h].src&&s.push(r[h]);for(h=2,k=f.length;k>h;h+=2){var t=null;if(g=n.exec(f[h]))t={url:g[2],func:g[3],line:+g[1]};else if(g=o.exec(f[h])){t={url:g[3],func:g[4]};var u=+g[1],v=s[g[2]-1];if(v&&(m=c(t.url))){m=m.join("\n");var w=m.indexOf(v.innerText);w>=0&&(t.line=u+m.substring(0,w).split("\n").length)}}else if(g=p.exec(f[h])){var x=a.location.href.replace(/#.*$/,""),y=g[1],z=new RegExp(i(f[h+1]));m=j(z,[x]),t={url:x,line:m?m.line:y,func:""}}if(t){t.func||(t.func=d(t.url,t.line));var A=e(t.url,t.line),B=A?A[Math.floor(A.length/2)]:null;A&&B.replace(/^\s*/,"")===f[h+1].replace(/^\s*/,"")?t.context=A:t.context=[f[h+1]],q.push(t)}}return q.length?{name:b.name,message:f[0],url:document.location.href,stack:q}:null}function q(a,b,c,f){var g={url:b,line:c};if(g.url&&g.line){a.incomplete=!1,g.func||(g.func=d(g.url,g.line)),g.context||(g.context=e(g.url,g.line));var h=/ '([^']+)' /.exec(f);if(h&&(g.column=k(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 r(a,b){for(var c,e,f,g=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,h=[],i={},j=!1,l=r.caller;l&&!j;l=l.caller)if(l!==s&&l!==E.report){if(e={url:null,func:G,line:null,column:null},l.name?e.func=l.name:(c=g.exec(l.toString()))&&(e.func=c[1]),"undefined"==typeof e.func)try{e.func=c.input.substring(0,c.input.indexOf("{"))}catch(n){}if(f=m(l)){e.url=f.url,e.line=f.line,e.func===G&&(e.func=d(e.url,e.line));var o=/ '([^']+)' /.exec(a.message||a.description);o&&(e.column=k(o[1],f.url,f.line))}i[""+l]?j=!0:i[""+l]=!0,h.push(e)}b&&h.splice(0,b);var p={name:a.name,message:a.message,url:document.location.href,stack:h};return q(p,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),p}function s(a,b){var c=null;b=null==b?0:+b;try{if(c=o(a))return c}catch(d){if(E.debug)throw d}try{if(c=n(a))return c}catch(d){if(E.debug)throw d}try{if(c=p(a))return c}catch(d){if(E.debug)throw d}try{if(c=r(a,b+1))return c}catch(d){if(E.debug)throw d}return{name:a.name,message:a.message,url:document.location.href}}var t={};return s.augmentStackTraceWithInitialElement=q,s.computeStackTraceFromStackProp=n,s.guessFunctionName=d,s.gatherContext=e,s}();var H,I,J,K,L,M,N=a.Raven,O=!("object"!=typeof JSON||!JSON.stringify),P={logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],crossOrigin:"anonymous",collectWindowErrors:!0,tags:{},maxMessageLength:100,extra:{}},Q=!1,R=Object.prototype,S=a.console||{},T={},U=t();for(var V in S)T[V]=S[V];var W={VERSION:"1.1.22",debug:!0,noConflict:function(){return a.Raven=N,W},config:function(a,b){if(J)return B("error","Error: Raven has already been configured"),W;if(!a)return W;var c=e(a),d=c.path.lastIndexOf("/"),f=c.path.substr(1,d);return b&&m(b,function(a,b){P[a]=b}),P.ignoreErrors.push(/^Script error\.?$/),P.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),P.ignoreErrors=z(P.ignoreErrors),P.ignoreUrls=P.ignoreUrls.length?z(P.ignoreUrls):!1,P.whitelistUrls=P.whitelistUrls.length?z(P.whitelistUrls):!1,P.includePaths=z(P.includePaths),L=c.user,M=c.path.substr(d+1),J="//"+c.host+(c.port?":"+c.port:"")+"/"+f+"api/"+M+"/store/",c.protocol&&(J=c.protocol+":"+J),P.fetchContext&&(E.remoteFetching=!0),P.linesOfContext&&(E.linesOfContext=P.linesOfContext),E.collectWindowErrors=!!P.collectWindowErrors,W},install:function(){return y()&&!Q&&(E.report.subscribe(n),Q=!0),W},context:function(a,c,d){return g(a)&&(d=c||[],c=a,a=b),W.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?W.wrap(a,arguments[d]):arguments[d];try{return c.apply(this,b)}catch(f){throw W.captureException(f,a),f}}if(f(c)&&!g(a))return a;if(g(a)&&(c=a,a=b),!g(c))return c;if(c.__raven__)return c;for(var e in c)l(c,e)&&(d[e]=c[e]);return d.__raven__=!0,d.__inner__=c,d},uninstall:function(){return E.report.uninstall(),Q=!1,W},captureException:function(a,b){if(!k(a))return W.captureMessage(a,b);H=a;try{var c=E.computeStackTrace(a);n(c,b)}catch(d){if(a!==d)throw d}return W},captureMessage:function(a,b){return P.ignoreErrors.test&&P.ignoreErrors.test(a)?void 0:(v(r({message:a+""},b)),W)},setUserContext:function(a){return K=a,W},setExtraContext:function(a){return P.extra=a||{},W},setTagsContext:function(a){return P.tags=a||{},W},setReleaseContext:function(a){return P.release=a,W},setDataCallback:function(a){return P.dataCallback=a,W},setShouldSendCallback:function(a){return P.shouldSendCallback=a,W},lastException:function(){return H},lastEventId:function(){return I},isSetup:function(){return y()}};W.setUser=W.setUserContext;var X="source protocol user pass host port path".split(" "),Y=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;d.prototype=new Error,d.prototype.constructor=d;var Z;C(),"function"==typeof define&&define.amd?(a.Raven=W,define("raven",[],function(){return W})):"object"==typeof module?module.exports=W:"object"==typeof exports?exports=W:a.Raven=W}("undefined"!=typeof window?window:this); | ||
/*! 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); | ||
//# sourceMappingURL=raven.min.map |
@@ -14,4 +14,8 @@ module.exports = function(grunt) { | ||
var excludedPlugins = [ | ||
'react-native' | ||
]; | ||
var plugins = grunt.option('plugins'); | ||
// Create plugin paths and verify hey exist | ||
// Create plugin paths and verify they exist | ||
plugins = _.map(plugins ? plugins.split(',') : [], function (plugin) { | ||
@@ -39,2 +43,11 @@ var path = 'plugins/' + plugin + '.js'; | ||
var excluded = _.map(excludedPlugins, function(plugin) { | ||
return 'plugins/' + plugin + '.js'; | ||
}); | ||
// Remove the plugins that we don't want to build | ||
a = _.filter(a, function(n) { | ||
return excluded.indexOf(n) === -1; | ||
}); | ||
var all = [a]; | ||
@@ -41,0 +54,0 @@ |
{ | ||
"name": "raven-js", | ||
"version": "1.1.22", | ||
"version": "1.2.0", | ||
"license": "BSD-2-Clause", | ||
@@ -5,0 +5,0 @@ "homepage": "https://getsentry.com", |
@@ -6,10 +6,14 @@ /** | ||
*/ | ||
;(function(Raven, angular) { | ||
;(function(window) { | ||
'use strict'; | ||
var angular = window.angular, | ||
Raven = window.Raven; | ||
// quit if angular isn't on the page | ||
if (!angular) { | ||
return; | ||
} | ||
if (!(angular && Raven)) return; | ||
// Angular plugin doesn't go through the normal `Raven.addPlugin` | ||
// since this bootstraps the `install()` automatically. | ||
function ngRavenProvider($provide) { | ||
@@ -26,2 +30,6 @@ $provide.decorator('$exceptionHandler', [ | ||
if (RavenConfig.debug !== void 0) { | ||
Raven.debug = RavenConfig.debug; | ||
} | ||
Raven.config(RavenConfig.dsn, RavenConfig.config).install(); | ||
@@ -38,2 +46,2 @@ return function angularExceptionHandler(ex, cause) { | ||
})(window.Raven, window.angular); | ||
}(typeof window !== 'undefined' ? window : this)); |
@@ -6,9 +6,11 @@ /** | ||
*/ | ||
;(function(window, Raven, Backbone) { | ||
;(function(window) { | ||
'use strict'; | ||
if (window.Raven) Raven.addPlugin(function backbonePlugin() { | ||
var Backbone = window.Backbone; | ||
// quit if Backbone isn't on the page | ||
if (!Backbone) { | ||
return; | ||
} | ||
if (!Backbone) return; | ||
@@ -56,2 +58,4 @@ function makeBackboneEventsOn(oldOn) { | ||
}(window, window.Raven, window.Backbone)); | ||
}); | ||
}(typeof window !== 'undefined' ? window : this)); |
@@ -7,5 +7,9 @@ /** | ||
*/ | ||
;(function(window, Raven, console) { | ||
;(function(window) { | ||
'use strict'; | ||
if (window.Raven) Raven.addPlugin(function ConsolePlugin() { | ||
var console = window.console || {}; | ||
var originalConsole = console, | ||
@@ -41,5 +45,10 @@ logLevels = ['debug', 'info', 'warn', 'error'], | ||
} | ||
// export | ||
window.console = console; | ||
}(window, window.Raven, window.console || {})); | ||
// End of plugin factory | ||
}); | ||
// console would require `window`, so we don't allow it to be optional | ||
}(window)); |
@@ -6,9 +6,11 @@ /** | ||
*/ | ||
;(function(window, Raven, Ember) { | ||
;(function(window) { | ||
'use strict'; | ||
if (window.Raven) Raven.addPlugin(function EmberPlugin() { | ||
var Ember = window.Ember; | ||
// quit if Ember isn't on the page | ||
if (!Ember) { | ||
return; | ||
} | ||
if (!Ember) return; | ||
@@ -30,2 +32,5 @@ var _oldOnError = Ember.onerror; | ||
}(window, window.Raven, window.Ember)); | ||
// End of plugin factory | ||
}); | ||
}(typeof window !== 'undefined' ? window : this)); |
@@ -6,9 +6,11 @@ /** | ||
*/ | ||
;(function(window, Raven, $) { | ||
;(function(window) { | ||
'use strict'; | ||
if (window.Raven) Raven.addPlugin(function jQueryPlugin() { | ||
var $ = window.jQuery; | ||
// quit if jQuery isn't on the page | ||
if (!$) { | ||
return; | ||
} | ||
if (!$) return; | ||
@@ -104,2 +106,5 @@ var _oldEventAdd = $.event.add; | ||
}(window, window.Raven, window.jQuery)); | ||
// End of plugin factory | ||
}); | ||
}(typeof window !== 'undefined' ? window : this)); |
@@ -7,5 +7,7 @@ /** | ||
*/ | ||
;(function extendToAsynchronousCallbacks(window, Raven) { | ||
"use strict"; | ||
;(function(window) { | ||
'use strict'; | ||
if (window.Raven) Raven.addPlugin(function nativePlugin() { | ||
var _helper = function _helper(fnName) { | ||
@@ -34,2 +36,5 @@ var originalFn = window[fnName]; | ||
}(window, window.Raven)); | ||
// End of plugin factory | ||
}); | ||
}(typeof window !== 'undefined' ? window : this)); |
@@ -6,5 +6,7 @@ /** | ||
*/ | ||
;(function(window, Raven) { | ||
;(function(window) { | ||
'use strict'; | ||
if (window.Raven) Raven.addPlugin(function RequirePlugin() { | ||
if (typeof define === 'function' && define.amd) { | ||
@@ -15,2 +17,5 @@ window.define = Raven.wrap({deep: false}, define); | ||
}(window, window.Raven)); | ||
// End of plugin factory | ||
}); | ||
}(window)); |
119
src/raven.js
@@ -8,8 +8,10 @@ 'use strict'; | ||
hasJSON = !!(typeof JSON === 'object' && JSON.stringify), | ||
// Raven can run in contexts where there's no document (react-native) | ||
hasDocument = typeof document !== 'undefined', | ||
lastCapturedException, | ||
lastEventId, | ||
globalServer, | ||
globalUser, | ||
globalKey, | ||
globalProject, | ||
globalContext = {}, | ||
globalOptions = { | ||
@@ -23,5 +25,3 @@ logger: 'javascript', | ||
collectWindowErrors: true, | ||
tags: {}, | ||
maxMessageLength: 100, | ||
extra: {} | ||
maxMessageLength: 100 | ||
}, | ||
@@ -34,2 +34,3 @@ isRavenInstalled = false, | ||
originalConsoleMethods = {}, | ||
plugins = [], | ||
startTime = now(); | ||
@@ -82,3 +83,8 @@ | ||
each(options, function(key, value){ | ||
globalOptions[key] = value; | ||
// tags and extra are special and need to be put into context | ||
if (key == 'tags' || key == 'extra') { | ||
globalContext[key] = value; | ||
} else { | ||
globalOptions[key] = value; | ||
} | ||
}); | ||
@@ -135,2 +141,8 @@ } | ||
TraceKit.report.subscribe(handleStackInfo); | ||
// Install all of the plugins | ||
each(plugins, function(_, plugin) { | ||
plugin(); | ||
}); | ||
isRavenInstalled = true; | ||
@@ -291,2 +303,8 @@ } | ||
addPlugin: function(plugin) { | ||
plugins.push(plugin); | ||
if (isRavenInstalled) plugin(); | ||
return Raven; | ||
}, | ||
/* | ||
@@ -299,3 +317,4 @@ * Set/clear a user to be sent along with the payload. | ||
setUserContext: function(user) { | ||
globalUser = user; | ||
// Intentionally do not merge here since that's an unexpected behavior. | ||
globalContext.user = user; | ||
@@ -306,3 +325,3 @@ return Raven; | ||
/* | ||
* Set extra attributes to be sent along with the payload. | ||
* Merge extra attributes to be sent along with the payload. | ||
* | ||
@@ -313,3 +332,3 @@ * @param {object} extra An object representing extra data [optional] | ||
setExtraContext: function(extra) { | ||
globalOptions.extra = extra || {}; | ||
mergeContext('extra', extra); | ||
@@ -320,3 +339,3 @@ return Raven; | ||
/* | ||
* Set tags to be sent along with the payload. | ||
* Merge tags to be sent along with the payload. | ||
* | ||
@@ -327,3 +346,3 @@ * @param {object} tags An object representing tags [optional] | ||
setTagsContext: function(tags) { | ||
globalOptions.tags = tags || {}; | ||
mergeContext('tags', tags); | ||
@@ -334,2 +353,23 @@ return Raven; | ||
/* | ||
* Clear all of the context. | ||
* | ||
* @return {Raven} | ||
*/ | ||
clearContext: function() { | ||
globalContext = {}; | ||
return Raven; | ||
}, | ||
/* | ||
* Get a copy of the current context. This cannot be mutated. | ||
* | ||
* @return {object} copy of context | ||
*/ | ||
getContext: function() { | ||
// lol javascript | ||
return JSON.parse(JSON.stringify(globalContext)); | ||
}, | ||
/* | ||
* Set release version of application | ||
@@ -340,3 +380,3 @@ * | ||
*/ | ||
setReleaseContext: function(release) { | ||
setRelease: function(release) { | ||
globalOptions.release = release; | ||
@@ -373,2 +413,17 @@ | ||
/** | ||
* Override the default HTTP transport mechanism that transmits data | ||
* to the Sentry server. | ||
* | ||
* @param {function} transport Function invoked instead of the default | ||
* `makeRequest` handler. | ||
* | ||
* @return {Raven} | ||
*/ | ||
setTransport: function(transport) { | ||
globalOptions.transport = transport; | ||
return Raven; | ||
}, | ||
/* | ||
@@ -402,7 +457,13 @@ * Get the latest raw exception that was captured by Raven. | ||
Raven.setUser = Raven.setUserContext; // To be deprecated | ||
// Deprecations | ||
Raven.setUser = Raven.setUserContext; | ||
Raven.setReleaseContext = Raven.setRelease; | ||
function triggerEvent(eventType, options) { | ||
var event, key; | ||
// NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it | ||
var evt, key; | ||
if (!hasDocument) | ||
return; | ||
options = options || {}; | ||
@@ -413,11 +474,11 @@ | ||
if (document.createEvent) { | ||
event = document.createEvent('HTMLEvents'); | ||
event.initEvent(eventType, true, true); | ||
evt = document.createEvent('HTMLEvents'); | ||
evt.initEvent(eventType, true, true); | ||
} else { | ||
event = document.createEventObject(); | ||
event.eventType = eventType; | ||
evt = document.createEventObject(); | ||
evt.eventType = eventType; | ||
} | ||
for (key in options) if (hasKey(options, key)) { | ||
event[key] = options[key]; | ||
evt[key] = options[key]; | ||
} | ||
@@ -427,3 +488,3 @@ | ||
// IE9 if standards | ||
document.dispatchEvent(event); | ||
document.dispatchEvent(evt); | ||
} else { | ||
@@ -433,3 +494,3 @@ // IE8 regardless of Quirks or Standards | ||
try { | ||
document.fireEvent('on' + event.eventType.toLowerCase(), event); | ||
document.fireEvent('on' + evt.eventType.toLowerCase(), evt); | ||
} catch(e) {} | ||
@@ -686,3 +747,3 @@ } | ||
function getHttpData() { | ||
if (!document.location || !document.location.href) { | ||
if (!hasDocument || !document.location || !document.location.href) { | ||
return; | ||
@@ -720,4 +781,4 @@ } | ||
// Merge in the tags and extra separately since objectMerge doesn't handle a deep merge | ||
data.tags = objectMerge(objectMerge({}, globalOptions.tags), data.tags); | ||
data.extra = objectMerge(objectMerge({}, globalOptions.extra), data.extra); | ||
data.tags = objectMerge(objectMerge({}, globalContext.tags), data.tags); | ||
data.extra = objectMerge(objectMerge({}, globalContext.extra), data.extra); | ||
@@ -732,5 +793,5 @@ // Send along our own collected metadata with extra | ||
if (globalUser) { | ||
if (globalContext.user) { | ||
// sentry.interfaces.User | ||
data.user = globalUser; | ||
data.user = globalContext.user; | ||
} | ||
@@ -902,2 +963,10 @@ | ||
function mergeContext(key, context) { | ||
if (isUndefined(context)) { | ||
delete globalContext[key]; | ||
} else { | ||
globalContext[key] = objectMerge(globalContext[key] || {}, context); | ||
} | ||
} | ||
afterLoad(); |
@@ -0,5 +1,8 @@ | ||
// This is being exposed no matter what because there are too many weird | ||
// usecases for how people use Raven. If this is really a problem, I'm sorry. | ||
window.Raven = Raven; | ||
// Expose Raven to the world | ||
if (typeof define === 'function' && define.amd) { | ||
// AMD | ||
window.Raven = Raven; | ||
define('raven', [], function() { | ||
@@ -14,7 +17,4 @@ return Raven; | ||
exports = Raven; | ||
} else { | ||
// Everything else | ||
window.Raven = Raven; | ||
} | ||
})(typeof window !== 'undefined' ? window : this); |
@@ -18,3 +18,2 @@ /* | ||
/** | ||
@@ -39,2 +38,9 @@ * TraceKit.wrap: Wrap any function in a TraceKit reporter | ||
function getLocationHref() { | ||
if (typeof document === 'undefined') | ||
return ''; | ||
return document.location.href; | ||
}; | ||
/** | ||
@@ -173,3 +179,3 @@ * TraceKit.report: cross-browser processing of unhandled exceptions | ||
'message': message, | ||
'url': document.location.href, | ||
'url': getLocationHref(), | ||
'stack': [location] | ||
@@ -518,2 +524,5 @@ }; | ||
function findSourceByFunctionBody(func) { | ||
if (typeof document === 'undefined') | ||
return; | ||
var urls = [window.location.href], | ||
@@ -687,3 +696,3 @@ scripts = document.getElementsByTagName('script'), | ||
'message': ex.message, | ||
'url': document.location.href, | ||
'url': getLocationHref(), | ||
'stack': stack | ||
@@ -745,3 +754,3 @@ }; | ||
'message': ex.message, | ||
'url': document.location.href, | ||
'url': getLocationHref(), | ||
'stack': stack | ||
@@ -856,3 +865,3 @@ }; | ||
'message': lines[0], | ||
'url': document.location.href, | ||
'url': getLocationHref(), | ||
'stack': stack | ||
@@ -994,3 +1003,3 @@ }; | ||
'message': ex.message, | ||
'url': document.location.href, | ||
'url': getLocationHref(), | ||
'stack': stack | ||
@@ -1061,3 +1070,3 @@ }; | ||
'message': ex.message, | ||
'url': document.location.href, | ||
'url': getLocationHref() | ||
}; | ||
@@ -1064,0 +1073,0 @@ } |
Sorry, the diff of this file is not supported yet
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 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
372971
66
6330