|
|
|
@ -1,4 +1,4 @@
|
|
|
|
|
/*! Raven.js 3.11.0 (cb87941) | github.com/getsentry/raven-js */
|
|
|
|
|
/*! Raven.js 3.13.1 (f55d281) | github.com/getsentry/raven-js */
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Includes TraceKit
|
|
|
|
@ -11,35 +11,6 @@
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
|
|
|
|
|
exports = module.exports = stringify
|
|
|
|
|
exports.getSerialize = serializer
|
|
|
|
|
|
|
|
|
|
function stringify(obj, replacer, spaces, cycleReplacer) {
|
|
|
|
|
return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function serializer(replacer, cycleReplacer) {
|
|
|
|
|
var stack = [], keys = []
|
|
|
|
|
|
|
|
|
|
if (cycleReplacer == null) cycleReplacer = function(key, value) {
|
|
|
|
|
if (stack[0] === value) return "[Circular ~]"
|
|
|
|
|
return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return function(key, value) {
|
|
|
|
|
if (stack.length > 0) {
|
|
|
|
|
var thisPos = stack.indexOf(this)
|
|
|
|
|
~thisPos ? stack.splice(thisPos + 1) : stack.push(this)
|
|
|
|
|
~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)
|
|
|
|
|
if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)
|
|
|
|
|
}
|
|
|
|
|
else stack.push(value)
|
|
|
|
|
|
|
|
|
|
return replacer == null ? value : replacer.call(this, key, value)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
},{}],2:[function(_dereq_,module,exports){
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
function RavenConfigError(message) {
|
|
|
|
@ -51,7 +22,7 @@ RavenConfigError.prototype.constructor = RavenConfigError;
|
|
|
|
|
|
|
|
|
|
module.exports = RavenConfigError;
|
|
|
|
|
|
|
|
|
|
},{}],3:[function(_dereq_,module,exports){
|
|
|
|
|
},{}],2:[function(_dereq_,module,exports){
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
var wrapMethod = function(console, level, callback) {
|
|
|
|
@ -90,16 +61,20 @@ module.exports = {
|
|
|
|
|
wrapMethod: wrapMethod
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
},{}],4:[function(_dereq_,module,exports){
|
|
|
|
|
},{}],3:[function(_dereq_,module,exports){
|
|
|
|
|
(function (global){
|
|
|
|
|
/*global XDomainRequest:false, __DEV__:false*/
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
var TraceKit = _dereq_(6);
|
|
|
|
|
var RavenConfigError = _dereq_(2);
|
|
|
|
|
var stringify = _dereq_(1);
|
|
|
|
|
var stringify = _dereq_(7);
|
|
|
|
|
var RavenConfigError = _dereq_(1);
|
|
|
|
|
var utils = _dereq_(5);
|
|
|
|
|
|
|
|
|
|
var isError = utils.isError,
|
|
|
|
|
isObject = utils.isObject;
|
|
|
|
|
|
|
|
|
|
var wrapConsoleMethod = _dereq_(3).wrapMethod;
|
|
|
|
|
var wrapConsoleMethod = _dereq_(2).wrapMethod;
|
|
|
|
|
|
|
|
|
|
var dsnKeys = 'source protocol user pass host port path'.split(' '),
|
|
|
|
|
dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;
|
|
|
|
@ -141,7 +116,8 @@ function Raven() {
|
|
|
|
|
collectWindowErrors: true,
|
|
|
|
|
maxMessageLength: 0,
|
|
|
|
|
stackTraceLimit: 50,
|
|
|
|
|
autoBreadcrumbs: true
|
|
|
|
|
autoBreadcrumbs: true,
|
|
|
|
|
sampleRate: 1
|
|
|
|
|
};
|
|
|
|
|
this._ignoreOnError = 0;
|
|
|
|
|
this._isRavenInstalled = false;
|
|
|
|
@ -176,7 +152,7 @@ Raven.prototype = {
|
|
|
|
|
// webpack (using a build step causes webpack #1617). Grunt verifies that
|
|
|
|
|
// this value matches package.json during build.
|
|
|
|
|
// See: https://github.com/getsentry/raven-js/issues/465
|
|
|
|
|
VERSION: '3.11.0',
|
|
|
|
|
VERSION: '3.13.1',
|
|
|
|
|
|
|
|
|
|
debug: false,
|
|
|
|
|
|
|
|
|
@ -1578,7 +1554,13 @@ Raven.prototype = {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this._sendProcessedPayload(data);
|
|
|
|
|
if (typeof globalOptions.sampleRate === 'number') {
|
|
|
|
|
if (Math.random() < globalOptions.sampleRate) {
|
|
|
|
|
this._sendProcessedPayload(data);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
this._sendProcessedPayload(data);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
_getUuid: function () {
|
|
|
|
@ -1674,24 +1656,18 @@ Raven.prototype = {
|
|
|
|
|
if (!hasCORS) return;
|
|
|
|
|
|
|
|
|
|
var url = opts.url;
|
|
|
|
|
function handler() {
|
|
|
|
|
if (request.status === 200) {
|
|
|
|
|
if (opts.onSuccess) {
|
|
|
|
|
opts.onSuccess();
|
|
|
|
|
}
|
|
|
|
|
} else if (opts.onError) {
|
|
|
|
|
var err = new Error('Sentry error code: ' + request.status);
|
|
|
|
|
err.request = request;
|
|
|
|
|
opts.onError(err);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ('withCredentials' in request) {
|
|
|
|
|
request.onreadystatechange = function () {
|
|
|
|
|
if (request.readyState !== 4) {
|
|
|
|
|
return;
|
|
|
|
|
} else if (request.status === 200) {
|
|
|
|
|
opts.onSuccess && opts.onSuccess();
|
|
|
|
|
} else if (opts.onError) {
|
|
|
|
|
var err = new Error('Sentry error code: ' + request.status);
|
|
|
|
|
err.request = request;
|
|
|
|
|
opts.onError(err);
|
|
|
|
|
}
|
|
|
|
|
handler();
|
|
|
|
|
};
|
|
|
|
|
} else {
|
|
|
|
|
request = new XDomainRequest();
|
|
|
|
@ -1700,7 +1676,16 @@ Raven.prototype = {
|
|
|
|
|
url = url.replace(/^https?:/, '');
|
|
|
|
|
|
|
|
|
|
// onreadystatechange not supported by XDomainRequest
|
|
|
|
|
request.onload = handler;
|
|
|
|
|
if (opts.onSuccess) {
|
|
|
|
|
request.onload = opts.onSuccess;
|
|
|
|
|
}
|
|
|
|
|
if (opts.onError) {
|
|
|
|
|
request.onerror = function () {
|
|
|
|
|
var err = new Error('Sentry error code: XDomainRequest');
|
|
|
|
|
err.request = request;
|
|
|
|
|
opts.onError(err);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// NOTE: auth is intentionally sent as part of query string (NOT as custom
|
|
|
|
@ -1749,25 +1734,12 @@ function isString(what) {
|
|
|
|
|
return objectPrototype.toString.call(what) === '[object String]';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isObject(what) {
|
|
|
|
|
return typeof what === 'object' && what !== null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isEmptyObject(what) {
|
|
|
|
|
for (var _ in what) return false; // eslint-disable-line guard-for-in, no-unused-vars
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Sorta yanked from https://github.com/joyent/node/blob/aa3b4b4/lib/util.js#L560
|
|
|
|
|
// with some tiny modifications
|
|
|
|
|
function isError(what) {
|
|
|
|
|
var toString = objectPrototype.toString.call(what);
|
|
|
|
|
return isObject(what) &&
|
|
|
|
|
toString === '[object Error]' ||
|
|
|
|
|
toString === '[object Exception]' || // Firefox NS_ERROR_FAILURE Exceptions
|
|
|
|
|
what instanceof Error;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function each(obj, callback) {
|
|
|
|
|
var i, j;
|
|
|
|
|
|
|
|
|
@ -2067,7 +2039,7 @@ Raven.prototype.setReleaseContext = Raven.prototype.setRelease;
|
|
|
|
|
module.exports = Raven;
|
|
|
|
|
|
|
|
|
|
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
|
|
|
|
},{"1":1,"2":2,"3":3,"6":6}],5:[function(_dereq_,module,exports){
|
|
|
|
|
},{"1":1,"2":2,"5":5,"6":6,"7":7}],4:[function(_dereq_,module,exports){
|
|
|
|
|
(function (global){
|
|
|
|
|
/**
|
|
|
|
|
* Enforces a single instance of the Raven client, and the
|
|
|
|
@ -2077,7 +2049,7 @@ module.exports = Raven;
|
|
|
|
|
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
var RavenConstructor = _dereq_(4);
|
|
|
|
|
var RavenConstructor = _dereq_(3);
|
|
|
|
|
|
|
|
|
|
// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)
|
|
|
|
|
var _window = typeof window !== 'undefined' ? window
|
|
|
|
@ -2104,10 +2076,33 @@ Raven.afterLoad();
|
|
|
|
|
module.exports = Raven;
|
|
|
|
|
|
|
|
|
|
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
|
|
|
|
},{"4":4}],6:[function(_dereq_,module,exports){
|
|
|
|
|
},{"3":3}],5:[function(_dereq_,module,exports){
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
function isObject(what) {
|
|
|
|
|
return typeof what === 'object' && what !== null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Sorta yanked from https://github.com/joyent/node/blob/aa3b4b4/lib/util.js#L560
|
|
|
|
|
// with some tiny modifications
|
|
|
|
|
function isError(what) {
|
|
|
|
|
var toString = {}.toString.call(what);
|
|
|
|
|
return isObject(what) &&
|
|
|
|
|
toString === '[object Error]' ||
|
|
|
|
|
toString === '[object Exception]' || // Firefox NS_ERROR_FAILURE Exceptions
|
|
|
|
|
what instanceof Error;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
isObject: isObject,
|
|
|
|
|
isError: isError
|
|
|
|
|
};
|
|
|
|
|
},{}],6:[function(_dereq_,module,exports){
|
|
|
|
|
(function (global){
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
var utils = _dereq_(5);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
TraceKit - Cross brower stack traces
|
|
|
|
|
|
|
|
|
@ -2134,7 +2129,7 @@ var _slice = [].slice;
|
|
|
|
|
var UNKNOWN_FUNCTION = '?';
|
|
|
|
|
|
|
|
|
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types
|
|
|
|
|
var ERROR_TYPES_RE = /^(?:Uncaught (?:exception: )?)?((?:Eval|Internal|Range|Reference|Syntax|Type|URI)Error): ?(.*)$/;
|
|
|
|
|
var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;
|
|
|
|
|
|
|
|
|
|
function getLocationHref() {
|
|
|
|
|
if (typeof document === 'undefined' || typeof document.location === 'undefined')
|
|
|
|
@ -2143,6 +2138,7 @@ function getLocationHref() {
|
|
|
|
|
return document.location.href;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* TraceKit.report: cross-browser processing of unhandled exceptions
|
|
|
|
|
*
|
|
|
|
@ -2260,7 +2256,9 @@ TraceKit.report = (function reportModuleWrapper() {
|
|
|
|
|
if (lastExceptionStack) {
|
|
|
|
|
TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message);
|
|
|
|
|
processLastException();
|
|
|
|
|
} else if (ex) {
|
|
|
|
|
} else if (ex && utils.isError(ex)) {
|
|
|
|
|
// non-string `ex` arg; attempt to extract stack trace
|
|
|
|
|
|
|
|
|
|
// New chrome and blink send along a real error object
|
|
|
|
|
// Let's just report that like a normal error.
|
|
|
|
|
// See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror
|
|
|
|
@ -2703,7 +2701,6 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() {
|
|
|
|
|
throw e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
'name': ex.name,
|
|
|
|
|
'message': ex.message,
|
|
|
|
@ -2720,5 +2717,54 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() {
|
|
|
|
|
module.exports = TraceKit;
|
|
|
|
|
|
|
|
|
|
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
|
|
|
|
},{}]},{},[5])(5)
|
|
|
|
|
},{"5":5}],7:[function(_dereq_,module,exports){
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
json-stringify-safe
|
|
|
|
|
Like JSON.stringify, but doesn't throw on circular references.
|
|
|
|
|
|
|
|
|
|
Originally forked from https://github.com/isaacs/json-stringify-safe
|
|
|
|
|
version 5.0.1 on 3/8/2017 and modified for IE8 compatibility.
|
|
|
|
|
Tests for this are in test/vendor.
|
|
|
|
|
|
|
|
|
|
ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
exports = module.exports = stringify
|
|
|
|
|
exports.getSerialize = serializer
|
|
|
|
|
|
|
|
|
|
function indexOf(haystack, needle) {
|
|
|
|
|
for (var i = 0; i < haystack.length; ++i) {
|
|
|
|
|
if (haystack[i] === needle) return i;
|
|
|
|
|
}
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function stringify(obj, replacer, spaces, cycleReplacer) {
|
|
|
|
|
return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function serializer(replacer, cycleReplacer) {
|
|
|
|
|
var stack = [], keys = []
|
|
|
|
|
|
|
|
|
|
if (cycleReplacer == null) cycleReplacer = function(key, value) {
|
|
|
|
|
if (stack[0] === value) return '[Circular ~]'
|
|
|
|
|
return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return function(key, value) {
|
|
|
|
|
if (stack.length > 0) {
|
|
|
|
|
var thisPos = indexOf(stack, this);
|
|
|
|
|
~thisPos ? stack.splice(thisPos + 1) : stack.push(this)
|
|
|
|
|
~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)
|
|
|
|
|
if (~indexOf(stack, value)) value = cycleReplacer.call(this, key, value)
|
|
|
|
|
}
|
|
|
|
|
else stack.push(value)
|
|
|
|
|
|
|
|
|
|
return replacer == null ? value : replacer.call(this, key, value)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
},{}]},{},[4])(4)
|
|
|
|
|
});
|
|
|
|
|