@openreplay/tracker 9.0.1 → 9.0.3

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,12 @@
1
+ # 9.0.2 & 9.0.3
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.1'; // TODO: version compatability check inside each plugin.
38
+ this.version = '9.0.3'; // 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.1',
156
+ trackerVersion: '9.0.3',
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,25 @@ 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
+ if (argsList[1] === undefined && argsList[0] instanceof Request) {
129
+ return argsList[0].headers.append(name, value);
130
+ }
131
+ else {
132
+ if (argsList[1].headers === undefined) {
133
+ argsList[1].headers = {};
134
+ }
135
+ if (argsList[1].headers instanceof Headers) {
136
+ argsList[1].headers.append(name, value);
137
+ }
138
+ else if (Array.isArray(argsList[1].headers)) {
139
+ argsList[1].headers.push([name, value]);
140
+ }
141
+ else {
142
+ argsList[1].headers[name] = value;
143
+ }
144
+ }
145
+ });
125
146
  return target.apply(window, argsList)
126
147
  .then(this.afterFetch(item))
127
148
  .catch((e) => {
@@ -35,6 +35,11 @@ class XHRProxyHandler {
35
35
  case 'open':
36
36
  return this.getOpen(target);
37
37
  case 'send':
38
+ console.log('sending');
39
+ this.setSessionTokenHeader((name, value) => {
40
+ console.log('setting header', name, value);
41
+ target.setRequestHeader(name, value);
42
+ });
38
43
  return this.getSend(target);
39
44
  case 'setRequestHeader':
40
45
  return this.getSetRequestHeader(target);
@@ -110,6 +115,7 @@ class XHRProxyHandler {
110
115
  getSetRequestHeader(target) {
111
116
  const targetFunction = Reflect.get(target, 'setRequestHeader');
112
117
  return (...args) => {
118
+ console.log('called here', this.item.requestHeader);
113
119
  if (!this.item.requestHeader) {
114
120
  this.item.requestHeader = {};
115
121
  }
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.1'; // TODO: version compatability check inside each plugin.
35
+ this.version = '9.0.3'; // 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.1',
151
+ trackerVersion: '9.0.3',
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,25 @@ 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
+ if (argsList[1] === undefined && argsList[0] instanceof Request) {
125
+ return argsList[0].headers.append(name, value);
126
+ }
127
+ else {
128
+ if (argsList[1].headers === undefined) {
129
+ argsList[1].headers = {};
130
+ }
131
+ if (argsList[1].headers instanceof Headers) {
132
+ argsList[1].headers.append(name, value);
133
+ }
134
+ else if (Array.isArray(argsList[1].headers)) {
135
+ argsList[1].headers.push([name, value]);
136
+ }
137
+ else {
138
+ argsList[1].headers[name] = value;
139
+ }
140
+ }
141
+ });
121
142
  return target.apply(window, argsList)
122
143
  .then(this.afterFetch(item))
123
144
  .catch((e) => {
@@ -32,6 +32,11 @@ export class XHRProxyHandler {
32
32
  case 'open':
33
33
  return this.getOpen(target);
34
34
  case 'send':
35
+ console.log('sending');
36
+ this.setSessionTokenHeader((name, value) => {
37
+ console.log('setting header', name, value);
38
+ target.setRequestHeader(name, value);
39
+ });
35
40
  return this.getSend(target);
36
41
  case 'setRequestHeader':
37
42
  return this.getSetRequestHeader(target);
@@ -107,6 +112,7 @@ export class XHRProxyHandler {
107
112
  getSetRequestHeader(target) {
108
113
  const targetFunction = Reflect.get(target, 'setRequestHeader');
109
114
  return (...args) => {
115
+ console.log('called here', this.item.requestHeader);
110
116
  if (!this.item.requestHeader) {
111
117
  this.item.requestHeader = {};
112
118
  }
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.1",
4
+ "version": "9.0.3",
5
5
  "keywords": [
6
6
  "logging",
7
7
  "replay"