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
@@ -3,10 +3,10 @@
3
3
  /* globals it */
4
4
  /* globals sinon */
5
5
 
6
- var RateLimiter = require('../src/rateLimiter');
6
+ import RateLimiter from '../src/rateLimiter.js';
7
7
 
8
- describe('RateLimiter()', function() {
9
- it('should have all of the expected methods', function(done) {
8
+ describe('RateLimiter()', function () {
9
+ it('should have all of the expected methods', function (done) {
10
10
  var options = {};
11
11
  var rateLimiter = new RateLimiter(options);
12
12
  expect(rateLimiter).to.have.property('configureGlobal');
@@ -15,19 +15,27 @@ describe('RateLimiter()', function() {
15
15
  done();
16
16
  });
17
17
 
18
- it('should have global properties', function(done) {
18
+ it('should have global properties', function (done) {
19
19
  var options = {};
20
20
  var rateLimiter = new RateLimiter(options);
21
21
  expect(RateLimiter).to.have.property('globalSettings');
22
- var now = (new Date()).getTime();
23
- expect(RateLimiter.globalSettings.startTime).to.be.within(now-1000, now+1000);
22
+ var now = new Date().getTime();
23
+ expect(RateLimiter.globalSettings.startTime).to.be.within(
24
+ now - 1000,
25
+ now + 1000,
26
+ );
24
27
  expect(RateLimiter.globalSettings.maxItems).to.not.be.ok();
25
28
 
26
29
  done();
27
30
  });
28
31
 
29
- it('should set the global options', function(done) {
30
- var options = {startTime: 1, maxItems: 50, itemsPerMinute: 102, fake: 'stuff'};
32
+ it('should set the global options', function (done) {
33
+ var options = {
34
+ startTime: 1,
35
+ maxItems: 50,
36
+ itemsPerMinute: 102,
37
+ fake: 'stuff',
38
+ };
31
39
  var rateLimiter = new RateLimiter(options);
32
40
  expect(RateLimiter.globalSettings.startTime).to.be.eql(1);
33
41
  expect(RateLimiter.globalSettings.maxItems).to.be.eql(50);
@@ -38,27 +46,27 @@ describe('RateLimiter()', function() {
38
46
  });
39
47
  });
40
48
 
41
- describe('shouldSend', function() {
42
- it('should say to send if item says ignore', function(done) {
43
- var now = (new Date()).getTime();
44
- var options = {startTime: now, maxItems: 4, itemsPerMinute: 2};
49
+ describe('shouldSend', function () {
50
+ it('should say to send if item says ignore', function (done) {
51
+ var now = new Date().getTime();
52
+ var options = { startTime: now, maxItems: 4, itemsPerMinute: 2 };
45
53
  var rateLimiter = new RateLimiter(options);
46
54
 
47
- var item = {ignoreRateLimit: true};
55
+ var item = { ignoreRateLimit: true };
48
56
  var result = rateLimiter.shouldSend(item);
49
57
  expect(result.shouldSend).to.be.ok();
50
58
 
51
59
  done();
52
60
  });
53
61
 
54
- it('should say not to send if over the per minute limit', function(done) {
55
- var now = (new Date()).getTime();
56
- var options = {startTime: now, maxItems: 4, itemsPerMinute: 2};
62
+ it('should say not to send if over the per minute limit', function (done) {
63
+ var now = new Date().getTime();
64
+ var options = { startTime: now, maxItems: 4, itemsPerMinute: 2 };
57
65
  var rateLimiter = new RateLimiter(options);
58
66
 
59
- var i1 = {a: 1};
60
- var i2 = {a: 2};
61
- var i3 = {a: 3};
67
+ var i1 = { a: 1 };
68
+ var i2 = { a: 2 };
69
+ var i3 = { a: 3 };
62
70
  var result1 = rateLimiter.shouldSend(i1, now + 1);
63
71
  var result2 = rateLimiter.shouldSend(i2, now + 2);
64
72
  var result3 = rateLimiter.shouldSend(i3, now + 3);
@@ -73,14 +81,14 @@ describe('shouldSend', function() {
73
81
  done();
74
82
  });
75
83
 
76
- it('should reset the per minute limit', function(done) {
77
- var now = (new Date()).getTime();
78
- var options = {startTime: now, maxItems: 4, itemsPerMinute: 2};
84
+ it('should reset the per minute limit', function (done) {
85
+ var now = new Date().getTime();
86
+ var options = { startTime: now, maxItems: 4, itemsPerMinute: 2 };
79
87
  var rateLimiter = new RateLimiter(options);
80
88
 
81
- var i1 = {a: 1};
82
- var i2 = {a: 2};
83
- var i3 = {a: 3};
89
+ var i1 = { a: 1 };
90
+ var i2 = { a: 2 };
91
+ var i3 = { a: 3 };
84
92
  var result1 = rateLimiter.shouldSend(i1, now + 1);
85
93
  var result2 = rateLimiter.shouldSend(i2, now + 2);
86
94
  var result3 = rateLimiter.shouldSend(i3, now + 60000 + 1);
@@ -94,15 +102,15 @@ describe('shouldSend', function() {
94
102
  done();
95
103
  });
96
104
 
97
- it('should not send and give us a payload when the maxItems limit is reached', function(done) {
98
- var now = (new Date()).getTime();
99
- var options = {startTime: now, maxItems: 3, itemsPerMinute: 2};
105
+ it('should not send and give us a payload when the maxItems limit is reached', function (done) {
106
+ var now = new Date().getTime();
107
+ var options = { startTime: now, maxItems: 3, itemsPerMinute: 2 };
100
108
  var rateLimiter = new RateLimiter(options);
101
109
 
102
- var i1 = {a: 1};
103
- var i2 = {a: 2};
104
- var i3 = {a: 3};
105
- var i4 = {a: 4};
110
+ var i1 = { a: 1 };
111
+ var i2 = { a: 2 };
112
+ var i3 = { a: 3 };
113
+ var i4 = { a: 4 };
106
114
  var result1 = rateLimiter.shouldSend(i1, now + 1);
107
115
  var result2 = rateLimiter.shouldSend(i2, now + 2);
108
116
  var result3 = rateLimiter.shouldSend(i3, now + 60000 + 1);
@@ -116,21 +124,23 @@ describe('shouldSend', function() {
116
124
  expect(result4.shouldSend).to.not.be.ok();
117
125
  expect(result4.error).to.not.be.ok();
118
126
  expect(result4.payload).to.be.ok();
119
- expect(result4.payload.body.message.extra.maxItems).to.eql(options.maxItems);
127
+ expect(result4.payload.body.message.extra.maxItems).to.eql(
128
+ options.maxItems,
129
+ );
120
130
 
121
131
  done();
122
132
  });
123
133
 
124
- it('should not send and give an error when over maxItems limit', function(done) {
125
- var now = (new Date()).getTime();
126
- var options = {startTime: now, maxItems: 3, itemsPerMinute: 2};
134
+ it('should not send and give an error when over maxItems limit', function (done) {
135
+ var now = new Date().getTime();
136
+ var options = { startTime: now, maxItems: 3, itemsPerMinute: 2 };
127
137
  var rateLimiter = new RateLimiter(options);
128
138
 
129
- var i1 = {a: 1};
130
- var i2 = {a: 2};
131
- var i3 = {a: 3};
132
- var i4 = {a: 4};
133
- var i5 = {a: 5};
139
+ var i1 = { a: 1 };
140
+ var i2 = { a: 2 };
141
+ var i3 = { a: 3 };
142
+ var i4 = { a: 4 };
143
+ var i5 = { a: 5 };
134
144
  var result1 = rateLimiter.shouldSend(i1, now + 1);
135
145
  var result2 = rateLimiter.shouldSend(i2, now + 2);
136
146
  var result3 = rateLimiter.shouldSend(i3, now + 60000 + 1);
@@ -154,6 +164,4 @@ describe('shouldSend', function() {
154
164
 
155
165
  done();
156
166
  });
157
-
158
167
  });
159
-