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.
Files changed (117) hide show
  1. package/.github/workflows/ci.yml +32 -10
  2. package/.lgtm.yml +7 -7
  3. package/.prettierignore +18 -0
  4. package/.vscode/settings.json +39 -0
  5. package/CHANGELOG.md +121 -35
  6. package/Gruntfile.js +51 -71
  7. package/README.md +2 -4
  8. package/bower.json +1 -3
  9. package/defaults.js +17 -5
  10. package/dist/plugins/jquery.min.js +1 -1
  11. package/dist/rollbar.js +5699 -5052
  12. package/dist/rollbar.js.map +1 -1
  13. package/dist/rollbar.min.js +1 -1
  14. package/dist/rollbar.min.js.map +1 -1
  15. package/dist/rollbar.named-amd.js +5704 -5062
  16. package/dist/rollbar.named-amd.js.map +1 -1
  17. package/dist/rollbar.named-amd.min.js +1 -1
  18. package/dist/rollbar.named-amd.min.js.map +1 -1
  19. package/dist/rollbar.noconflict.umd.js +5693 -5052
  20. package/dist/rollbar.noconflict.umd.js.map +1 -1
  21. package/dist/rollbar.noconflict.umd.min.js +1 -1
  22. package/dist/rollbar.noconflict.umd.min.js.map +1 -1
  23. package/dist/rollbar.snippet.js +1 -1
  24. package/dist/rollbar.umd.js +5704 -5063
  25. package/dist/rollbar.umd.js.map +1 -1
  26. package/dist/rollbar.umd.min.js +1 -1
  27. package/dist/rollbar.umd.min.js.map +1 -1
  28. package/docs/extension-exceptions.md +35 -30
  29. package/docs/migration_v0_to_v1.md +41 -38
  30. package/index.d.ts +270 -231
  31. package/karma.conf.js +16 -34
  32. package/package.json +21 -17
  33. package/prettier.config.js +7 -0
  34. package/src/api.js +21 -10
  35. package/src/apiUtility.js +12 -8
  36. package/src/browser/core.js +103 -65
  37. package/src/browser/defaults/scrubFields.js +3 -3
  38. package/src/browser/detection.js +7 -8
  39. package/src/browser/domUtility.js +18 -8
  40. package/src/browser/globalSetup.js +12 -6
  41. package/src/browser/logger.js +1 -1
  42. package/src/browser/plugins/jquery.js +35 -35
  43. package/src/browser/predicates.js +1 -1
  44. package/src/browser/rollbar.js +1 -1
  45. package/src/browser/rollbarWrapper.js +8 -5
  46. package/src/browser/shim.js +43 -19
  47. package/src/browser/snippet_callback.js +6 -4
  48. package/src/browser/telemetry.js +573 -354
  49. package/src/browser/transforms.js +46 -27
  50. package/src/browser/transport/fetch.js +16 -14
  51. package/src/browser/transport/xhr.js +29 -13
  52. package/src/browser/transport.js +82 -25
  53. package/src/browser/url.js +16 -8
  54. package/src/browser/wrapGlobals.js +27 -8
  55. package/src/defaults.js +3 -3
  56. package/src/errorParser.js +14 -11
  57. package/src/merge.js +32 -23
  58. package/src/notifier.js +16 -13
  59. package/src/predicates.js +43 -23
  60. package/src/queue.js +71 -39
  61. package/src/rateLimiter.js +59 -18
  62. package/src/react-native/logger.js +1 -1
  63. package/src/react-native/rollbar.js +59 -55
  64. package/src/react-native/transforms.js +13 -9
  65. package/src/react-native/transport.js +44 -34
  66. package/src/rollbar.js +22 -13
  67. package/src/scrub.js +0 -1
  68. package/src/server/locals.js +69 -39
  69. package/src/server/logger.js +4 -4
  70. package/src/server/parser.js +72 -47
  71. package/src/server/rollbar.js +133 -55
  72. package/src/server/sourceMap/stackTrace.js +33 -18
  73. package/src/server/telemetry/urlHelpers.js +9 -11
  74. package/src/server/telemetry.js +68 -45
  75. package/src/server/transforms.js +37 -21
  76. package/src/server/transport.js +62 -32
  77. package/src/telemetry.js +92 -28
  78. package/src/transforms.js +33 -21
  79. package/src/truncation.js +8 -5
  80. package/src/utility/headers.js +43 -43
  81. package/src/utility/replace.js +9 -0
  82. package/src/utility/traverse.js +1 -1
  83. package/src/utility.js +89 -52
  84. package/test/api.test.js +31 -29
  85. package/test/apiUtility.test.js +43 -44
  86. package/test/browser.core.test.js +141 -131
  87. package/test/browser.domUtility.test.js +52 -35
  88. package/test/browser.predicates.test.js +13 -13
  89. package/test/browser.rollbar.test.js +597 -503
  90. package/test/browser.telemetry.test.js +76 -0
  91. package/test/browser.transforms.test.js +146 -128
  92. package/test/browser.transport.test.js +54 -46
  93. package/test/browser.url.test.js +12 -11
  94. package/test/fixtures/locals.fixtures.js +245 -126
  95. package/test/notifier.test.js +90 -78
  96. package/test/predicates.test.js +260 -214
  97. package/test/queue.test.js +230 -214
  98. package/test/rateLimiter.test.js +50 -42
  99. package/test/react-native.rollbar.test.js +149 -115
  100. package/test/react-native.transforms.test.js +21 -23
  101. package/test/react-native.transport.test.js +23 -11
  102. package/test/server.lambda.test.js +70 -53
  103. package/test/server.locals.test.js +437 -210
  104. package/test/server.parser.test.js +32 -26
  105. package/test/server.predicates.test.js +45 -43
  106. package/test/server.rollbar.test.js +311 -259
  107. package/test/server.telemetry.test.js +208 -83
  108. package/test/server.transforms.test.js +455 -361
  109. package/test/server.transport.test.js +144 -76
  110. package/test/telemetry.test.js +46 -37
  111. package/test/transforms.test.js +68 -66
  112. package/test/truncation.test.js +55 -53
  113. package/test/utility.test.js +266 -222
  114. package/webpack.config.js +46 -43
  115. package/.gitmodules +0 -3
  116. package/browserstack.browsers.js +0 -153
  117. package/browserstack.browsers.json +0 -4384
