@openreplay/tracker 9.0.0 → 9.0.2

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 (74) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/cjs/app/index.js +1 -1
  3. package/cjs/index.js +1 -1
  4. package/cjs/modules/Network/fetchProxy.d.ts +1 -1
  5. package/cjs/modules/Network/fetchProxy.js +7 -1
  6. package/cjs/modules/Network/index.js +14 -2
  7. package/cjs/modules/Network/xhrProxy.js +3 -0
  8. package/lib/app/index.js +1 -1
  9. package/lib/index.js +1 -1
  10. package/lib/modules/Network/fetchProxy.d.ts +1 -1
  11. package/lib/modules/Network/fetchProxy.js +7 -1
  12. package/lib/modules/Network/index.js +14 -2
  13. package/lib/modules/Network/xhrProxy.js +3 -0
  14. package/package.json +1 -1
  15. package/coverage/clover.xml +0 -2973
  16. package/coverage/coverage-final.json +0 -44
  17. package/coverage/lcov-report/base.css +0 -224
  18. package/coverage/lcov-report/block-navigation.js +0 -87
  19. package/coverage/lcov-report/favicon.png +0 -0
  20. package/coverage/lcov-report/index.html +0 -191
  21. package/coverage/lcov-report/main/app/guards.ts.html +0 -229
  22. package/coverage/lcov-report/main/app/index.html +0 -206
  23. package/coverage/lcov-report/main/app/index.ts.html +0 -2149
  24. package/coverage/lcov-report/main/app/logger.ts.html +0 -277
  25. package/coverage/lcov-report/main/app/messages.gen.ts.html +0 -2752
  26. package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +0 -148
  27. package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +0 -289
  28. package/coverage/lcov-report/main/app/observer/index.html +0 -161
  29. package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +0 -142
  30. package/coverage/lcov-report/main/app/observer/top_observer.ts.html +0 -535
  31. package/coverage/lcov-report/main/app/sanitizer.ts.html +0 -394
  32. package/coverage/lcov-report/main/app/session.ts.html +0 -601
  33. package/coverage/lcov-report/main/app/ticker.ts.html +0 -250
  34. package/coverage/lcov-report/main/index.html +0 -131
  35. package/coverage/lcov-report/main/index.ts.html +0 -1144
  36. package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +0 -949
  37. package/coverage/lcov-report/main/modules/Network/index.html +0 -176
  38. package/coverage/lcov-report/main/modules/Network/index.ts.html +0 -169
  39. package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +0 -382
  40. package/coverage/lcov-report/main/modules/Network/utils.ts.html +0 -700
  41. package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +0 -823
  42. package/coverage/lcov-report/main/modules/attributeSender.ts.html +0 -217
  43. package/coverage/lcov-report/main/modules/axiosSpy.ts.html +0 -700
  44. package/coverage/lcov-report/main/modules/connection.ts.html +0 -160
  45. package/coverage/lcov-report/main/modules/console.ts.html +0 -535
  46. package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +0 -559
  47. package/coverage/lcov-report/main/modules/cssrules.ts.html +0 -418
  48. package/coverage/lcov-report/main/modules/exception.ts.html +0 -385
  49. package/coverage/lcov-report/main/modules/featureFlags.ts.html +0 -415
  50. package/coverage/lcov-report/main/modules/focus.ts.html +0 -220
  51. package/coverage/lcov-report/main/modules/fonts.ts.html +0 -289
  52. package/coverage/lcov-report/main/modules/img.ts.html +0 -433
  53. package/coverage/lcov-report/main/modules/index.html +0 -401
  54. package/coverage/lcov-report/main/modules/input.ts.html +0 -811
  55. package/coverage/lcov-report/main/modules/mouse.ts.html +0 -826
  56. package/coverage/lcov-report/main/modules/network.ts.html +0 -1129
  57. package/coverage/lcov-report/main/modules/performance.ts.html +0 -367
  58. package/coverage/lcov-report/main/modules/scroll.ts.html +0 -364
  59. package/coverage/lcov-report/main/modules/selection.ts.html +0 -202
  60. package/coverage/lcov-report/main/modules/tabs.ts.html +0 -124
  61. package/coverage/lcov-report/main/modules/timing.ts.html +0 -841
  62. package/coverage/lcov-report/main/modules/viewport.ts.html +0 -250
  63. package/coverage/lcov-report/main/utils.ts.html +0 -406
  64. package/coverage/lcov-report/prettify.css +0 -1
  65. package/coverage/lcov-report/prettify.js +0 -2
  66. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  67. package/coverage/lcov-report/sorter.js +0 -196
  68. package/coverage/lcov-report/webworker/BatchWriter.ts.html +0 -481
  69. package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +0 -949
  70. package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +0 -436
  71. package/coverage/lcov-report/webworker/QueueSender.ts.html +0 -505
  72. package/coverage/lcov-report/webworker/index.html +0 -176
  73. package/coverage/lcov-report/webworker/index.ts.html +0 -616
  74. package/coverage/lcov.info +0 -5854
