@openreplay/tracker 14.0.9-beta.1 → 14.0.9

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/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ # 14.0.9
2
+
3
+ - more stable crossdomain iframe tracking (refactored child/parent process discovery)
4
+ - checks for bad start error
5
+
1
6
  # 14.0.8
2
7
 
3
8
  - use separate library to handle network requests ([@openreplay/network-proxy](https://www.npmjs.com/package/@openreplay/network-proxy))
package/cjs/app/index.js CHANGED
@@ -96,7 +96,7 @@ class App {
96
96
  this.stopCallbacks = [];
97
97
  this.commitCallbacks = [];
98
98
  this.activityState = ActivityState.NotActive;
99
- this.version = '14.0.9-beta.1'; // TODO: version compatability check inside each plugin.
99
+ this.version = '14.0.9'; // TODO: version compatability check inside each plugin.
100
100
  this.socketMode = false;
101
101
  this.compressionThreshold = 24 * 1000;
102
102
  this.bc = null;
@@ -126,6 +126,8 @@ class App {
126
126
  * */
127
127
  let crossdomainFrameCount = 0;
128
128
  const catchIframeMessage = (event) => {
129
+ if (!this.active())
130
+ return;
129
131
  const { data } = event;
130
132
  if (!data)
131
133
  return;
@@ -211,9 +213,6 @@ class App {
211
213
  }
212
214
  };
213
215
  window.addEventListener('message', catchIframeMessage);
214
- this.attachStopCallback(() => {
215
- window.removeEventListener('message', catchIframeMessage);
216
- });
217
216
  }
218
217
  };
219
218
  this.signalIframeTracker = () => {
@@ -353,6 +352,8 @@ class App {
353
352
  this.initWorker();
354
353
  const thisTab = this.session.getTabId();
355
354
  const catchParentMessage = (event) => {
355
+ if (!this.active())
356
+ return;
356
357
  const { data } = event;
357
358
  if (!data)
358
359
  return;
@@ -369,9 +370,6 @@ class App {
369
370
  }
370
371
  };
371
372
  window.addEventListener('message', catchParentMessage);
372
- this.attachStopCallback(() => {
373
- window.removeEventListener('message', catchParentMessage);
374
- });
375
373
  if (this.bc !== null) {
376
374
  this.bc.postMessage({
377
375
  line: proto.ask,
@@ -573,7 +571,6 @@ class App {
573
571
  (0, utils_js_1.requestIdleCb)(() => {
574
572
  this.messages.unshift((0, messages_gen_js_1.TabData)(this.session.getTabId()));
575
573
  this.messages.unshift((0, messages_gen_js_1.Timestamp)(this.timestamp()));
576
- // why I need to add opt chaining?
577
574
  this.worker?.postMessage(this.messages);
578
575
  this.commitCallbacks.forEach((cb) => cb(this.messages));
579
576
  this.messages.length = 0;
@@ -1187,6 +1184,11 @@ class App {
1187
1184
  catch (reason) {
1188
1185
  this.stop();
1189
1186
  this.session.reset();
1187
+ if (!reason) {
1188
+ console.error('Unknown error during start');
1189
+ this.signalError('Unknown error', []);
1190
+ return UnsuccessfulStart('Unknown error');
1191
+ }
1190
1192
  if (reason === CANCELED) {
1191
1193
  this.signalError(CANCELED, []);
1192
1194
  return UnsuccessfulStart(CANCELED);
@@ -1304,6 +1306,7 @@ class App {
1304
1306
  this.worker.postMessage('stop');
1305
1307
  }
1306
1308
  this.canvasRecorder?.clear();
1309
+ this.messages.length = 0;
1307
1310
  }
1308
1311
  finally {
1309
1312
  this.activityState = ActivityState.NotActive;
package/cjs/index.js CHANGED
@@ -98,7 +98,7 @@ class API {
98
98
  const orig = this.options.ingestPoint || index_js_1.DEFAULT_INGEST_POINT;
99
99
  req.open('POST', orig + '/v1/web/not-started');
100
100
  req.send(JSON.stringify({
101
- trackerVersion: '14.0.9-beta.1',
101
+ trackerVersion: '14.0.9',
102
102
  projectKey: this.options.projectKey,
103
103
  doNotTrack,
104
104
  reason: missingApi.length ? `missing api: ${missingApi.join(',')}` : reason,
package/lib/app/index.js CHANGED
@@ -67,7 +67,7 @@ export default class App {
67
67
  this.stopCallbacks = [];
68
68
  this.commitCallbacks = [];
69
69
  this.activityState = ActivityState.NotActive;
70
- this.version = '14.0.9-beta.1'; // TODO: version compatability check inside each plugin.
70
+ this.version = '14.0.9'; // TODO: version compatability check inside each plugin.
71
71
  this.socketMode = false;
72
72
  this.compressionThreshold = 24 * 1000;
73
73
  this.bc = null;
@@ -97,6 +97,8 @@ export default class App {
97
97
  * */
98
98
  let crossdomainFrameCount = 0;
99
99
  const catchIframeMessage = (event) => {
100
+ if (!this.active())
101
+ return;
100
102
  const { data } = event;
101
103
  if (!data)
102
104
  return;
@@ -182,9 +184,6 @@ export default class App {
182
184
  }
183
185
  };
184
186
  window.addEventListener('message', catchIframeMessage);
185
- this.attachStopCallback(() => {
186
- window.removeEventListener('message', catchIframeMessage);
187
- });
188
187
  }
189
188
  };
190
189
  this.signalIframeTracker = () => {
@@ -324,6 +323,8 @@ export default class App {
324
323
  this.initWorker();
325
324
  const thisTab = this.session.getTabId();
326
325
  const catchParentMessage = (event) => {
326
+ if (!this.active())
327
+ return;
327
328
  const { data } = event;
328
329
  if (!data)
329
330
  return;
@@ -340,9 +341,6 @@ export default class App {
340
341
  }
341
342
  };
342
343
  window.addEventListener('message', catchParentMessage);
343
- this.attachStopCallback(() => {
344
- window.removeEventListener('message', catchParentMessage);
345
- });
346
344
  if (this.bc !== null) {
347
345
  this.bc.postMessage({
348
346
  line: proto.ask,
@@ -544,7 +542,6 @@ export default class App {
544
542
  requestIdleCb(() => {
545
543
  this.messages.unshift(TabData(this.session.getTabId()));
546
544
  this.messages.unshift(Timestamp(this.timestamp()));
547
- // why I need to add opt chaining?
548
545
  this.worker?.postMessage(this.messages);
549
546
  this.commitCallbacks.forEach((cb) => cb(this.messages));
550
547
  this.messages.length = 0;
@@ -1158,6 +1155,11 @@ export default class App {
1158
1155
  catch (reason) {
1159
1156
  this.stop();
1160
1157
  this.session.reset();
1158
+ if (!reason) {
1159
+ console.error('Unknown error during start');
1160
+ this.signalError('Unknown error', []);
1161
+ return UnsuccessfulStart('Unknown error');
1162
+ }
1161
1163
  if (reason === CANCELED) {
1162
1164
  this.signalError(CANCELED, []);
1163
1165
  return UnsuccessfulStart(CANCELED);
@@ -1275,6 +1277,7 @@ export default class App {
1275
1277
  this.worker.postMessage('stop');
1276
1278
  }
1277
1279
  this.canvasRecorder?.clear();
1280
+ this.messages.length = 0;
1278
1281
  }
1279
1282
  finally {
1280
1283
  this.activityState = ActivityState.NotActive;
package/lib/index.js CHANGED
@@ -67,7 +67,7 @@ export default class API {
67
67
  const orig = this.options.ingestPoint || DEFAULT_INGEST_POINT;
68
68
  req.open('POST', orig + '/v1/web/not-started');
69
69
  req.send(JSON.stringify({
70
- trackerVersion: '14.0.9-beta.1',
70
+ trackerVersion: '14.0.9',
71
71
  projectKey: this.options.projectKey,
72
72
  doNotTrack,
73
73
  reason: missingApi.length ? `missing api: ${missingApi.join(',')}` : reason,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@openreplay/tracker",
3
3
  "description": "The OpenReplay tracker main package",
4
- "version": "14.0.9-beta.1",
4
+ "version": "14.0.9",
5
5
  "keywords": [
6
6
  "logging",
7
7
  "replay"