package/webpack.config.js CHANGED
@@ -8,18 +8,17 @@ 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
- parallel: true
11
+ parallel: true,
13
12
  });
14
13
 
15
14
  var snippetConfig = {
16
15
  name: 'snippet',
17
16
  entry: {
18
- 'rollbar.snippet': './src/browser/bundles/rollbar.snippet.js'
17
+ 'rollbar.snippet': './src/browser/bundles/rollbar.snippet.js',
19
18
  },
20
19
  output: {
21
20
  path: outputPath,
22
- filename: '[name].js'
21
+ filename: '[name].js',
23
22
  },
24
23
  plugins: [defaultsPlugin],
25
24
  module: {
@@ -31,26 +30,26 @@ var snippetConfig = {
31
30
  exclude: [/node_modules/, /vendor/],
32
31
  options: {
33
32
  failOnError: true,
34
- configFile: path.resolve(__dirname, '.eslintrc')
35
- }
33
+ configFile: path.resolve(__dirname, '.eslintrc'),
34
+ },
36
35
  },
37
36
  {
38
37
  test: /\.js$/,
39
38
  loader: 'strict-loader',
40
- exclude: [/node_modules/, /vendor/]
41
- }
39
+ exclude: [/node_modules/, /vendor/],
40
+ },
42
41
  ],
43
- }
42
+ },
44
43
  };
45
44
 
