@openreplay/tracker 11.0.5 → 11.0.6

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,7 @@
1
+ # 11.0.6
2
+
3
+ - fix blob generation for canvas capture (Cannot read properties of null (reading '1'))
4
+
1
5
  # 11.0.5
2
6
 
3
7
  - add method to restart canvas tracking (in case of context recreation)
package/cjs/app/canvas.js CHANGED
@@ -63,8 +63,10 @@ class CanvasRecorder {
63
63
  }
64
64
  const formData = new FormData();
65
65
  images.forEach((snapshot) => {
66
- const blob = dataUrlToBlob(snapshot.data)[0];
67
- formData.append('snapshot', blob, `${createdAt}_${canvasId}_${snapshot.id}.jpeg`);
66
+ const blob = dataUrlToBlob(snapshot.data);
67
+ if (!blob)
68
+ return;
69
+ formData.append('snapshot', blob[0], `${createdAt}_${canvasId}_${snapshot.id}.jpeg`);
68
70
  if (this.options.isDebug) {
69
71
  saveImageData(snapshot.data, `${createdAt}_${canvasId}_${snapshot.id}.jpeg`);
70
72
  }
@@ -99,8 +101,10 @@ function captureSnapshot(canvas, quality = 'medium') {
99
101
  }
100
102
  function dataUrlToBlob(dataUrl) {
101
103
  const [header, base64] = dataUrl.split(',');
102
- // @ts-ignore
103
- const mime = header.match(/:(.*?);/)[1];
104
+ const encParts = header.match(/:(.*?);/);
105
+ if (!encParts)
106
+ return null;
107
+ const mime = encParts[1];
104
108
  const blobStr = atob(base64);
105
109
  let n = blobStr.length;
106
110
  const u8arr = new Uint8Array(n);
package/cjs/app/index.js CHANGED
@@ -42,7 +42,7 @@ class App {
42
42
  this.stopCallbacks = [];
43
43
  this.commitCallbacks = [];
44
44
  this.activityState = ActivityState.NotActive;
45
- this.version = '11.0.5'; // TODO: version compatability check inside each plugin.
45
+ this.version = '11.0.6'; // TODO: version compatability check inside each plugin.
46
46
  this.compressionThreshold = 24 * 1000;
47
47
  this.restartAttempts = 0;
48
48
  this.bc = null;
package/cjs/index.js CHANGED
@@ -168,7 +168,7 @@ class API {
168
168
  // no-cors issue only with text/plain or not-set Content-Type
169
169
  // req.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
170
170
  req.send(JSON.stringify({
171
- trackerVersion: '11.0.5',
171
+ trackerVersion: '11.0.6',
172
172
  projectKey: options.projectKey,
173
173
  doNotTrack,
174
174
  // TODO: add precise reason (an exact API missing)
package/lib/app/canvas.js CHANGED
@@ -61,8 +61,10 @@ class CanvasRecorder {
61
61
  }
62
62
  const formData = new FormData();
63
63
  images.forEach((snapshot) => {
64
- const blob = dataUrlToBlob(snapshot.data)[0];
65
- formData.append('snapshot', blob, `${createdAt}_${canvasId}_${snapshot.id}.jpeg`);
64
+ const blob = dataUrlToBlob(snapshot.data);
65
+ if (!blob)
66
+ return;
67
+ formData.append('snapshot', blob[0], `${createdAt}_${canvasId}_${snapshot.id}.jpeg`);
66
68
  if (this.options.isDebug) {
67
69
  saveImageData(snapshot.data, `${createdAt}_${canvasId}_${snapshot.id}.jpeg`);
68
70
  }
@@ -97,8 +99,10 @@ function captureSnapshot(canvas, quality = 'medium') {
97
99
  }
98
100
  function dataUrlToBlob(dataUrl) {
99
101
  const [header, base64] = dataUrl.split(',');
100
- // @ts-ignore
101
- const mime = header.match(/:(.*?);/)[1];
102
+ const encParts = header.match(/:(.*?);/);
103
+ if (!encParts)
104
+ return null;
105
+ const mime = encParts[1];
102
106
  const blobStr = atob(base64);
103
107
  let n = blobStr.length;
104
108
  const u8arr = new Uint8Array(n);
package/lib/app/index.js CHANGED
@@ -39,7 +39,7 @@ export default class App {
39
39
  this.stopCallbacks = [];
40
40
  this.commitCallbacks = [];
41
41
  this.activityState = ActivityState.NotActive;
42
- this.version = '11.0.5'; // TODO: version compatability check inside each plugin.
42
+ this.version = '11.0.6'; // TODO: version compatability check inside each plugin.
43
43
  this.compressionThreshold = 24 * 1000;
44
44
  this.restartAttempts = 0;
45
45
  this.bc = null;
package/lib/index.js CHANGED
@@ -163,7 +163,7 @@ export default class API {
163
163
  // no-cors issue only with text/plain or not-set Content-Type
164
164
  // req.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
165
165
  req.send(JSON.stringify({
166
- trackerVersion: '11.0.5',
166
+ trackerVersion: '11.0.6',
167
167
  projectKey: options.projectKey,
168
168
  doNotTrack,
169
169
  // TODO: add precise reason (an exact API missing)
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": "11.0.5",
4
+ "version": "11.0.6",
5
5
  "keywords": [
6
6
  "logging",
7
7
  "replay"