rollbar 2.26.2 → 2.26.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci.yml +32 -10
- package/.lgtm.yml +7 -7
- package/.prettierignore +18 -0
- package/.vscode/settings.json +39 -0
- package/CHANGELOG.md +121 -35
- package/Gruntfile.js +51 -71
- package/README.md +2 -4
- package/bower.json +1 -3
- package/defaults.js +17 -5
- package/dist/plugins/jquery.min.js +1 -1
- package/dist/rollbar.js +5699 -5052
- package/dist/rollbar.js.map +1 -1
- package/dist/rollbar.min.js +1 -1
- package/dist/rollbar.min.js.map +1 -1
- package/dist/rollbar.named-amd.js +5704 -5062
- package/dist/rollbar.named-amd.js.map +1 -1
- package/dist/rollbar.named-amd.min.js +1 -1
- package/dist/rollbar.named-amd.min.js.map +1 -1
- package/dist/rollbar.noconflict.umd.js +5693 -5052
- package/dist/rollbar.noconflict.umd.js.map +1 -1
- package/dist/rollbar.noconflict.umd.min.js +1 -1
- package/dist/rollbar.noconflict.umd.min.js.map +1 -1
- package/dist/rollbar.snippet.js +1 -1
- package/dist/rollbar.umd.js +5704 -5063
- package/dist/rollbar.umd.js.map +1 -1
- package/dist/rollbar.umd.min.js +1 -1
- package/dist/rollbar.umd.min.js.map +1 -1
- package/docs/extension-exceptions.md +35 -30
- package/docs/migration_v0_to_v1.md +41 -38
- package/index.d.ts +270 -231
- package/karma.conf.js +16 -34
- package/package.json +21 -17
- package/prettier.config.js +7 -0
- package/src/api.js +21 -10
- package/src/apiUtility.js +12 -8
- package/src/browser/core.js +103 -65
- package/src/browser/defaults/scrubFields.js +3 -3
- package/src/browser/detection.js +7 -8
- package/src/browser/domUtility.js +18 -8
- package/src/browser/globalSetup.js +12 -6
- package/src/browser/logger.js +1 -1
- package/src/browser/plugins/jquery.js +35 -35
- package/src/browser/predicates.js +1 -1
- package/src/browser/rollbar.js +1 -1
- package/src/browser/rollbarWrapper.js +8 -5
- package/src/browser/shim.js +43 -19
- package/src/browser/snippet_callback.js +6 -4
- package/src/browser/telemetry.js +573 -354
- package/src/browser/transforms.js +46 -27
- package/src/browser/transport/fetch.js +16 -14
- package/src/browser/transport/xhr.js +29 -13
- package/src/browser/transport.js +82 -25
- package/src/browser/url.js +16 -8
- package/src/browser/wrapGlobals.js +27 -8
- package/src/defaults.js +3 -3
- package/src/errorParser.js +14 -11
- package/src/merge.js +32 -23
- package/src/notifier.js +16 -13
- package/src/predicates.js +43 -23
- package/src/queue.js +71 -39
- package/src/rateLimiter.js +59 -18
- package/src/react-native/logger.js +1 -1
- package/src/react-native/rollbar.js +59 -55
- package/src/react-native/transforms.js +13 -9
- package/src/react-native/transport.js +44 -34
- package/src/rollbar.js +22 -13
- package/src/scrub.js +0 -1
- package/src/server/locals.js +69 -39
- package/src/server/logger.js +4 -4
- package/src/server/parser.js +72 -47
- package/src/server/rollbar.js +133 -55
- package/src/server/sourceMap/stackTrace.js +33 -18
- package/src/server/telemetry/urlHelpers.js +9 -11
- package/src/server/telemetry.js +68 -45
- package/src/server/transforms.js +37 -21
- package/src/server/transport.js +62 -32
- package/src/telemetry.js +92 -28
- package/src/transforms.js +33 -21
- package/src/truncation.js +8 -5
- package/src/utility/headers.js +43 -43
- package/src/utility/replace.js +9 -0
- package/src/utility/traverse.js +1 -1
- package/src/utility.js +89 -52
- package/test/api.test.js +31 -29
- package/test/apiUtility.test.js +43 -44
- package/test/browser.core.test.js +141 -131
- package/test/browser.domUtility.test.js +52 -35
- package/test/browser.predicates.test.js +13 -13
- package/test/browser.rollbar.test.js +597 -503
- package/test/browser.telemetry.test.js +76 -0
- package/test/browser.transforms.test.js +146 -128
- package/test/browser.transport.test.js +54 -46
- package/test/browser.url.test.js +12 -11
- package/test/fixtures/locals.fixtures.js +245 -126
- package/test/notifier.test.js +90 -78
- package/test/predicates.test.js +260 -214
- package/test/queue.test.js +230 -214
- package/test/rateLimiter.test.js +50 -42
- package/test/react-native.rollbar.test.js +149 -115
- package/test/react-native.transforms.test.js +21 -23
- package/test/react-native.transport.test.js +23 -11
- package/test/server.lambda.test.js +70 -53
- package/test/server.locals.test.js +437 -210
- package/test/server.parser.test.js +32 -26
- package/test/server.predicates.test.js +45 -43
- package/test/server.rollbar.test.js +311 -259
- package/test/server.telemetry.test.js +208 -83
- package/test/server.transforms.test.js +455 -361
- package/test/server.transport.test.js +144 -76
- package/test/telemetry.test.js +46 -37
- package/test/transforms.test.js +68 -66
- package/test/truncation.test.js +55 -53
- package/test/utility.test.js +266 -222
- package/webpack.config.js +46 -43
- package/.gitmodules +0 -3
- package/browserstack.browsers.js +0 -153
- package/browserstack.browsers.json +0 -4384
package/src/browser/detection.js
CHANGED
|
@@ -6,25 +6,24 @@
|
|
|
6
6
|
// Will return an integer on IE (i.e. 8)
|
|
7
7
|
// Will return undefined otherwise
|
|
8
8
|
function getIEVersion() {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
var undef;
|
|
10
|
+
if (typeof document === 'undefined') {
|
|
11
|
+
return undef;
|
|
12
|
+
}
|
|
13
13
|
|
|
14
14
|
var v = 3,
|
|
15
15
|
div = document.createElement('div'),
|
|
16
16
|
all = div.getElementsByTagName('i');
|
|
17
17
|
|
|
18
18
|
while (
|
|
19
|
-
div.innerHTML = '<!--[if gt IE ' +
|
|
20
|
-
|
|
21
|
-
);
|
|
19
|
+
((div.innerHTML = '<!--[if gt IE ' + ++v + ']><i></i><![endif]-->'), all[0])
|
|
20
|
+
);
|
|
22
21
|
|
|
23
22
|
return v > 4 ? v : undef;
|
|
24
23
|
}
|
|
25
24
|
|
|
26
25
|
var Detection = {
|
|
27
|
-
ieVersion: getIEVersion
|
|
26
|
+
ieVersion: getIEVersion,
|
|
28
27
|
};
|
|
29
28
|
|
|
30
29
|
module.exports = Detection;
|
|
@@ -45,12 +45,16 @@ function treeToArray(elem) {
|
|
|
45
45
|
|
|
46
46
|
function elementArrayToString(a) {
|
|
47
47
|
var MAX_LENGTH = 80;
|
|
48
|
-
var separator = ' > ',
|
|
49
|
-
|
|
48
|
+
var separator = ' > ',
|
|
49
|
+
separatorLength = separator.length;
|
|
50
|
+
var out = [],
|
|
51
|
+
len = 0,
|
|
52
|
+
nextStr,
|
|
53
|
+
totalLength;
|
|
50
54
|
|
|
51
55
|
for (var i = a.length - 1; i >= 0; i--) {
|
|
52
56
|
nextStr = descriptionToString(a[i]);
|
|
53
|
-
totalLength = len +
|
|
57
|
+
totalLength = len + out.length * separatorLength + nextStr.length;
|
|
54
58
|
if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) {
|
|
55
59
|
out.unshift('...');
|
|
56
60
|
break;
|
|
@@ -73,7 +77,9 @@ function descriptionToString(desc) {
|
|
|
73
77
|
out.push('.' + desc.classes.join('.'));
|
|
74
78
|
}
|
|
75
79
|
for (var i = 0; i < desc.attributes.length; i++) {
|
|
76
|
-
out.push(
|
|
80
|
+
out.push(
|
|
81
|
+
'[' + desc.attributes[i].key + '="' + desc.attributes[i].value + '"]',
|
|
82
|
+
);
|
|
77
83
|
}
|
|
78
84
|
|
|
79
85
|
return out.join('');
|
|
@@ -98,13 +104,17 @@ function describeElement(elem) {
|
|
|
98
104
|
if (!elem || !elem.tagName) {
|
|
99
105
|
return null;
|
|
100
106
|
}
|
|
101
|
-
var out = {},
|
|
107
|
+
var out = {},
|
|
108
|
+
className,
|
|
109
|
+
key,
|
|
110
|
+
attr,
|
|
111
|
+
i;
|
|
102
112
|
out.tagName = elem.tagName.toLowerCase();
|
|
103
113
|
if (elem.id) {
|
|
104
114
|
out.id = elem.id;
|
|
105
115
|
}
|
|
106
116
|
className = elem.className;
|
|
107
|
-
if (className &&
|
|
117
|
+
if (className && typeof className === 'string') {
|
|
108
118
|
out.classes = className.split(/\s+/);
|
|
109
119
|
}
|
|
110
120
|
var attributes = ['type', 'name', 'title', 'alt'];
|
|
@@ -113,7 +123,7 @@ function describeElement(elem) {
|
|
|
113
123
|
key = attributes[i];
|
|
114
124
|
attr = elem.getAttribute(key);
|
|
115
125
|
if (attr) {
|
|
116
|
-
out.attributes.push({key: key, value: attr});
|
|
126
|
+
out.attributes.push({ key: key, value: attr });
|
|
117
127
|
}
|
|
118
128
|
}
|
|
119
129
|
return out;
|
|
@@ -126,5 +136,5 @@ module.exports = {
|
|
|
126
136
|
treeToArray: treeToArray,
|
|
127
137
|
getElementFromEvent: getElementFromEvent,
|
|
128
138
|
isDescribedElement: isDescribedElement,
|
|
129
|
-
getElementType: getElementType
|
|
139
|
+
getElementType: getElementType,
|
|
130
140
|
};
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
function captureUncaughtExceptions(window, handler, shim) {
|
|
2
|
-
if (!window) {
|
|
2
|
+
if (!window) {
|
|
3
|
+
return;
|
|
4
|
+
}
|
|
3
5
|
var oldOnError;
|
|
4
6
|
|
|
5
7
|
if (typeof handler._rollbarOldOnError === 'function') {
|
|
@@ -14,7 +16,7 @@ function captureUncaughtExceptions(window, handler, shim) {
|
|
|
14
16
|
|
|
15
17
|
handler.handleAnonymousErrors();
|
|
16
18
|
|
|
17
|
-
var fn = function() {
|
|
19
|
+
var fn = function () {
|
|
18
20
|
var args = Array.prototype.slice.call(arguments, 0);
|
|
19
21
|
_rollbarWindowOnError(window, handler, oldOnError, args);
|
|
20
22
|
};
|
|
@@ -50,9 +52,14 @@ function _rollbarWindowOnError(window, r, old, args) {
|
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
function captureUnhandledRejections(window, handler, shim) {
|
|
53
|
-
if (!window) {
|
|
55
|
+
if (!window) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
54
58
|
|
|
55
|
-
if (
|
|
59
|
+
if (
|
|
60
|
+
typeof window._rollbarURH === 'function' &&
|
|
61
|
+
window._rollbarURH.belongsToShim
|
|
62
|
+
) {
|
|
56
63
|
window.removeEventListener('unhandledrejection', window._rollbarURH);
|
|
57
64
|
}
|
|
58
65
|
|
|
@@ -90,8 +97,7 @@ function captureUnhandledRejections(window, handler, shim) {
|
|
|
90
97
|
window.addEventListener('unhandledrejection', rejectionHandler);
|
|
91
98
|
}
|
|
92
99
|
|
|
93
|
-
|
|
94
100
|
module.exports = {
|
|
95
101
|
captureUncaughtExceptions: captureUncaughtExceptions,
|
|
96
|
-
captureUnhandledRejections: captureUnhandledRejections
|
|
102
|
+
captureUnhandledRejections: captureUnhandledRejections,
|
|
97
103
|
};
|
package/src/browser/logger.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/* globals jQuery */
|
|
2
2
|
/* globals __JQUERY_PLUGIN_VERSION__ */
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
(function(jQuery, window, document) {
|
|
6
|
-
|
|
4
|
+
(function (jQuery, window, document) {
|
|
7
5
|
var rb = window.Rollbar;
|
|
8
6
|
if (!rb) {
|
|
9
7
|
return;
|
|
@@ -16,14 +14,14 @@
|
|
|
16
14
|
notifier: {
|
|
17
15
|
plugins: {
|
|
18
16
|
jquery: {
|
|
19
|
-
version: JQUERY_PLUGIN_VERSION
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
17
|
+
version: JQUERY_PLUGIN_VERSION,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
},
|
|
24
22
|
});
|
|
25
23
|
|
|
26
|
-
var logError = function(e) {
|
|
24
|
+
var logError = function (e) {
|
|
27
25
|
rb.error(e);
|
|
28
26
|
if (window.console) {
|
|
29
27
|
var msg = '[reported to Rollbar]';
|
|
@@ -35,35 +33,37 @@
|
|
|
35
33
|
};
|
|
36
34
|
|
|
37
35
|
// Report any ajax errors to Rollbar
|
|
38
|
-
jQuery(document).ajaxError(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
jQuery(document).ajaxError(
|
|
37
|
+
function (event, jqXHR, ajaxSettings, thrownError) {
|
|
38
|
+
var status = jqXHR.status;
|
|
39
|
+
var url = ajaxSettings.url;
|
|
40
|
+
var type = ajaxSettings.type;
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
// If status === 0 it means the user left the page before the ajax event finished
|
|
43
|
+
// or other uninteresting events.
|
|
44
|
+
if (!status) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
48
47
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
48
|
+
var extra = {
|
|
49
|
+
status: status,
|
|
50
|
+
url: url,
|
|
51
|
+
type: type,
|
|
52
|
+
isAjax: true,
|
|
53
|
+
data: ajaxSettings.data,
|
|
54
|
+
jqXHR_responseText: jqXHR.responseText,
|
|
55
|
+
jqXHR_statusText: jqXHR.statusText,
|
|
56
|
+
};
|
|
57
|
+
var msg = thrownError ? thrownError : 'jQuery ajax error for ' + type;
|
|
58
|
+
rb.warning(msg, extra);
|
|
59
|
+
},
|
|
60
|
+
);
|
|
61
61
|
|
|
62
62
|
// Wraps functions passed into jQuery's ready() with try/catch to
|
|
63
63
|
// report errors to Rollbar
|
|
64
64
|
var origReady = jQuery.fn.ready;
|
|
65
|
-
jQuery.fn.ready = function(fn) {
|
|
66
|
-
return origReady.call(this, function($) {
|
|
65
|
+
jQuery.fn.ready = function (fn) {
|
|
66
|
+
return origReady.call(this, function ($) {
|
|
67
67
|
try {
|
|
68
68
|
fn($);
|
|
69
69
|
} catch (e) {
|
|
@@ -75,10 +75,10 @@
|
|
|
75
75
|
// Modified from the code removed from Tracekit in this commit
|
|
76
76
|
// https://github.com/occ/TraceKit/commit/0d39401
|
|
77
77
|
var _oldEventAdd = jQuery.event.add;
|
|
78
|
-
jQuery.event.add = function(elem, types, handler, data, selector) {
|
|
78
|
+
jQuery.event.add = function (elem, types, handler, data, selector) {
|
|
79
79
|
var _handler;
|
|
80
|
-
var wrap = function(fn) {
|
|
81
|
-
return function() {
|
|
80
|
+
var wrap = function (fn) {
|
|
81
|
+
return function () {
|
|
82
82
|
try {
|
|
83
83
|
return fn.apply(this, arguments);
|
|
84
84
|
} catch (e) {
|
package/src/browser/rollbar.js
CHANGED
|
@@ -5,8 +5,8 @@ function RollbarWrap(impl, options) {
|
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
function _setupForwarding(prototype) {
|
|
8
|
-
var _forward = function(method) {
|
|
9
|
-
return function() {
|
|
8
|
+
var _forward = function (method) {
|
|
9
|
+
return function () {
|
|
10
10
|
var args = Array.prototype.slice.call(arguments, 0);
|
|
11
11
|
if (this.impl[method]) {
|
|
12
12
|
return this.impl[method].apply(this.impl, args);
|
|
@@ -14,13 +14,16 @@ function _setupForwarding(prototype) {
|
|
|
14
14
|
};
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
var _methods =
|
|
18
|
-
|
|
17
|
+
var _methods =
|
|
18
|
+
'log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad'.split(
|
|
19
|
+
',',
|
|
20
|
+
);
|
|
21
|
+
for (var i = 0; i < _methods.length; i++) {
|
|
19
22
|
prototype[_methods[i]] = _forward(_methods[i]);
|
|
20
23
|
}
|
|
21
24
|
}
|
|
22
25
|
|
|
23
|
-
RollbarWrap.prototype._swapAndProcessMessages = function(impl, messages) {
|
|
26
|
+
RollbarWrap.prototype._swapAndProcessMessages = function (impl, messages) {
|
|
24
27
|
this.impl = impl(this.options);
|
|
25
28
|
var msg, method, args;
|
|
26
29
|
while ((msg = messages.shift())) {
|
package/src/browser/shim.js
CHANGED
|
@@ -2,7 +2,7 @@ var globals = require('./globalSetup');
|
|
|
2
2
|
var wrapGlobals = require('./wrapGlobals');
|
|
3
3
|
|
|
4
4
|
function _wrapInternalErr(f) {
|
|
5
|
-
return function() {
|
|
5
|
+
return function () {
|
|
6
6
|
try {
|
|
7
7
|
return f.apply(this, arguments);
|
|
8
8
|
} catch (e) {
|
|
@@ -22,17 +22,19 @@ function Shim(options, wrap) {
|
|
|
22
22
|
this.options = options;
|
|
23
23
|
this._rollbarOldOnError = null;
|
|
24
24
|
var shimId = _shimIdCounter++;
|
|
25
|
-
this.shimId = function() {
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
this.shimId = function () {
|
|
26
|
+
return shimId;
|
|
27
|
+
};
|
|
28
|
+
if (typeof window !== 'undefined' && window._rollbarShims) {
|
|
29
|
+
window._rollbarShims[shimId] = { handler: wrap, messages: [] };
|
|
28
30
|
}
|
|
29
31
|
}
|
|
30
32
|
|
|
31
33
|
var Wrapper = require('./rollbarWrapper');
|
|
32
|
-
var ShimImpl = function(options, wrap) {
|
|
34
|
+
var ShimImpl = function (options, wrap) {
|
|
33
35
|
return new Shim(options, wrap);
|
|
34
36
|
};
|
|
35
|
-
var Rollbar = function(options) {
|
|
37
|
+
var Rollbar = function (options) {
|
|
36
38
|
return new Wrapper(ShimImpl, options);
|
|
37
39
|
};
|
|
38
40
|
|
|
@@ -49,7 +51,7 @@ function setupShim(window, options) {
|
|
|
49
51
|
window._rollbarWrappedError = null;
|
|
50
52
|
|
|
51
53
|
var handler = new Rollbar(options);
|
|
52
|
-
return _wrapInternalErr(function() {
|
|
54
|
+
return _wrapInternalErr(function () {
|
|
53
55
|
if (options.captureUncaught) {
|
|
54
56
|
handler._rollbarOldOnError = window.onerror;
|
|
55
57
|
globals.captureUncaughtExceptions(window, handler, true);
|
|
@@ -74,7 +76,10 @@ function setupShim(window, options) {
|
|
|
74
76
|
if (ai === undefined || ai === true || pageTelemetryEnabled(ai)) {
|
|
75
77
|
if (window.addEventListener) {
|
|
76
78
|
window.addEventListener('load', handler.captureLoad.bind(handler));
|
|
77
|
-
window.addEventListener(
|
|
79
|
+
window.addEventListener(
|
|
80
|
+
'DOMContentLoaded',
|
|
81
|
+
handler.captureDomContentLoaded.bind(handler),
|
|
82
|
+
);
|
|
78
83
|
}
|
|
79
84
|
}
|
|
80
85
|
}
|
|
@@ -84,12 +89,22 @@ function setupShim(window, options) {
|
|
|
84
89
|
})();
|
|
85
90
|
}
|
|
86
91
|
|
|
87
|
-
Shim.prototype.loadFull = function(
|
|
92
|
+
Shim.prototype.loadFull = function (
|
|
93
|
+
window,
|
|
94
|
+
document,
|
|
95
|
+
immediate,
|
|
96
|
+
options,
|
|
97
|
+
callback,
|
|
98
|
+
) {
|
|
88
99
|
var onload = function () {
|
|
89
100
|
var err;
|
|
90
101
|
if (window._rollbarDidLoad === undefined) {
|
|
91
102
|
err = new Error('rollbar.js did not load');
|
|
92
|
-
var i=0,
|
|
103
|
+
var i = 0,
|
|
104
|
+
queue,
|
|
105
|
+
obj,
|
|
106
|
+
args,
|
|
107
|
+
cb;
|
|
93
108
|
while ((queue = window._rollbarShims[i++])) {
|
|
94
109
|
queue = queue.messages || [];
|
|
95
110
|
while ((obj = queue.shift())) {
|
|
@@ -121,8 +136,13 @@ Shim.prototype.loadFull = function(window, document, immediate, options, callbac
|
|
|
121
136
|
s.async = true;
|
|
122
137
|
}
|
|
123
138
|
|
|
124
|
-
s.onload = s.onreadystatechange = _wrapInternalErr(function() {
|
|
125
|
-
if (
|
|
139
|
+
s.onload = s.onreadystatechange = _wrapInternalErr(function () {
|
|
140
|
+
if (
|
|
141
|
+
!done &&
|
|
142
|
+
(!this.readyState ||
|
|
143
|
+
this.readyState === 'loaded' ||
|
|
144
|
+
this.readyState === 'complete')
|
|
145
|
+
) {
|
|
126
146
|
s.onload = s.onreadystatechange = null;
|
|
127
147
|
try {
|
|
128
148
|
parentNode.removeChild(s);
|
|
@@ -137,13 +157,15 @@ Shim.prototype.loadFull = function(window, document, immediate, options, callbac
|
|
|
137
157
|
parentNode.insertBefore(s, f);
|
|
138
158
|
};
|
|
139
159
|
|
|
140
|
-
Shim.prototype.wrap = function(f, context, _before) {
|
|
160
|
+
Shim.prototype.wrap = function (f, context, _before) {
|
|
141
161
|
try {
|
|
142
162
|
var ctxFn;
|
|
143
163
|
if (typeof context === 'function') {
|
|
144
164
|
ctxFn = context;
|
|
145
165
|
} else {
|
|
146
|
-
ctxFn = function() {
|
|
166
|
+
ctxFn = function () {
|
|
167
|
+
return context || {};
|
|
168
|
+
};
|
|
147
169
|
}
|
|
148
170
|
|
|
149
171
|
if (typeof f !== 'function') {
|
|
@@ -161,7 +183,7 @@ Shim.prototype.wrap = function(f, context, _before) {
|
|
|
161
183
|
}
|
|
162
184
|
try {
|
|
163
185
|
return f.apply(this, arguments);
|
|
164
|
-
} catch(exc) {
|
|
186
|
+
} catch (exc) {
|
|
165
187
|
var e = exc;
|
|
166
188
|
if (e) {
|
|
167
189
|
if (typeof e === 'string') {
|
|
@@ -195,16 +217,18 @@ Shim.prototype.wrap = function(f, context, _before) {
|
|
|
195
217
|
};
|
|
196
218
|
|
|
197
219
|
function stub(method) {
|
|
198
|
-
return _wrapInternalErr(function() {
|
|
220
|
+
return _wrapInternalErr(function () {
|
|
199
221
|
var shim = this;
|
|
200
222
|
var args = Array.prototype.slice.call(arguments, 0);
|
|
201
|
-
var data = {shim: shim, method: method, args: args, ts: new Date()};
|
|
223
|
+
var data = { shim: shim, method: method, args: args, ts: new Date() };
|
|
202
224
|
window._rollbarShims[this.shimId()].messages.push(data);
|
|
203
225
|
});
|
|
204
226
|
}
|
|
205
227
|
|
|
206
228
|
var _methods =
|
|
207
|
-
'log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad'.split(
|
|
229
|
+
'log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad'.split(
|
|
230
|
+
',',
|
|
231
|
+
);
|
|
208
232
|
|
|
209
233
|
for (var i = 0; i < _methods.length; ++i) {
|
|
210
234
|
Shim.prototype[_methods[i]] = stub(_methods[i]);
|
|
@@ -212,5 +236,5 @@ for (var i = 0; i < _methods.length; ++i) {
|
|
|
212
236
|
|
|
213
237
|
module.exports = {
|
|
214
238
|
setupShim: setupShim,
|
|
215
|
-
Rollbar: Rollbar
|
|
239
|
+
Rollbar: Rollbar,
|
|
216
240
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
module.exports = function(options) {
|
|
2
|
-
return function(err) {
|
|
1
|
+
module.exports = function (options) {
|
|
2
|
+
return function (err) {
|
|
3
3
|
if (err) {
|
|
4
4
|
return;
|
|
5
5
|
}
|
|
@@ -9,10 +9,12 @@ module.exports = function(options) {
|
|
|
9
9
|
var alias = options.globalAlias || 'Rollbar';
|
|
10
10
|
|
|
11
11
|
var rollbar = window.rollbar;
|
|
12
|
-
var realImpl = function(o) {
|
|
12
|
+
var realImpl = function (o) {
|
|
13
13
|
return new rollbar(o);
|
|
14
14
|
};
|
|
15
|
-
var i = 0,
|
|
15
|
+
var i = 0,
|
|
16
|
+
obj,
|
|
17
|
+
mainHandler;
|
|
16
18
|
while ((obj = window._rollbarShims[i++])) {
|
|
17
19
|
if (!mainHandler) {
|
|
18
20
|
mainHandler = obj.handler;
|