46
45
  var pluginConfig = {
47
46
  name: 'plugins',
48
47
  entry: {
49
- 'jquery': './src/browser/plugins/jquery.js'
48
+ jquery: './src/browser/plugins/jquery.js',
50
49
  },
51
50
  output: {
52
51
  path: outputPath + '/plugins/',
53
- filename: '[name].min.js'
52
+ filename: '[name].min.js',
54
53
  },
55
54
  plugins: [defaultsPlugin],
56
55
  module: {
@@ -62,24 +61,24 @@ var pluginConfig = {
62
61
  exclude: [/node_modules/, /vendor/],
63
62
  options: {
64
63
  failOnError: true,
65
- configFile: path.resolve(__dirname, '.eslintrc')
66
- }
64
+ configFile: path.resolve(__dirname, '.eslintrc'),
65
+ },
67
66
  },
68
67
  {
69
68
  test: /\.js$/,
70
69
  loader: 'strict-loader',
71
- exclude: [/node_modules/, /vendor/]
72
- }
70
+ exclude: [/node_modules/, /vendor/],
71
+ },
73
72
  ],
74
- }
73
+ },
75
74
  };
76
75
 
77
76
  var vanillaConfigBase = {
78
77
  entry: {
79
- 'rollbar': './src/browser/bundles/rollbar.js'
78
+ rollbar: './src/browser/bundles/rollbar.js',
80
79
  },
81
80
  output: {
82
- path: outputPath
81
+ path: outputPath,
83
82
  },
84
83
  plugins: [defaultsPlugin],
85
84
  devtool: 'hidden-source-map',
@@ -92,27 +91,27 @@ var vanillaConfigBase = {
92
91
  exclude: [/node_modules/, /vendor/],
93
92
  options: {
94
93
  failOnError: true,
95
- configFile: path.resolve(__dirname, '.eslintrc')
96
- }
94
+ configFile: path.resolve(__dirname, '.eslintrc'),
95
+ },
97
96
  },
98
97
  {
99
98
  test: /\.js$/,
100
99
  loader: 'strict-loader',
101
- exclude: [/node_modules/, /vendor/]
102
- }
100
+ exclude: [/node_modules/, /vendor/],
101
+ },
103
102
  ],
104
- }
103
+ },
105
104
  };
106
105
 
107
106
  var UMDConfigBase = {
108
107
  entry: {
109
- 'rollbar.umd': ['./src/browser/bundles/rollbar.js']
108
+ 'rollbar.umd': ['./src/browser/bundles/rollbar.js'],
110
109
  },
111
110
  output: {
112
111
  path: outputPath,
113
112
  library: 'rollbar',
114
113
  libraryTarget: 'umd',
115
- globalObject: 'this'
114
+ globalObject: 'this',
116
115
  },
117
116
  devtool: 'source-map',
118
117
  module: {
@@ -124,39 +123,38 @@ var UMDConfigBase = {
124
123
  exclude: [/node_modules/, /vendor/],
125
124
  options: {
126
125
  failOnError: true,
127
- configFile: path.resolve(__dirname, '.eslintrc')
128
- }
126
+ configFile: path.resolve(__dirname, '.eslintrc'),
127
+ },
129
128
  },
130
129
  {
131
130
  test: /\.js$/,
132
131
  loader: 'strict-loader',
133
- exclude: [/node_modules/, /vendor/]
134
- }
132
+ exclude: [/node_modules/, /vendor/],
133
+ },
135
134
  ],
136
- }
135
+ },
137
136
  };
138
137
 
139
138
  var noConflictConfigBase = extend({}, UMDConfigBase);
140
139
  noConflictConfigBase.entry = {
141
- 'rollbar.noconflict.umd': ['./src/browser/bundles/rollbar.noconflict.js']
140
+ 'rollbar.noconflict.umd': ['./src/browser/bundles/rollbar.noconflict.js'],
142
141
  };
143
142
 
144
143
  var namedAMDConfigBase = extend({}, UMDConfigBase);
145
144
  namedAMDConfigBase.entry = {
146
- 'rollbar.named-amd': namedAMDConfigBase.entry['rollbar.umd']
145
+ 'rollbar.named-amd': namedAMDConfigBase.entry['rollbar.umd'],
147
146
  };
