rollbar 2.26.3 → 3.0.0-alpha.1

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 (186) hide show
  1. package/.cursor/rules/guidelines.mdc +154 -0
  2. package/.github/workflows/ci.yml +32 -12
  3. package/.lgtm.yml +7 -7
  4. package/.prettierignore +18 -0
  5. package/.vscode/settings.json +39 -0
  6. package/CHANGELOG.md +121 -35
  7. package/CLAUDE.md +201 -0
  8. package/Gruntfile.js +101 -48
  9. package/Makefile +3 -3
  10. package/README.md +2 -4
  11. package/SECURITY.md +5 -0
  12. package/babel.config.json +9 -0
  13. package/bower.json +1 -3
  14. package/codex.md +148 -0
  15. package/defaults.js +17 -5
  16. package/dist/plugins/jquery.min.js +1 -1
  17. package/dist/rollbar.js +18748 -5375
  18. package/dist/rollbar.js.map +1 -1
  19. package/dist/rollbar.min.js +2 -1
  20. package/dist/rollbar.min.js.LICENSE.txt +1 -0
  21. package/dist/rollbar.min.js.map +1 -1
  22. package/dist/rollbar.named-amd.js +19368 -6000
  23. package/dist/rollbar.named-amd.js.map +1 -1
  24. package/dist/rollbar.named-amd.min.js +3 -1
  25. package/dist/rollbar.named-amd.min.js.LICENSE.txt +1 -0
  26. package/dist/rollbar.named-amd.min.js.map +1 -1
  27. package/dist/rollbar.noconflict.umd.js +18749 -5380
  28. package/dist/rollbar.noconflict.umd.js.map +1 -1
  29. package/dist/rollbar.noconflict.umd.min.js +3 -1
  30. package/dist/rollbar.noconflict.umd.min.js.LICENSE.txt +1 -0
  31. package/dist/rollbar.noconflict.umd.min.js.map +1 -1
  32. package/dist/rollbar.snippet.js +1 -1
  33. package/dist/rollbar.umd.js +19367 -6000
  34. package/dist/rollbar.umd.js.map +1 -1
  35. package/dist/rollbar.umd.min.js +3 -1
  36. package/dist/rollbar.umd.min.js.LICENSE.txt +1 -0
  37. package/dist/rollbar.umd.min.js.map +1 -1
  38. package/docs/extension-exceptions.md +35 -30
  39. package/docs/migration_v0_to_v1.md +41 -38
  40. package/eslint.config.mjs +33 -0
  41. package/get_versions.js +33 -0
  42. package/index.d.ts +270 -231
  43. package/karma.conf.js +18 -27
  44. package/package.json +21 -21
  45. package/prettier.config.js +7 -0
  46. package/src/api.js +78 -14
  47. package/src/apiUtility.js +14 -11
  48. package/src/browser/core.js +138 -72
  49. package/src/browser/defaults/scrubFields.js +3 -3
  50. package/src/browser/detection.js +7 -8
  51. package/src/browser/domUtility.js +18 -8
  52. package/src/browser/globalSetup.js +12 -6
  53. package/src/browser/logger.js +1 -1
  54. package/src/browser/plugins/jquery.js +35 -35
  55. package/src/browser/predicates.js +1 -1
  56. package/src/browser/replay/defaults.js +71 -0
  57. package/src/browser/replay/recorder.js +193 -0
  58. package/src/browser/replay/replayMap.js +195 -0
  59. package/src/browser/rollbar.js +12 -8
  60. package/src/browser/rollbarWrapper.js +8 -5
  61. package/src/browser/shim.js +43 -19
  62. package/src/browser/snippet_callback.js +6 -4
  63. package/src/browser/telemetry.js +573 -361
  64. package/src/browser/transforms.js +46 -27
  65. package/src/browser/transport/fetch.js +26 -14
  66. package/src/browser/transport/xhr.js +41 -14
  67. package/src/browser/transport.js +93 -33
  68. package/src/browser/url.js +16 -8
  69. package/src/browser/wrapGlobals.js +27 -8
  70. package/src/defaults.js +3 -3
  71. package/src/errorParser.js +14 -11
  72. package/src/merge.js +32 -23
  73. package/src/notifier.js +16 -13
  74. package/src/predicates.js +43 -23
  75. package/src/queue.js +133 -40
  76. package/src/rateLimiter.js +59 -18
  77. package/src/react-native/logger.js +1 -1
  78. package/src/react-native/rollbar.js +59 -55
  79. package/src/react-native/transforms.js +13 -9
  80. package/src/react-native/transport.js +44 -34
  81. package/src/rollbar.js +72 -21
  82. package/src/scrub.js +0 -1
  83. package/src/server/locals.js +69 -39
  84. package/src/server/logger.js +4 -4
  85. package/src/server/parser.js +72 -47
  86. package/src/server/rollbar.js +135 -56
  87. package/src/server/sourceMap/stackTrace.js +33 -18
  88. package/src/server/telemetry/urlHelpers.js +9 -11
  89. package/src/server/telemetry.js +68 -45
  90. package/src/server/transforms.js +37 -21
  91. package/src/server/transport.js +62 -32
  92. package/src/telemetry.js +162 -33
  93. package/src/tracing/context.js +24 -0
  94. package/src/tracing/contextManager.js +37 -0
  95. package/src/tracing/defaults.js +7 -0
  96. package/src/tracing/exporter.js +188 -0
  97. package/src/tracing/hrtime.js +98 -0
  98. package/src/tracing/id.js +24 -0
  99. package/src/tracing/session.js +55 -0
  100. package/src/tracing/span.js +92 -0
  101. package/src/tracing/spanProcessor.js +15 -0
  102. package/src/tracing/tracer.js +46 -0
  103. package/src/tracing/tracing.js +89 -0
  104. package/src/transforms.js +33 -21
  105. package/src/truncation.js +8 -5
  106. package/src/utility/headers.js +43 -43
  107. package/src/utility/replace.js +9 -0
  108. package/src/utility/traverse.js +1 -1
  109. package/src/utility.js +123 -52
  110. package/test/api.test.js +88 -41
  111. package/test/apiUtility.test.js +48 -50
  112. package/test/browser.core.test.js +142 -141
  113. package/test/browser.domUtility.test.js +53 -36
  114. package/test/browser.predicates.test.js +14 -14
  115. package/test/browser.replay.recorder.test.js +416 -0
  116. package/test/browser.rollbar.test.js +655 -515
  117. package/test/browser.telemetry.test.js +46 -39
  118. package/test/browser.transforms.test.js +164 -139
  119. package/test/browser.transport.test.js +59 -50
  120. package/test/browser.url.test.js +13 -12
  121. package/test/fixtures/locals.fixtures.js +245 -126
  122. package/test/fixtures/replay/index.js +20 -0
  123. package/test/fixtures/replay/payloads.fixtures.js +229 -0
  124. package/test/fixtures/replay/rrwebEvents.fixtures.js +251 -0
  125. package/test/fixtures/replay/rrwebSyntheticEvents.fixtures.js +328 -0
  126. package/test/notifier.test.js +91 -79
  127. package/test/predicates.test.js +261 -215
  128. package/test/queue.test.js +231 -215
  129. package/test/rateLimiter.test.js +51 -43
  130. package/test/react-native.rollbar.test.js +150 -116
  131. package/test/react-native.transforms.test.js +23 -25
  132. package/test/react-native.transport.test.js +26 -14
  133. package/test/replay/index.js +2 -0
  134. package/test/replay/integration/api.spans.test.js +136 -0
  135. package/test/replay/integration/e2e.test.js +228 -0
  136. package/test/replay/integration/index.js +9 -0
  137. package/test/replay/integration/queue.replayMap.test.js +332 -0
  138. package/test/replay/integration/replayMap.test.js +163 -0
  139. package/test/replay/integration/sessionRecording.test.js +390 -0
  140. package/test/replay/unit/api.postSpans.test.js +150 -0
  141. package/test/replay/unit/index.js +7 -0
  142. package/test/replay/unit/queue.replayMap.test.js +225 -0
  143. package/test/replay/unit/replayMap.test.js +348 -0
  144. package/test/replay/util/index.js +5 -0
  145. package/test/replay/util/mockRecordFn.js +80 -0
  146. package/test/server.lambda.mocha.test.mjs +172 -0
  147. package/test/server.locals.constructor.mocha.test.mjs +80 -0
  148. package/test/server.locals.error-handling.mocha.test.mjs +387 -0
  149. package/test/server.locals.merge.mocha.test.mjs +267 -0
  150. package/test/server.locals.test-utils.mjs +114 -0
  151. package/test/server.parser.mocha.test.mjs +87 -0
  152. package/test/server.predicates.mocha.test.mjs +63 -0
  153. package/test/server.rollbar.constructor.mocha.test.mjs +199 -0
  154. package/test/server.rollbar.handlers.mocha.test.mjs +253 -0
  155. package/test/server.rollbar.logging.mocha.test.mjs +326 -0
  156. package/test/server.rollbar.misc.mocha.test.mjs +44 -0
  157. package/test/server.rollbar.test-utils.mjs +57 -0
  158. package/test/server.telemetry.mocha.test.mjs +377 -0
  159. package/test/server.transforms.data.mocha.test.mjs +163 -0
  160. package/test/server.transforms.error.mocha.test.mjs +199 -0
  161. package/test/server.transforms.request.mocha.test.mjs +208 -0
  162. package/test/server.transforms.scrub.mocha.test.mjs +140 -0
  163. package/test/server.transforms.sourcemaps.mocha.test.mjs +122 -0
  164. package/test/server.transforms.test-utils.mjs +62 -0
  165. package/test/server.transport.mocha.test.mjs +269 -0
  166. package/test/telemetry.test.js +178 -38
  167. package/test/tracing/contextManager.test.js +28 -0
  168. package/test/tracing/exporter.toPayload.test.js +400 -0
  169. package/test/tracing/id.test.js +24 -0
  170. package/test/tracing/span.test.js +183 -0
  171. package/test/tracing/spanProcessor.test.js +73 -0
  172. package/test/tracing/tracing.test.js +105 -0
  173. package/test/transforms.test.js +70 -68
  174. package/test/truncation.test.js +57 -55
  175. package/test/utility.test.js +310 -228
  176. package/webpack.config.js +36 -70
  177. package/.eslintignore +0 -7
  178. package/.gitmodules +0 -3
  179. package/test/server.lambda.test.js +0 -177
  180. package/test/server.locals.test.js +0 -841
  181. package/test/server.parser.test.js +0 -72
  182. package/test/server.predicates.test.js +0 -89
  183. package/test/server.rollbar.test.js +0 -676
  184. package/test/server.telemetry.test.js +0 -318
  185. package/test/server.transforms.test.js +0 -1099
  186. package/test/server.transport.test.js +0 -201
@@ -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() { return shimId; };
26
- if ((typeof window !== 'undefined') && window._rollbarShims) {
27
- window._rollbarShims[shimId] = {handler: wrap, messages: []};
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('DOMContentLoaded', handler.captureDomContentLoaded.bind(handler));
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(window, document, immediate, options, callback) {
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, queue, obj, args, cb;
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 (!done && (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete')) {
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() { return context || {}; };
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, obj, mainHandler;
15
+ var i = 0,
16
+ obj,
17
+ mainHandler;
16
18
  while ((obj = window._rollbarShims[i++])) {
17
19
  if (!mainHandler) {
18
20
  mainHandler = obj.handler;