rollbar 2.26.2 → 2.26.3
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 +1 -1
- package/Gruntfile.js +3 -33
- package/dist/rollbar.js +11 -4
- package/dist/rollbar.js.map +1 -1
- package/dist/rollbar.min.js +1 -1
- package/dist/rollbar.named-amd.js +11 -4
- package/dist/rollbar.named-amd.js.map +1 -1
- package/dist/rollbar.named-amd.min.js +1 -2
- package/dist/rollbar.noconflict.umd.js +11 -4
- package/dist/rollbar.noconflict.umd.js.map +1 -1
- package/dist/rollbar.noconflict.umd.min.js +1 -2
- package/dist/rollbar.snippet.js +1 -1
- package/dist/rollbar.umd.js +11 -4
- package/dist/rollbar.umd.js.map +1 -1
- package/dist/rollbar.umd.min.js +1 -2
- package/karma.conf.js +1 -19
- package/package.json +19 -16
- package/src/browser/telemetry.js +10 -3
- package/src/defaults.js +1 -1
- package/test/browser.telemetry.test.js +69 -0
- package/webpack.config.js +0 -1
- package/browserstack.browsers.js +0 -153
- package/browserstack.browsers.json +0 -4384
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/* globals expect */
|
|
2
|
+
/* globals describe */
|
|
3
|
+
/* globals it */
|
|
4
|
+
/* globals sinon */
|
|
5
|
+
|
|
6
|
+
var Instrumenter = require('../src/browser/telemetry');
|
|
7
|
+
|
|
8
|
+
describe('instrumentNetwork', function () {
|
|
9
|
+
it('should capture XHR requests with string URL', function (done) {
|
|
10
|
+
var callback = sinon.spy();
|
|
11
|
+
var windowMock = {
|
|
12
|
+
XMLHttpRequest: function () { }
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
windowMock.XMLHttpRequest.prototype.open = function () { }
|
|
16
|
+
windowMock.XMLHttpRequest.prototype.send = function () { }
|
|
17
|
+
|
|
18
|
+
var i = createInstrumenter(callback, windowMock)
|
|
19
|
+
i.instrumentNetwork()
|
|
20
|
+
|
|
21
|
+
var xhr = new windowMock.XMLHttpRequest();
|
|
22
|
+
xhr.open('GET', 'http://first.call')
|
|
23
|
+
xhr.send()
|
|
24
|
+
xhr.onreadystatechange()
|
|
25
|
+
|
|
26
|
+
expect(callback.callCount).to.eql(1)
|
|
27
|
+
expect(callback.args[0][0].url).to.eql('http://first.call')
|
|
28
|
+
|
|
29
|
+
i.deinstrumentNetwork()
|
|
30
|
+
i = createInstrumenter(callback, windowMock)
|
|
31
|
+
i.instrumentNetwork()
|
|
32
|
+
var xhr = new windowMock.XMLHttpRequest();
|
|
33
|
+
xhr.open('GET', new URL('http://second.call'))
|
|
34
|
+
xhr.send()
|
|
35
|
+
xhr.onreadystatechange()
|
|
36
|
+
expect(callback.callCount).to.eql(2)
|
|
37
|
+
expect(callback.args[1][0].url).to.eql('http://second.call/')
|
|
38
|
+
|
|
39
|
+
done()
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
it('should capture XHR requests with string URL', function (done) {
|
|
43
|
+
var callback = sinon.spy();
|
|
44
|
+
var windowMock = {
|
|
45
|
+
fetch: function () { return Promise.resolve() }
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
var i = createInstrumenter(callback, windowMock);
|
|
49
|
+
i.instrumentNetwork()
|
|
50
|
+
|
|
51
|
+
windowMock.fetch('http://first.call')
|
|
52
|
+
expect(callback.callCount).to.eql(1)
|
|
53
|
+
expect(callback.args[0][0].url).to.eql('http://first.call')
|
|
54
|
+
|
|
55
|
+
i.deinstrumentNetwork()
|
|
56
|
+
i = createInstrumenter(callback, windowMock)
|
|
57
|
+
i.instrumentNetwork()
|
|
58
|
+
|
|
59
|
+
windowMock.fetch(new URL('http://second.call'))
|
|
60
|
+
expect(callback.callCount).to.eql(2)
|
|
61
|
+
expect(callback.args[1][0].url).to.eql('http://second.call/')
|
|
62
|
+
|
|
63
|
+
done()
|
|
64
|
+
})
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
function createInstrumenter(callback, windowMock) {
|
|
68
|
+
return new Instrumenter({ scrubFields: [] }, { captureNetwork: callback }, { wrap: function () { }, client: { notifier: { diagnostic: {} } } }, windowMock);
|
|
69
|
+
}
|
package/webpack.config.js
CHANGED
package/browserstack.browsers.js
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
var request = require('request');
|
|
2
|
-
|
|
3
|
-
var BROWSERSTACK_BROWSERS_ENDPOINT = 'https://www.browserstack.com/automate/browsers.json'
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
function annotate(browserList) {
|
|
7
|
-
return browserList.map(function(browser) {
|
|
8
|
-
browser.base = 'BrowserStack';
|
|
9
|
-
browser._alias = 'bs_' + browser.browser;
|
|
10
|
-
browser._version = parseFloat(browser.browser_version || '0');
|
|
11
|
-
browser._id = [
|
|
12
|
-
browser.browser,
|
|
13
|
-
browser.browser_version,
|
|
14
|
-
browser.device,
|
|
15
|
-
browser.os,
|
|
16
|
-
browser.os_version
|
|
17
|
-
].join('-').replace(/\s/g, '_');
|
|
18
|
-
|
|
19
|
-
return browser;
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
function versionAliases(browserList) {
|
|
25
|
-
var ret = [];
|
|
26
|
-
browserList.forEach(function(browser) {
|
|
27
|
-
if (browser._version) {
|
|
28
|
-
var copy = simpleCopy(browser);
|
|
29
|
-
copy._alias = 'bs_' + browser.browser + '_' + browser._version;
|
|
30
|
-
ret.push(copy);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
return ret;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
var browsers = [];
|
|
38
|
-
var sortedByBrowser = {};
|
|
39
|
-
try {
|
|
40
|
-
loadBrowsers(require('./browserstack.browsers.json'));
|
|
41
|
-
} catch (e) {
|
|
42
|
-
console.error('Could not read ./browserstack.browsers.json. Ignoring.', e); // eslint-disable-line no-console
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
function simpleCopy(obj) {
|
|
47
|
-
return JSON.parse(JSON.stringify(obj));
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
function loadBrowsers(browserListFromBrowserStack) {
|
|
52
|
-
browsers = annotate(browserListFromBrowserStack);
|
|
53
|
-
browsers = browsers.concat(versionAliases(browsers));
|
|
54
|
-
|
|
55
|
-
sortedByBrowser = {};
|
|
56
|
-
|
|
57
|
-
browsers.forEach(function(browser) {
|
|
58
|
-
var browserList = sortedByBrowser[browser._alias] = sortedByBrowser[browser._alias] || [];
|
|
59
|
-
browserList.push(browser);
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
// Sort all of the browsers by browser, _version
|
|
63
|
-
for (var browser in sortedByBrowser) {
|
|
64
|
-
var browserList = sortedByBrowser[browser];
|
|
65
|
-
var numBrowsers = browserList.length;
|
|
66
|
-
browserList.sort(function(a, b) {
|
|
67
|
-
return a._version - b._version;
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
// Store a reference in the global browsers array to the oldest, previous and latest of
|
|
71
|
-
// each browser.
|
|
72
|
-
if (numBrowsers > 0) {
|
|
73
|
-
var browserName = browser;
|
|
74
|
-
var oldest = simpleCopy(browserList[0]);
|
|
75
|
-
var latest = simpleCopy(browserList[browserList.length - 1]);
|
|
76
|
-
var previous;
|
|
77
|
-
|
|
78
|
-
oldest._alias = browserName + '_oldest';
|
|
79
|
-
latest._alias = browserName + '_latest';
|
|
80
|
-
|
|
81
|
-
browsers.push(oldest);
|
|
82
|
-
browsers.push(latest);
|
|
83
|
-
|
|
84
|
-
if (numBrowsers > 1) {
|
|
85
|
-
previous = simpleCopy(browserList[browserList.length - 2]);
|
|
86
|
-
previous._alias = browserName + '_previous';
|
|
87
|
-
browsers.push(previous);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
function download(username, accessKey, callback) {
|
|
95
|
-
var auth = 'Basic ' + new Buffer(username + ':' + accessKey).toString('base64');
|
|
96
|
-
var req = {
|
|
97
|
-
url: BROWSERSTACK_BROWSERS_ENDPOINT,
|
|
98
|
-
headers: {
|
|
99
|
-
Authorization: auth
|
|
100
|
-
},
|
|
101
|
-
json: true
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
request.get(req, function(err, resp, body) {
|
|
105
|
-
if (err || resp.statusCode != 200) {
|
|
106
|
-
return callback(err || new Error('Received non 200 response from BrowserStack: ' + resp.statusCode));
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// Save the downloaded browsers in memory
|
|
110
|
-
loadBrowsers(body);
|
|
111
|
-
|
|
112
|
-
// TODO: Fix? fs is not defined here.
|
|
113
|
-
// fs.writeFile('./browserstack.browsers.json', JSON.stringify(body, null, ' '), callback);
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Returns an array of Objects that match the requested filters.
|
|
120
|
-
* If no arguments are provided, an empty array is returned.
|
|
121
|
-
*
|
|
122
|
-
* E.g.
|
|
123
|
-
*
|
|
124
|
-
* filter('bs_latest') - Will return the latest browser Objects for each browser.
|
|
125
|
-
* filter('bs_latest', 'bs_previous') - Will return the latest and previous browser Objects for each browser.
|
|
126
|
-
* filter('bs_ie_latest', 'bs_oldest') - Will return the latest IE browser and all of the oldest browsers.
|
|
127
|
-
* filter('bs_all') - Will return the all of the browser Objects.
|
|
128
|
-
*
|
|
129
|
-
* @returns {Array}
|
|
130
|
-
*/
|
|
131
|
-
function filter() {
|
|
132
|
-
var ret = [];
|
|
133
|
-
var labels = Array.prototype.slice.call(arguments);
|
|
134
|
-
|
|
135
|
-
labels.forEach(function(label) {
|
|
136
|
-
browsers.forEach(function(browser) {
|
|
137
|
-
if (label === 'bs_all') {
|
|
138
|
-
ret.push(browser);
|
|
139
|
-
} else if (browser._alias.match(new RegExp(label.slice(2) + '$'))) {
|
|
140
|
-
ret.push(browser);
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
return ret;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
module.exports = {
|
|
150
|
-
_browsers: browsers,
|
|
151
|
-
download: download,
|
|
152
|
-
filter: filter,
|
|
153
|
-
};
|