148
147
  namedAMDConfigBase.output = extend({}, namedAMDConfigBase.output);
149
148
  namedAMDConfigBase.output.library = 'rollbar';
150
149
  namedAMDConfigBase.output.libraryTarget = 'amd';
151
150
 
152
-
153
151
  var config = [snippetConfig, pluginConfig];
154
152
 
155
153
  function optimizationConfig(minimizer) {
156
154
  return {
157
155
  minimize: minimizer ? true : false,
158
- minimizer: minimizer ? [minimizer] : []
159
- }
156
+ minimizer: minimizer ? [minimizer] : [],
157
+ };
160
158
  }
161
159
 
162
160
  function addVanillaToConfig(webpackConfig, filename, extraPlugins, minimizer) {
@@ -169,7 +167,7 @@ function addVanillaToConfig(webpackConfig, filename, extraPlugins, minimizer) {
169
167
 
170
168
  vanillaConfig.optimization = optimizationConfig(minimizer);
171
169
 
172
- vanillaConfig.output = extend({filename: filename}, vanillaConfig.output);
170
+ vanillaConfig.output = extend({ filename: filename }, vanillaConfig.output);
173
171
 
174
172
  webpackConfig.push(vanillaConfig);
175
173
  }
@@ -183,13 +181,17 @@ function addUMDToConfig(webpackConfig, filename, extraPlugins, minimizer) {
183
181
 
184
182
  UMDConfig.optimization = optimizationConfig(minimizer);
185
183
 
186
- UMDConfig.output = extend({filename: filename}, UMDConfig.output);
184
+ UMDConfig.output = extend({ filename: filename }, UMDConfig.output);
187
185
 
188
186
  webpackConfig.push(UMDConfig);
189
187
  }
190
188
 
191
-
192
- function addNoConflictToConfig(webpackConfig, filename, extraPlugins, minimizer) {
189
+ function addNoConflictToConfig(
190
+ webpackConfig,
191
+ filename,
192
+ extraPlugins,
193
+ minimizer,
194
+ ) {
193
195
  var basePlugins = [defaultsPlugin];
194
196
  var noConflictConfig = extend({}, noConflictConfigBase);
195
197
 
@@ -198,12 +200,14 @@ function addNoConflictToConfig(webpackConfig, filename, extraPlugins, minimizer)
198
200
 
199
201
  noConflictConfig.optimization = optimizationConfig(minimizer);
200
202
 
201
- noConflictConfig.output = extend({filename: filename}, noConflictConfig.output);
203
+ noConflictConfig.output = extend(
204
+ { filename: filename },
205
+ noConflictConfig.output,
206
+ );
202
207
 
203
208
  webpackConfig.push(noConflictConfig);
204
209
  }
205
210
 
206
-
207
211
  function addNamedAMDToConfig(webpackConfig, filename, extraPlugins, minimizer) {
208
212
  var basePlugins = [defaultsPlugin];
209
213
  var AMDConfig = extend({}, namedAMDConfigBase);
@@ -213,12 +217,11 @@ function addNamedAMDToConfig(webpackConfig, filename, extraPlugins, minimizer) {
213
217
 
214
218
  AMDConfig.optimization = optimizationConfig(minimizer);
215
219
 
216
- AMDConfig.output = extend({filename: filename}, AMDConfig.output);
220
+ AMDConfig.output = extend({ filename: filename }, AMDConfig.output);
217
221
 
218
222
  webpackConfig.push(AMDConfig);
219
223
  }
220
224
 
221
-
222
225
  function generateBuildConfig(name, plugins, minimizer) {
223
226
  addVanillaToConfig(config, name, plugins, minimizer);
224
227
  addUMDToConfig(config, name, plugins, minimizer);
package/.gitmodules DELETED
@@ -1,3 +0,0 @@
1
- [submodule "vendor/JSON-js"]
2
- path = vendor/JSON-js
3
- url = https://github.com/rollbar/JSON-js.git
@@ -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
- };