package/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ # 9.0.2
2
+
3
+ - fix "setSessionTokenHeader" method
4
+
5
+ # 9.0.1
6
+
7
+ - Warning about SSR mode
8
+ - Prevent crashes due to network proxy in SSR
9
+
1
10
  # 9.0.0
2
11
 
3
12
  - Option to disable string dictionary `{disableStringDict: true}` in Tracker constructor
package/cjs/app/index.js CHANGED
@@ -35,7 +35,7 @@ class App {
35
35
  this.stopCallbacks = [];
36
36
  this.commitCallbacks = [];
37
37
  this.activityState = ActivityState.NotActive;
38
- this.version = '9.0.0'; // TODO: version compatability check inside each plugin.
38
+ this.version = '9.0.2'; // TODO: version compatability check inside each plugin.
39
39
  this.compressionThreshold = 24 * 1000;
40
40
  this.restartAttempts = 0;
41
41
  this.bc = null;
package/cjs/index.js CHANGED
@@ -153,7 +153,7 @@ class API {
153
153
  // no-cors issue only with text/plain or not-set Content-Type
154
154
  // req.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
155
155
  req.send(JSON.stringify({
156
- trackerVersion: '9.0.0',
156
+ trackerVersion: '9.0.2',
157
157
  projectKey: options.projectKey,
158
158
  doNotTrack,
159
159
  // TODO: add precise reason (an exact API missing)
@@ -23,7 +23,7 @@ export declare class FetchProxyHandler<T extends typeof fetch> implements ProxyH
23
23
  private readonly sendMessage;
24
24
  private readonly isServiceUrl;
25
25
  constructor(ignoredHeaders: boolean | string[], setSessionTokenHeader: (cb: (name: string, value: string) => void) => void, sanitize: (data: RequestResponseData) => RequestResponseData, sendMessage: (item: NetworkRequest) => void, isServiceUrl: (url: string) => boolean);
26
- apply(target: T, thisArg: typeof window, argsList: [RequestInfo | URL, RequestInit]): any;
26
+ apply(target: T, _: typeof window, argsList: [RequestInfo | URL, RequestInit]): any;
27
27
  protected beforeFetch(item: NetworkMessage, input: RequestInfo, init?: RequestInit): void;
28
28
  protected afterFetch(item: NetworkMessage): (resp: Response) => Response;
29
29
  protected handleResponseBody(resp: Response, item: NetworkMessage): Promise<ArrayBuffer> | Promise<string>;
@@ -73,8 +73,10 @@ class ResponseProxyHandler {
73
73
  readerReceivedValue = new Uint8Array(result.value);
74
74
  }
75
75
  else {
76
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
76
77
  const newValue = new Uint8Array(readerReceivedValue.length + result.value.length);
77
78
  newValue.set(readerReceivedValue);
79
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
78
80
  newValue.set(result.value, readerReceivedValue.length);
79
81
  readerReceivedValue = newValue;
80
82
  }
@@ -111,7 +113,7 @@ class FetchProxyHandler {
111
113
  this.sendMessage = sendMessage;
112
114
  this.isServiceUrl = isServiceUrl;
113
115
  }
114
- apply(target, thisArg, argsList) {
116
+ apply(target, _, argsList) {
115
117
  const input = argsList[0];
116
118
  const init = argsList[1];
117
119
  const isORUrl = input instanceof URL || typeof input === 'string'
@@ -122,6 +124,10 @@ class FetchProxyHandler {
122
124
  }
123
125
  const item = new networkMessage_js_1.default(this.ignoredHeaders, this.setSessionTokenHeader, this.sanitize);
124
126
  this.beforeFetch(item, input, init);
127
+ this.setSessionTokenHeader((name, value) => {
128
+ var _a;
129
+ argsList[1] = Object.assign(Object.assign({}, argsList[1]), { headers: Object.assign(Object.assign({}, (_a = argsList[1]) === null || _a === void 0 ? void 0 : _a.headers), { [name]: value }) });
130
+ });
125
131
  return target.apply(window, argsList)
126
132
  .then(this.afterFetch(item))
127
133
  .catch((e) => {
@@ -2,8 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const fetchProxy_js_1 = require("./fetchProxy.js");
4
4
  const xhrProxy_js_1 = require("./xhrProxy.js");
5
+ const getWarning = (api) => console.warn(`Openreplay: Can't find ${api} in global context.
6
+ If you're using serverside rendering in your app, make sure that tracker is loaded dynamically, otherwise ${api} won't be tracked.`);
5
7
  function setProxy(context, ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl) {
6
- context.XMLHttpRequest = xhrProxy_js_1.default.create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl);
7
- context.fetch = fetchProxy_js_1.default.create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl);
8
+ if (context.XMLHttpRequest) {
9
+ context.XMLHttpRequest = xhrProxy_js_1.default.create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl);
10
+ }
11
+ else {
12
+ getWarning('XMLHttpRequest');
13
+ }
14
+ if (context.fetch) {
15
+ context.fetch = fetchProxy_js_1.default.create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl);
16
+ }
17
+ else {
18
+ getWarning('fetch');
19
+ }
8
20
  }
9
21
  exports.default = setProxy;
@@ -35,6 +35,9 @@ class XHRProxyHandler {
35
35
  case 'open':
36
36
  return this.getOpen(target);
37
37
  case 'send':
38
+ this.setSessionTokenHeader((name, value) => {
39
+ target.setRequestHeader(name, value);
40
+ });
38
41
  return this.getSend(target);
39
42
  case 'setRequestHeader':
40
43
  return this.getSetRequestHeader(target);
package/lib/app/index.js CHANGED
@@ -32,7 +32,7 @@ export default class App {
32
32
  this.stopCallbacks = [];
33
33
  this.commitCallbacks = [];
34
34
  this.activityState = ActivityState.NotActive;
35
- this.version = '9.0.0'; // TODO: version compatability check inside each plugin.
35
+ this.version = '9.0.2'; // TODO: version compatability check inside each plugin.
36
36
  this.compressionThreshold = 24 * 1000;
37
37
  this.restartAttempts = 0;
38
38
  this.bc = null;
package/lib/index.js CHANGED
@@ -148,7 +148,7 @@ export default class API {
148
148
  // no-cors issue only with text/plain or not-set Content-Type
149
149
  // req.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
150
150
  req.send(JSON.stringify({
151
- trackerVersion: '9.0.0',
151
+ trackerVersion: '9.0.2',
152
152
  projectKey: options.projectKey,
153
153
  doNotTrack,
154
154
  // TODO: add precise reason (an exact API missing)
@@ -23,7 +23,7 @@ export declare class FetchProxyHandler<T extends typeof fetch> implements ProxyH
23
23
  private readonly sendMessage;
24
24
  private readonly isServiceUrl;
25
25
  constructor(ignoredHeaders: boolean | string[], setSessionTokenHeader: (cb: (name: string, value: string) => void) => void, sanitize: (data: RequestResponseData) => RequestResponseData, sendMessage: (item: NetworkRequest) => void, isServiceUrl: (url: string) => boolean);
26
- apply(target: T, thisArg: typeof window, argsList: [RequestInfo | URL, RequestInit]): any;
26
+ apply(target: T, _: typeof window, argsList: [RequestInfo | URL, RequestInit]): any;
27
27
  protected beforeFetch(item: NetworkMessage, input: RequestInfo, init?: RequestInit): void;
28
28
  protected afterFetch(item: NetworkMessage): (resp: Response) => Response;
29
29
  protected handleResponseBody(resp: Response, item: NetworkMessage): Promise<string> | Promise<ArrayBuffer>;
@@ -70,8 +70,10 @@ export class ResponseProxyHandler {
70
70
  readerReceivedValue = new Uint8Array(result.value);
71
71
  }
72
72
  else {
73
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
73
74
  const newValue = new Uint8Array(readerReceivedValue.length + result.value.length);
74
75
  newValue.set(readerReceivedValue);
76
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
75
77
  newValue.set(result.value, readerReceivedValue.length);
76
78
  readerReceivedValue = newValue;
77
79
  }
@@ -107,7 +109,7 @@ export class FetchProxyHandler {
107
109
  this.sendMessage = sendMessage;
108
110
  this.isServiceUrl = isServiceUrl;
109
111
  }
110
- apply(target, thisArg, argsList) {
112
+ apply(target, _, argsList) {
111
113
  const input = argsList[0];
112
114
  const init = argsList[1];
113
115
  const isORUrl = input instanceof URL || typeof input === 'string'
@@ -118,6 +120,10 @@ export class FetchProxyHandler {
118
120
  }
119
121
  const item = new NetworkMessage(this.ignoredHeaders, this.setSessionTokenHeader, this.sanitize);
120
122
  this.beforeFetch(item, input, init);
123
+ this.setSessionTokenHeader((name, value) => {
124
+ var _a;
125
+ argsList[1] = Object.assign(Object.assign({}, argsList[1]), { headers: Object.assign(Object.assign({}, (_a = argsList[1]) === null || _a === void 0 ? void 0 : _a.headers), { [name]: value }) });
126
+ });
121
127
  return target.apply(window, argsList)
122
128
  .then(this.afterFetch(item))
123
129
  .catch((e) => {
@@ -1,6 +1,18 @@
1
1
  import FetchProxy from './fetchProxy.js';
2
2
  import XHRProxy from './xhrProxy.js';
3
+ const getWarning = (api) => console.warn(`Openreplay: Can't find ${api} in global context.
4
+ If you're using serverside rendering in your app, make sure that tracker is loaded dynamically, otherwise ${api} won't be tracked.`);
3
5
  export default function setProxy(context, ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl) {
4
- context.XMLHttpRequest = XHRProxy.create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl);
5
- context.fetch = FetchProxy.create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl);
6
+ if (context.XMLHttpRequest) {
7
+ context.XMLHttpRequest = XHRProxy.create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl);
8
+ }
9
+ else {
10
+ getWarning('XMLHttpRequest');
11
+ }
12
+ if (context.fetch) {
13
+ context.fetch = FetchProxy.create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl);
14
+ }
15
+ else {
16
+ getWarning('fetch');
17
+ }
6
18
  }
@@ -32,6 +32,9 @@ export class XHRProxyHandler {
32
32
  case 'open':
33
33
  return this.getOpen(target);
34
34
  case 'send':
35
+ this.setSessionTokenHeader((name, value) => {
36
+ target.setRequestHeader(name, value);
37
+ });
35
38
  return this.getSend(target);
36
39
  case 'setRequestHeader':
37
40
  return this.getSetRequestHeader(target);
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": "9.0.0",
4
+ "version": "9.0.2",
5
5
  "keywords": [
6
6
  "logging",
7
7
  "replay"