aboutsummaryrefslogtreecommitdiffstats
path: root/demo/dist/demo.js
diff options
context:
space:
mode:
Diffstat (limited to 'demo/dist/demo.js')
-rw-r--r--demo/dist/demo.js128
1 files changed, 115 insertions, 13 deletions
diff --git a/demo/dist/demo.js b/demo/dist/demo.js
index aebe368c..3f6273ec 100644
--- a/demo/dist/demo.js
+++ b/demo/dist/demo.js
@@ -1,4 +1,4 @@
-(function () {
+typeof navigator === "object" && (function () {
'use strict';
var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
@@ -97,7 +97,7 @@ function isObject(what) {
// Yanked from https://git.io/vS8DV re-used under CC0
// with some tiny modifications
function isError(value) {
- switch ({}.toString.call(value)) {
+ switch (Object.prototype.toString.call(value)) {
case '[object Error]':
return true;
case '[object Exception]':
@@ -110,7 +110,15 @@ function isError(value) {
}
function isErrorEvent(value) {
- return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]';
+ return Object.prototype.toString.call(value) === '[object ErrorEvent]';
+}
+
+function isDOMError(value) {
+ return Object.prototype.toString.call(value) === '[object DOMError]';
+}
+
+function isDOMException(value) {
+ return Object.prototype.toString.call(value) === '[object DOMException]';
}
function isUndefined(what) {
@@ -153,6 +161,24 @@ function supportsErrorEvent() {
}
}
+function supportsDOMError() {
+ try {
+ new DOMError(''); // eslint-disable-line no-new
+ return true;
+ } catch (e) {
+ return false;
+ }
+}
+
+function supportsDOMException() {
+ try {
+ new DOMException(''); // eslint-disable-line no-new
+ return true;
+ } catch (e) {
+ return false;
+ }
+}
+
function supportsFetch() {
if (!('fetch' in _window)) return false;
@@ -668,6 +694,8 @@ var utils = {
isObject: isObject,
isError: isError,
isErrorEvent: isErrorEvent,
+ isDOMError: isDOMError,
+ isDOMException: isDOMException,
isUndefined: isUndefined,
isFunction: isFunction,
isPlainObject: isPlainObject,
@@ -675,6 +703,8 @@ var utils = {
isArray: isArray,
isEmptyObject: isEmptyObject,
supportsErrorEvent: supportsErrorEvent,
+ supportsDOMError: supportsDOMError,
+ supportsDOMException: supportsDOMException,
supportsFetch: supportsFetch,
supportsReferrerPolicy: supportsReferrerPolicy,
supportsPromiseRejectionEvent: supportsPromiseRejectionEvent,
@@ -729,10 +759,24 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran
function getLocationHref() {
if (typeof document === 'undefined' || document.location == null) return '';
-
return document.location.href;
}
+function getLocationOrigin() {
+ if (typeof document === 'undefined' || document.location == null) return '';
+
+ // Oh dear IE10...
+ if (!document.location.origin) {
+ document.location.origin =
+ document.location.protocol +
+ '//' +
+ document.location.hostname +
+ (document.location.port ? ':' + document.location.port : '');
+ }
+
+ return document.location.origin;
+}
+
/**
* TraceKit.report: cross-browser processing of unhandled exceptions
*
@@ -1140,6 +1184,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() {
element.func = UNKNOWN_FUNCTION;
}
+ if (element.url && element.url.substr(0, 5) === 'blob:') {
+ // Special case for handling JavaScript loaded into a blob.
+ // We use a synchronous AJAX request here as a blob is already in
+ // memory - it's not making a network request. This will generate a warning
+ // in the browser console, but there has already been an error so that's not
+ // that much of an issue.
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', element.url, false);
+ xhr.send(null);
+
+ // If we failed to download the source, skip this patch
+ if (xhr.status === 200) {
+ var source = xhr.responseText || '';
+
+ // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file.
+ // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175
+ source = source.slice(-300);
+
+ // Now we dig out the source map URL
+ var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/);
+
+ // If we don't find a source map comment or we find more than one, continue on to the next element.
+ if (sourceMaps) {
+ var sourceMapAddress = sourceMaps[1];
+
+ // Now we check to see if it's a relative URL.
+ // If it is, convert it to an absolute one.
+ if (sourceMapAddress.charAt(0) === '~') {
+ sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1);
+ }
+
+ // Now we strip the '.map' off of the end of the URL and update the
+ // element so that Sentry can match the map to the blob.
+ element.url = sourceMapAddress.slice(0, -4);
+ }
+ }
+ }
+
stack.push(element);
}
@@ -1651,10 +1733,12 @@ var console$1 = {
+var isErrorEvent$1 = utils.isErrorEvent;
+var isDOMError$1 = utils.isDOMError;
+var isDOMException$1 = utils.isDOMException;
var isError$1 = utils.isError;
var isObject$1 = utils.isObject;
var isPlainObject$1 = utils.isPlainObject;
-var isErrorEvent$1 = utils.isErrorEvent;
var isUndefined$1 = utils.isUndefined;
var isFunction$1 = utils.isFunction;
var isString$1 = utils.isString;
@@ -1782,7 +1866,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.24.2',
+ VERSION: '3.25.2',
debug: false,
@@ -2114,6 +2198,23 @@ Raven.prototype = {
if (isErrorEvent$1(ex) && ex.error) {
// If it is an ErrorEvent with `error` property, extract it to get actual Error
ex = ex.error;
+ } else if (isDOMError$1(ex) || isDOMException$1(ex)) {
+ // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)
+ // then we just extract the name and message, as they don't provide anything else
+ // https://developer.mozilla.org/en-US/docs/Web/API/DOMError
+ // https://developer.mozilla.org/en-US/docs/Web/API/DOMException
+ var name = ex.name || (isDOMError$1(ex) ? 'DOMError' : 'DOMException');
+ var message = ex.message ? name + ': ' + ex.message : name;
+
+ return this.captureMessage(
+ message,
+ objectMerge$1(options, {
+ // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well
+ // but it's barely any overhead so we may at least try
+ stacktrace: true,
+ trimHeadFrames: options.trimHeadFrames + 1
+ })
+ );
} else if (isError$1(ex)) {
// we have a real Error object
ex = ex;
@@ -2125,6 +2226,7 @@ Raven.prototype = {
ex = new Error(options.message);
} else {
// If none of previous checks were valid, then it means that
+ // it's not a DOMError/DOMException
// it's not a plain Object
// it's not a valid ErrorEvent (one with an error property)
// it's not an Error
@@ -3073,8 +3175,8 @@ Raven.prototype = {
var hasPushAndReplaceState =
!isChromePackagedApp &&
_window$2.history &&
- history.pushState &&
- history.replaceState;
+ _window$2.history.pushState &&
+ _window$2.history.replaceState;
if (autoBreadcrumbs.location && hasPushAndReplaceState) {
// TODO: remove onpopstate handler on uninstall()
var oldOnPopState = _window$2.onpopstate;
@@ -3103,8 +3205,8 @@ Raven.prototype = {
};
};
- fill$1(history, 'pushState', historyReplacementFunction, wrappedBuiltIns);
- fill$1(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns);
+ fill$1(_window$2.history, 'pushState', historyReplacementFunction, wrappedBuiltIns);
+ fill$1(_window$2.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns);
}
if (autoBreadcrumbs.console && 'console' in _window$2 && console.log) {
@@ -3320,7 +3422,7 @@ Raven.prototype = {
}
]
},
- culprit: fileurl
+ transaction: fileurl
},
options
);
@@ -3394,7 +3496,7 @@ Raven.prototype = {
if (this._hasNavigator && _navigator.userAgent) {
httpData.headers = {
- 'User-Agent': navigator.userAgent
+ 'User-Agent': _navigator.userAgent
};
}
@@ -3435,7 +3537,7 @@ Raven.prototype = {
if (
!last ||
current.message !== last.message || // defined for captureMessage
- current.culprit !== last.culprit // defined for captureException/onerror
+ current.transaction !== last.transaction // defined for captureException/onerror
)
return false;