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.
@@ -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
@@ -8,7 +8,6 @@ var outputPath = path.resolve(__dirname, 'dist');
8
8
 
9
9
  var defaultsPlugin = new webpack.DefinePlugin(defaults);
10
10
  var uglifyPlugin = new TerserPlugin({
11
- sourceMap: true,
12
11
  parallel: true
13
12
  });
14
13
 
@@ -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
- };