@cloudcare/browser-core 3.0.29 → 3.1.0

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 (264) hide show
  1. package/cjs/browser/addEventListener.js +3 -8
  2. package/cjs/browser/addEventListener.js.map +1 -0
  3. package/cjs/browser/cookie.js +3 -14
  4. package/cjs/browser/cookie.js.map +1 -0
  5. package/cjs/browser/fetchObservable.js +4 -21
  6. package/cjs/browser/fetchObservable.js.map +1 -0
  7. package/cjs/browser/htmlDomUtils.js +3 -9
  8. package/cjs/browser/htmlDomUtils.js.map +1 -0
  9. package/cjs/browser/pageExitObservable.js +3 -9
  10. package/cjs/browser/pageExitObservable.js.map +1 -0
  11. package/cjs/browser/runOnReadyState.js +2 -4
  12. package/cjs/browser/runOnReadyState.js.map +1 -0
  13. package/cjs/browser/scroll.js +32 -0
  14. package/cjs/browser/scroll.js.map +1 -0
  15. package/cjs/browser/xhrObservable.js +2 -21
  16. package/cjs/browser/xhrObservable.js.map +1 -0
  17. package/cjs/configuration/configuration.js +9 -20
  18. package/cjs/configuration/configuration.js.map +1 -0
  19. package/cjs/configuration/transportConfiguration.js +6 -20
  20. package/cjs/configuration/transportConfiguration.js.map +1 -0
  21. package/cjs/console/consoleObservable.js +3 -21
  22. package/cjs/console/consoleObservable.js.map +1 -0
  23. package/cjs/dataMap.js +24 -10
  24. package/cjs/dataMap.js.map +1 -0
  25. package/cjs/error/trackRuntimeError.js +3 -7
  26. package/cjs/error/trackRuntimeError.js.map +1 -0
  27. package/cjs/helper/boundedBuffer.js +2 -6
  28. package/cjs/helper/boundedBuffer.js.map +1 -0
  29. package/cjs/helper/byteUtils.js +6 -16
  30. package/cjs/helper/byteUtils.js.map +1 -0
  31. package/cjs/helper/catchUserErrors.js +2 -4
  32. package/cjs/helper/catchUserErrors.js.map +1 -0
  33. package/cjs/helper/contextHistory.js +21 -37
  34. package/cjs/helper/contextHistory.js.map +1 -0
  35. package/cjs/helper/createEventRateLimiter.js +2 -10
  36. package/cjs/helper/createEventRateLimiter.js.map +1 -0
  37. package/cjs/helper/deviceInfo.js +10 -64
  38. package/cjs/helper/deviceInfo.js.map +1 -0
  39. package/cjs/helper/display.js +2 -5
  40. package/cjs/helper/display.js.map +1 -0
  41. package/cjs/helper/enums.js +8 -2
  42. package/cjs/helper/enums.js.map +1 -0
  43. package/cjs/helper/errorTools.js +32 -38
  44. package/cjs/helper/errorTools.js.map +1 -0
  45. package/cjs/helper/eventEmitter.js +2 -6
  46. package/cjs/helper/eventEmitter.js.map +1 -0
  47. package/cjs/helper/getZoneJsOriginalValue.js +2 -5
  48. package/cjs/helper/getZoneJsOriginalValue.js.map +1 -0
  49. package/cjs/helper/instrumentMethod.js +10 -22
  50. package/cjs/helper/instrumentMethod.js.map +1 -0
  51. package/cjs/helper/lifeCycle.js +2 -9
  52. package/cjs/helper/lifeCycle.js.map +1 -0
  53. package/cjs/helper/limitModification.js +4 -22
  54. package/cjs/helper/limitModification.js.map +1 -0
  55. package/cjs/helper/mobileUtil.js +2 -20
  56. package/cjs/helper/mobileUtil.js.map +1 -0
  57. package/cjs/helper/monitor.js +2 -11
  58. package/cjs/helper/monitor.js.map +1 -0
  59. package/cjs/helper/observable.js +2 -9
  60. package/cjs/helper/observable.js.map +1 -0
  61. package/cjs/helper/readBytesFromStream.js +4 -14
  62. package/cjs/helper/readBytesFromStream.js.map +1 -0
  63. package/cjs/helper/sanitize.js +38 -61
  64. package/cjs/helper/sanitize.js.map +1 -0
  65. package/cjs/helper/serialisation/contextManager.js +5 -15
  66. package/cjs/helper/serialisation/contextManager.js.map +1 -0
  67. package/cjs/helper/serialisation/heavyCustomerDataWarning.js +2 -7
  68. package/cjs/helper/serialisation/heavyCustomerDataWarning.js.map +1 -0
  69. package/cjs/helper/serialisation/jsonStringify.js +6 -12
  70. package/cjs/helper/serialisation/jsonStringify.js.map +1 -0
  71. package/cjs/helper/serialisation/rowData.js +3 -10
  72. package/cjs/helper/serialisation/rowData.js.map +1 -0
  73. package/cjs/helper/timer.js +2 -8
  74. package/cjs/helper/timer.js.map +1 -0
  75. package/cjs/helper/tools.js +57 -444
  76. package/cjs/helper/tools.js.map +1 -0
  77. package/cjs/helper/urlPolyfill.js +5 -18
  78. package/cjs/helper/urlPolyfill.js.map +1 -0
  79. package/cjs/index.js +24 -95
  80. package/cjs/index.js.map +1 -0
  81. package/cjs/init.js +14 -20
  82. package/cjs/init.js.map +1 -0
  83. package/cjs/report/reportObservable.js +5 -24
  84. package/cjs/report/reportObservable.js.map +1 -0
  85. package/cjs/session/sessionConstants.js +2 -3
  86. package/cjs/session/sessionConstants.js.map +1 -0
  87. package/cjs/session/sessionCookieStore.js +11 -46
  88. package/cjs/session/sessionCookieStore.js.map +1 -0
  89. package/cjs/session/sessionManagement.js +2 -19
  90. package/cjs/session/sessionManagement.js.map +1 -0
  91. package/cjs/session/sessionStore.js +3 -28
  92. package/cjs/session/sessionStore.js.map +1 -0
  93. package/cjs/synthetics/syntheticsWorkerValues.js +2 -6
  94. package/cjs/synthetics/syntheticsWorkerValues.js.map +1 -0
  95. package/cjs/synthetics/usr.js +2 -8
  96. package/cjs/synthetics/usr.js.map +1 -0
  97. package/cjs/telemetry/telemetry.js +125 -0
  98. package/cjs/telemetry/telemetry.js.map +1 -0
  99. package/cjs/telemetry/types.js +17 -0
  100. package/cjs/telemetry/types.js.map +1 -0
  101. package/cjs/tracekit/computeStackTrace.js +4 -34
  102. package/cjs/tracekit/computeStackTrace.js.map +1 -0
  103. package/cjs/tracekit/index.js +2 -3
  104. package/cjs/tracekit/index.js.map +1 -0
  105. package/cjs/tracekit/tracekit.js +3 -18
  106. package/cjs/tracekit/tracekit.js.map +1 -0
  107. package/cjs/transport/batch.js +5 -54
  108. package/cjs/transport/batch.js.map +1 -0
  109. package/cjs/transport/eventBridge.js +2 -7
  110. package/cjs/transport/eventBridge.js.map +1 -0
  111. package/cjs/transport/flushController.js +8 -21
  112. package/cjs/transport/flushController.js.map +1 -0
  113. package/cjs/transport/httpRequest.js +4 -18
  114. package/cjs/transport/httpRequest.js.map +1 -0
  115. package/cjs/transport/index.js +2 -6
  116. package/cjs/transport/index.js.map +1 -0
  117. package/cjs/transport/sendWithRetryStrategy.js +4 -23
  118. package/cjs/transport/sendWithRetryStrategy.js.map +1 -0
  119. package/cjs/transport/startBatchWithReplica.js +2 -7
  120. package/cjs/transport/startBatchWithReplica.js.map +1 -0
  121. package/cjs/user/index.js +2 -3
  122. package/cjs/user/index.js.map +1 -0
  123. package/cjs/user/user.js +3 -8
  124. package/cjs/user/user.js.map +1 -0
  125. package/cjs/worker.js +2 -2
  126. package/cjs/worker.js.map +1 -0
  127. package/esm/browser/addEventListener.js +3 -3
  128. package/esm/browser/addEventListener.js.map +1 -0
  129. package/esm/browser/cookie.js +3 -6
  130. package/esm/browser/cookie.js.map +1 -0
  131. package/esm/browser/fetchObservable.js +4 -14
  132. package/esm/browser/fetchObservable.js.map +1 -0
  133. package/esm/browser/htmlDomUtils.js +3 -2
  134. package/esm/browser/htmlDomUtils.js.map +1 -0
  135. package/esm/browser/pageExitObservable.js +3 -2
  136. package/esm/browser/pageExitObservable.js.map +1 -0
  137. package/esm/browser/runOnReadyState.js +2 -1
  138. package/esm/browser/runOnReadyState.js.map +1 -0
  139. package/esm/browser/scroll.js +25 -0
  140. package/esm/browser/scroll.js.map +1 -0
  141. package/esm/browser/xhrObservable.js +2 -14
  142. package/esm/browser/xhrObservable.js.map +1 -0
  143. package/esm/configuration/configuration.js +9 -9
  144. package/esm/configuration/configuration.js.map +1 -0
  145. package/esm/configuration/transportConfiguration.js +6 -17
  146. package/esm/configuration/transportConfiguration.js.map +1 -0
  147. package/esm/console/consoleObservable.js +3 -11
  148. package/esm/console/consoleObservable.js.map +1 -0
  149. package/esm/dataMap.js +24 -8
  150. package/esm/dataMap.js.map +1 -0
  151. package/esm/error/trackRuntimeError.js +4 -3
  152. package/esm/error/trackRuntimeError.js.map +1 -0
  153. package/esm/helper/boundedBuffer.js +2 -4
  154. package/esm/helper/boundedBuffer.js.map +1 -0
  155. package/esm/helper/byteUtils.js +6 -13
  156. package/esm/helper/byteUtils.js.map +1 -0
  157. package/esm/helper/catchUserErrors.js +2 -2
  158. package/esm/helper/catchUserErrors.js.map +1 -0
  159. package/esm/helper/contextHistory.js +21 -33
  160. package/esm/helper/contextHistory.js.map +1 -0
  161. package/esm/helper/createEventRateLimiter.js +2 -6
  162. package/esm/helper/createEventRateLimiter.js.map +1 -0
  163. package/esm/helper/deviceInfo.js +10 -62
  164. package/esm/helper/deviceInfo.js.map +1 -0
  165. package/esm/helper/display.js +2 -3
  166. package/esm/helper/display.js.map +1 -0
  167. package/esm/helper/enums.js +6 -1
  168. package/esm/helper/enums.js.map +1 -0
  169. package/esm/helper/errorTools.js +30 -25
  170. package/esm/helper/errorTools.js.map +1 -0
  171. package/esm/helper/eventEmitter.js +2 -5
  172. package/esm/helper/eventEmitter.js.map +1 -0
  173. package/esm/helper/getZoneJsOriginalValue.js +2 -4
  174. package/esm/helper/getZoneJsOriginalValue.js.map +1 -0
  175. package/esm/helper/instrumentMethod.js +10 -16
  176. package/esm/helper/instrumentMethod.js.map +1 -0
  177. package/esm/helper/lifeCycle.js +2 -5
  178. package/esm/helper/lifeCycle.js.map +1 -0
  179. package/esm/helper/limitModification.js +5 -20
  180. package/esm/helper/limitModification.js.map +1 -0
  181. package/esm/helper/mobileUtil.js +2 -16
  182. package/esm/helper/mobileUtil.js.map +1 -0
  183. package/esm/helper/monitor.js +2 -3
  184. package/esm/helper/monitor.js.map +1 -0
  185. package/esm/helper/observable.js +2 -7
  186. package/esm/helper/observable.js.map +1 -0
  187. package/esm/helper/readBytesFromStream.js +4 -12
  188. package/esm/helper/readBytesFromStream.js.map +1 -0
  189. package/esm/helper/sanitize.js +40 -57
  190. package/esm/helper/sanitize.js.map +1 -0
  191. package/esm/helper/serialisation/contextManager.js +5 -9
  192. package/esm/helper/serialisation/contextManager.js.map +1 -0
  193. package/esm/helper/serialisation/heavyCustomerDataWarning.js +5 -4
  194. package/esm/helper/serialisation/heavyCustomerDataWarning.js.map +1 -0
  195. package/esm/helper/serialisation/jsonStringify.js +7 -10
  196. package/esm/helper/serialisation/jsonStringify.js.map +1 -0
  197. package/esm/helper/serialisation/rowData.js +3 -4
  198. package/esm/helper/serialisation/rowData.js.map +1 -0
  199. package/esm/helper/timer.js +2 -1
  200. package/esm/helper/timer.js.map +1 -0
  201. package/esm/helper/tools.js +57 -256
  202. package/esm/helper/tools.js.map +1 -0
  203. package/esm/helper/urlPolyfill.js +5 -9
  204. package/esm/helper/urlPolyfill.js.map +1 -0
  205. package/esm/index.js +4 -1
  206. package/esm/index.js.map +1 -0
  207. package/esm/init.js +14 -14
  208. package/esm/init.js.map +1 -0
  209. package/esm/report/reportObservable.js +5 -16
  210. package/esm/report/reportObservable.js.map +1 -0
  211. package/esm/session/sessionConstants.js +2 -1
  212. package/esm/session/sessionConstants.js.map +1 -0
  213. package/esm/session/sessionCookieStore.js +11 -38
  214. package/esm/session/sessionCookieStore.js.map +1 -0
  215. package/esm/session/sessionManagement.js +2 -8
  216. package/esm/session/sessionManagement.js.map +1 -0
  217. package/esm/session/sessionStore.js +4 -22
  218. package/esm/session/sessionStore.js.map +1 -0
  219. package/esm/synthetics/syntheticsWorkerValues.js +2 -1
  220. package/esm/synthetics/syntheticsWorkerValues.js.map +1 -0
  221. package/esm/synthetics/usr.js +2 -3
  222. package/esm/synthetics/usr.js.map +1 -0
  223. package/esm/telemetry/telemetry.js +111 -0
  224. package/esm/telemetry/telemetry.js.map +1 -0
  225. package/esm/telemetry/types.js +9 -0
  226. package/esm/telemetry/types.js.map +1 -0
  227. package/esm/tracekit/computeStackTrace.js +4 -31
  228. package/esm/tracekit/computeStackTrace.js.map +1 -0
  229. package/esm/tracekit/index.js +2 -1
  230. package/esm/tracekit/index.js.map +1 -0
  231. package/esm/tracekit/tracekit.js +5 -14
  232. package/esm/tracekit/tracekit.js.map +1 -0
  233. package/esm/transport/batch.js +7 -45
  234. package/esm/transport/batch.js.map +1 -0
  235. package/esm/transport/eventBridge.js +2 -5
  236. package/esm/transport/eventBridge.js.map +1 -0
  237. package/esm/transport/flushController.js +11 -20
  238. package/esm/transport/flushController.js.map +1 -0
  239. package/esm/transport/httpRequest.js +4 -15
  240. package/esm/transport/httpRequest.js.map +1 -0
  241. package/esm/transport/index.js +2 -1
  242. package/esm/transport/index.js.map +1 -0
  243. package/esm/transport/sendWithRetryStrategy.js +4 -17
  244. package/esm/transport/sendWithRetryStrategy.js.map +1 -0
  245. package/esm/transport/startBatchWithReplica.js +2 -3
  246. package/esm/transport/startBatchWithReplica.js.map +1 -0
  247. package/esm/user/index.js.map +1 -0
  248. package/esm/user/user.js +4 -5
  249. package/esm/user/user.js.map +1 -0
  250. package/esm/worker.js.map +1 -0
  251. package/package.json +2 -2
  252. package/src/browser/scroll.js +25 -0
  253. package/src/configuration/configuration.js +16 -0
  254. package/src/configuration/transportConfiguration.js +2 -2
  255. package/src/dataMap.js +17 -3
  256. package/src/error/trackRuntimeError.js +2 -2
  257. package/src/helper/contextHistory.js +3 -3
  258. package/src/helper/enums.js +4 -0
  259. package/src/helper/errorTools.js +49 -19
  260. package/src/helper/tools.js +1 -0
  261. package/src/index.js +3 -0
  262. package/src/report/reportObservable.js +3 -3
  263. package/src/telemetry/telemetry.js +164 -0
  264. package/src/telemetry/types.js +9 -0
@@ -4,8 +4,9 @@ import { SESSION_EXPIRATION_DELAY } from './sessionConstants';
4
4
  import { setTimeout } from '../helper/timer';
5
5
  var SESSION_ENTRY_REGEXP = /^([a-z]+)=([a-z0-9-]+)$/;
6
6
  var SESSION_ENTRY_SEPARATOR = '&';
7
- export var SESSION_COOKIE_NAME = '_dataflux_s'; // arbitrary values
7
+ export var SESSION_COOKIE_NAME = '_dataflux_s';
8
8
 
9
+ // arbitrary values
9
10
  export var LOCK_RETRY_DELAY = 10;
10
11
  export var MAX_NUMBER_OF_LOCK_RETRIES = 100;
11
12
  var bufferedOperations = [];
@@ -14,124 +15,101 @@ export function withCookieLockAccess(operations, numberOfRetries) {
14
15
  if (typeof numberOfRetries === 'undefined') {
15
16
  numberOfRetries = 0;
16
17
  }
17
-
18
18
  if (!ongoingOperations) {
19
19
  ongoingOperations = operations;
20
20
  }
21
-
22
21
  if (operations !== ongoingOperations) {
23
22
  bufferedOperations.push(operations);
24
23
  return;
25
24
  }
26
-
27
25
  if (numberOfRetries >= MAX_NUMBER_OF_LOCK_RETRIES) {
28
26
  next();
29
27
  return;
30
28
  }
31
-
32
29
  var currentLock;
33
30
  var currentSession = retrieveSession();
34
-
35
31
  if (isCookieLockEnabled()) {
36
32
  // if someone has lock, retry later
37
33
  if (currentSession.lock) {
38
34
  retryLater(operations, numberOfRetries);
39
35
  return;
40
- } // acquire lock
41
-
42
-
36
+ }
37
+ // acquire lock
43
38
  currentLock = UUID();
44
39
  currentSession.lock = currentLock;
45
- setSession(currentSession, operations.options); // if lock is not acquired, retry later
46
-
40
+ setSession(currentSession, operations.options);
41
+ // if lock is not acquired, retry later
47
42
  currentSession = retrieveSession();
48
-
49
43
  if (currentSession.lock !== currentLock) {
50
44
  retryLater(operations, numberOfRetries);
51
45
  return;
52
46
  }
53
47
  }
54
-
55
48
  var processedSession = operations.process(currentSession);
56
-
57
49
  if (isCookieLockEnabled()) {
58
50
  // if lock corrupted after process, retry later
59
51
  currentSession = retrieveSession();
60
-
61
52
  if (currentSession.lock !== currentLock) {
62
53
  retryLater(operations, numberOfRetries);
63
54
  return;
64
55
  }
65
56
  }
66
-
67
57
  if (processedSession) {
68
58
  persistSession(processedSession, operations.options);
69
59
  }
70
-
71
60
  if (isCookieLockEnabled()) {
72
61
  // correctly handle lock around expiration would require to handle this case properly at several levels
73
62
  // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it
74
63
  if (!(processedSession && isExpiredState(processedSession))) {
75
64
  // if lock corrupted after persist, retry later
76
65
  currentSession = retrieveSession();
77
-
78
66
  if (currentSession.lock !== currentLock) {
79
67
  retryLater(operations, numberOfRetries);
80
68
  return;
81
69
  }
82
-
83
70
  delete currentSession.lock;
84
71
  setSession(currentSession, operations.options);
85
72
  processedSession = currentSession;
86
73
  }
87
- } // call after even if session is not persisted in order to perform operations on
74
+ }
75
+ // call after even if session is not persisted in order to perform operations on
88
76
  // up-to-date cookie value, the value could have been modified by another tab
89
-
90
-
91
77
  if (operations.after) {
92
78
  operations.after(processedSession || currentSession);
93
79
  }
94
-
95
80
  next();
96
81
  }
82
+
97
83
  /**
98
84
  * Cookie lock strategy allows mitigating issues due to concurrent access to cookie.
99
85
  * This issue concerns only chromium browsers and enabling this on firefox increase cookie write failures.
100
86
  */
101
-
102
87
  function isCookieLockEnabled() {
103
88
  return isChromium();
104
89
  }
105
-
106
90
  function retryLater(operations, currentNumberOfRetries) {
107
91
  setTimeout(function () {
108
92
  withCookieLockAccess(operations, currentNumberOfRetries + 1);
109
93
  }, LOCK_RETRY_DELAY);
110
94
  }
111
-
112
95
  function next() {
113
96
  ongoingOperations = undefined;
114
97
  var nextOperations = bufferedOperations.shift();
115
-
116
98
  if (nextOperations) {
117
99
  withCookieLockAccess(nextOperations);
118
100
  }
119
101
  }
120
-
121
102
  export function persistSession(session, options) {
122
103
  if (isExpiredState(session)) {
123
104
  clearSession(options);
124
105
  return;
125
106
  }
126
-
127
107
  session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);
128
108
  setSession(session, options);
129
109
  }
130
-
131
110
  function setSession(session, options) {
132
111
  setCookie(SESSION_COOKIE_NAME, toSessionString(session), SESSION_EXPIRATION_DELAY, options);
133
112
  }
134
-
135
113
  export function toSessionString(session) {
136
114
  return map(objectEntries(session), function (item) {
137
115
  return item[0] + '=' + item[1];
@@ -140,11 +118,9 @@ export function toSessionString(session) {
140
118
  export function retrieveSession() {
141
119
  var sessionString = getCookie(SESSION_COOKIE_NAME);
142
120
  var session = {};
143
-
144
121
  if (isValidSessionString(sessionString)) {
145
122
  each(sessionString.split(SESSION_ENTRY_SEPARATOR), function (entry) {
146
123
  var matches = SESSION_ENTRY_REGEXP.exec(entry);
147
-
148
124
  if (matches !== null) {
149
125
  var key = matches[1];
150
126
  var value = matches[2];
@@ -152,18 +128,15 @@ export function retrieveSession() {
152
128
  }
153
129
  });
154
130
  }
155
-
156
131
  return session;
157
132
  }
158
-
159
133
  function isValidSessionString(sessionString) {
160
134
  return sessionString !== undefined && (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString));
161
135
  }
162
-
163
136
  function isExpiredState(session) {
164
137
  return isEmptyObject(session);
165
138
  }
166
-
167
139
  function clearSession(options) {
168
140
  setCookie(SESSION_COOKIE_NAME, '', 0, options);
169
- }
141
+ }
142
+ //# sourceMappingURL=sessionCookieStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionCookieStore.js","names":["getCookie","setCookie","isChromium","dateNow","isEmptyObject","UUID","objectEntries","map","each","SESSION_EXPIRATION_DELAY","setTimeout","SESSION_ENTRY_REGEXP","SESSION_ENTRY_SEPARATOR","SESSION_COOKIE_NAME","LOCK_RETRY_DELAY","MAX_NUMBER_OF_LOCK_RETRIES","bufferedOperations","ongoingOperations","withCookieLockAccess","operations","numberOfRetries","push","next","currentLock","currentSession","retrieveSession","isCookieLockEnabled","lock","retryLater","setSession","options","processedSession","process","persistSession","isExpiredState","after","currentNumberOfRetries","undefined","nextOperations","shift","session","clearSession","expire","String","toSessionString","item","join","sessionString","isValidSessionString","split","entry","matches","exec","key","value","indexOf","test"],"sources":["../../src/session/sessionCookieStore.js"],"sourcesContent":["import { getCookie, setCookie } from '../browser/cookie'\nimport {\n isChromium,\n dateNow,\n isEmptyObject,\n UUID,\n objectEntries,\n map,\n each\n} from '../helper/tools'\nimport { SESSION_EXPIRATION_DELAY } from './sessionConstants'\nimport { setTimeout } from '../helper/timer'\nvar SESSION_ENTRY_REGEXP = /^([a-z]+)=([a-z0-9-]+)$/\nvar SESSION_ENTRY_SEPARATOR = '&'\n\nexport var SESSION_COOKIE_NAME = '_dataflux_s'\n\n// arbitrary values\nexport var LOCK_RETRY_DELAY = 10\nexport var MAX_NUMBER_OF_LOCK_RETRIES = 100\n\nvar bufferedOperations = []\nvar ongoingOperations\n\nexport function withCookieLockAccess(operations, numberOfRetries) {\n if (typeof numberOfRetries === 'undefined') {\n numberOfRetries = 0\n }\n if (!ongoingOperations) {\n ongoingOperations = operations\n }\n if (operations !== ongoingOperations) {\n bufferedOperations.push(operations)\n return\n }\n if (numberOfRetries >= MAX_NUMBER_OF_LOCK_RETRIES) {\n next()\n return\n }\n var currentLock\n var currentSession = retrieveSession()\n if (isCookieLockEnabled()) {\n // if someone has lock, retry later\n if (currentSession.lock) {\n retryLater(operations, numberOfRetries)\n return\n }\n // acquire lock\n currentLock = UUID()\n currentSession.lock = currentLock\n setSession(currentSession, operations.options)\n // if lock is not acquired, retry later\n currentSession = retrieveSession()\n if (currentSession.lock !== currentLock) {\n retryLater(operations, numberOfRetries)\n return\n }\n }\n var processedSession = operations.process(currentSession)\n if (isCookieLockEnabled()) {\n // if lock corrupted after process, retry later\n currentSession = retrieveSession()\n if (currentSession.lock !== currentLock) {\n retryLater(operations, numberOfRetries)\n return\n }\n }\n if (processedSession) {\n persistSession(processedSession, operations.options)\n }\n if (isCookieLockEnabled()) {\n // correctly handle lock around expiration would require to handle this case properly at several levels\n // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n if (!(processedSession && isExpiredState(processedSession))) {\n // if lock corrupted after persist, retry later\n currentSession = retrieveSession()\n if (currentSession.lock !== currentLock) {\n retryLater(operations, numberOfRetries)\n return\n }\n delete currentSession.lock\n setSession(currentSession, operations.options)\n processedSession = currentSession\n }\n }\n // call after even if session is not persisted in order to perform operations on\n // up-to-date cookie value, the value could have been modified by another tab\n if (operations.after) {\n operations.after(processedSession || currentSession)\n }\n next()\n}\n\n/**\n * Cookie lock strategy allows mitigating issues due to concurrent access to cookie.\n * This issue concerns only chromium browsers and enabling this on firefox increase cookie write failures.\n */\nfunction isCookieLockEnabled() {\n return isChromium()\n}\n\nfunction retryLater(operations, currentNumberOfRetries) {\n setTimeout(function () {\n withCookieLockAccess(operations, currentNumberOfRetries + 1)\n }, LOCK_RETRY_DELAY)\n}\n\nfunction next() {\n ongoingOperations = undefined\n var nextOperations = bufferedOperations.shift()\n if (nextOperations) {\n withCookieLockAccess(nextOperations)\n }\n}\n\nexport function persistSession(session, options) {\n if (isExpiredState(session)) {\n clearSession(options)\n return\n }\n session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY)\n setSession(session, options)\n}\n\nfunction setSession(session, options) {\n setCookie(\n SESSION_COOKIE_NAME,\n toSessionString(session),\n SESSION_EXPIRATION_DELAY,\n options\n )\n}\n\nexport function toSessionString(session) {\n return map(objectEntries(session), function (item) {\n return item[0] + '=' + item[1]\n }).join(SESSION_ENTRY_SEPARATOR)\n}\n\nexport function retrieveSession() {\n var sessionString = getCookie(SESSION_COOKIE_NAME)\n var session = {}\n if (isValidSessionString(sessionString)) {\n each(sessionString.split(SESSION_ENTRY_SEPARATOR), function (entry) {\n var matches = SESSION_ENTRY_REGEXP.exec(entry)\n if (matches !== null) {\n var key = matches[1]\n var value = matches[2]\n session[key] = value\n }\n })\n }\n return session\n}\n\nfunction isValidSessionString(sessionString) {\n return (\n sessionString !== undefined &&\n (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 ||\n SESSION_ENTRY_REGEXP.test(sessionString))\n )\n}\n\nfunction isExpiredState(session) {\n return isEmptyObject(session)\n}\nfunction clearSession(options) {\n setCookie(SESSION_COOKIE_NAME, '', 0, options)\n}\n"],"mappings":"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"}
@@ -31,14 +31,12 @@ export var startSessionManager = function startSessionManager(options, productKe
31
31
  trackVisibility(function () {
32
32
  return sessionStore.expandSession();
33
33
  });
34
-
35
34
  function buildSessionContext() {
36
35
  return {
37
36
  id: sessionStore.getSession().id,
38
37
  trackingType: sessionStore.getSession()[productKey]
39
38
  };
40
39
  }
41
-
42
40
  return {
43
41
  findActiveSession: function findActiveSession(startTime) {
44
42
  return sessionContextHistory.find(startTime);
@@ -54,28 +52,24 @@ export function stopSessionManager() {
54
52
  });
55
53
  stopCallbacks = [];
56
54
  }
57
-
58
55
  function trackActivity(expandOrRenewSession) {
59
56
  var _addEventListeners = addEventListeners(window, [DOM_EVENT.CLICK, DOM_EVENT.TOUCH_START, DOM_EVENT.KEY_DOWN, DOM_EVENT.SCROLL], expandOrRenewSession, {
60
57
  capture: true,
61
58
  passive: true
62
59
  });
63
-
64
60
  stopCallbacks.push(_addEventListeners.stop);
65
61
  }
66
-
67
62
  function trackVisibility(expandSession) {
68
63
  var expandSessionWhenVisible = function expandSessionWhenVisible() {
69
64
  if (document.visibilityState === 'visible') {
70
65
  expandSession();
71
66
  }
72
67
  };
73
-
74
68
  var _addEventListener = addEventListener(document, DOM_EVENT.VISIBILITY_CHANGE, expandSessionWhenVisible);
75
-
76
69
  stopCallbacks.push(_addEventListener.stop);
77
70
  var visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);
78
71
  stopCallbacks.push(function () {
79
72
  clearInterval(visibilityCheckInterval);
80
73
  });
81
- }
74
+ }
75
+ //# sourceMappingURL=sessionManagement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionManagement.js","names":["relativeNow","clocksOrigin","ONE_MINUTE","each","addEventListeners","addEventListener","ContextHistory","startSessionStore","SESSION_TIME_OUT_DELAY","DOM_EVENT","clearInterval","setInterval","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","stopCallbacks","startSessionManager","options","productKey","computeSessionState","sessionStore","push","stop","sessionContextHistory","renewObservable","subscribe","add","buildSessionContext","expireObservable","closeActive","expandOrRenewSession","relative","trackActivity","trackVisibility","expandSession","id","getSession","trackingType","findActiveSession","startTime","find","expire","stopSessionManager","e","_addEventListeners","window","CLICK","TOUCH_START","KEY_DOWN","SCROLL","capture","passive","expandSessionWhenVisible","document","visibilityState","_addEventListener","VISIBILITY_CHANGE","visibilityCheckInterval"],"sources":["../../src/session/sessionManagement.js"],"sourcesContent":["import { relativeNow, clocksOrigin, ONE_MINUTE, each } from '../helper/tools'\nimport {\n addEventListeners,\n addEventListener\n} from '../browser/addEventListener'\nimport { ContextHistory } from '../helper/contextHistory'\nimport { startSessionStore } from './sessionStore'\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants'\nimport { DOM_EVENT } from '../helper/enums'\nimport { clearInterval, setInterval } from '../helper/timer'\nexport var VISIBILITY_CHECK_DELAY = ONE_MINUTE\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY\nvar stopCallbacks = []\n\nexport var startSessionManager = function (\n options,\n productKey,\n computeSessionState\n) {\n var sessionStore = startSessionStore(options, productKey, computeSessionState)\n stopCallbacks.push(function () {\n return sessionStore.stop()\n })\n\n var sessionContextHistory = new ContextHistory(SESSION_CONTEXT_TIMEOUT_DELAY)\n stopCallbacks.push(function () {\n return sessionContextHistory.stop()\n })\n\n sessionStore.renewObservable.subscribe(function () {\n sessionContextHistory.add(buildSessionContext(), relativeNow())\n })\n sessionStore.expireObservable.subscribe(function () {\n sessionContextHistory.closeActive(relativeNow())\n })\n\n sessionStore.expandOrRenewSession()\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative)\n\n trackActivity(function () {\n return sessionStore.expandOrRenewSession()\n })\n trackVisibility(function () {\n return sessionStore.expandSession()\n })\n\n function buildSessionContext() {\n return {\n id: sessionStore.getSession().id,\n trackingType: sessionStore.getSession()[productKey]\n }\n }\n\n return {\n findActiveSession: function (startTime) {\n return sessionContextHistory.find(startTime)\n },\n renewObservable: sessionStore.renewObservable,\n expireObservable: sessionStore.expireObservable,\n expire: sessionStore.expire\n }\n}\n\nexport function stopSessionManager() {\n each(stopCallbacks, function (e) {\n return e()\n })\n stopCallbacks = []\n}\n\nfunction trackActivity(expandOrRenewSession) {\n var _addEventListeners = addEventListeners(\n window,\n [\n DOM_EVENT.CLICK,\n DOM_EVENT.TOUCH_START,\n DOM_EVENT.KEY_DOWN,\n DOM_EVENT.SCROLL\n ],\n expandOrRenewSession,\n { capture: true, passive: true }\n )\n stopCallbacks.push(_addEventListeners.stop)\n}\n\nfunction trackVisibility(expandSession) {\n var expandSessionWhenVisible = function () {\n if (document.visibilityState === 'visible') {\n expandSession()\n }\n }\n var _addEventListener = addEventListener(\n document,\n DOM_EVENT.VISIBILITY_CHANGE,\n expandSessionWhenVisible\n )\n stopCallbacks.push(_addEventListener.stop)\n\n var visibilityCheckInterval = setInterval(\n expandSessionWhenVisible,\n VISIBILITY_CHECK_DELAY\n )\n stopCallbacks.push(function () {\n clearInterval(visibilityCheckInterval)\n })\n}\n"],"mappings":"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"}
@@ -4,19 +4,18 @@ import { dateNow, UUID, throttle } from '../helper/tools';
4
4
  import { SESSION_TIME_OUT_DELAY } from './sessionConstants';
5
5
  import { retrieveSession, withCookieLockAccess } from './sessionCookieStore';
6
6
  import { clearInterval, setInterval } from '../helper/timer';
7
+
7
8
  /**
8
9
  * Different session concepts:
9
10
  * - tracked, the session has an id and is updated along the user navigation
10
11
  * - not tracked, the session does not have an id but it is updated along the user navigation
11
12
  * - inactive, no session in store or session expired, waiting for a renew session
12
13
  */
13
-
14
14
  export function startSessionStore(options, productKey, computeSessionState) {
15
15
  var renewObservable = new Observable();
16
16
  var expireObservable = new Observable();
17
17
  var watchSessionTimeoutId = setInterval(watchSession, COOKIE_ACCESS_DELAY);
18
18
  var sessionCache = retrieveActiveSession();
19
-
20
19
  function expandOrRenewSession() {
21
20
  var isTracked;
22
21
  withCookieLockAccess({
@@ -30,12 +29,10 @@ export function startSessionStore(options, productKey, computeSessionState) {
30
29
  if (isTracked && !hasSessionInCache()) {
31
30
  renewSession(cookieSession);
32
31
  }
33
-
34
32
  sessionCache = cookieSession;
35
33
  }
36
34
  });
37
35
  }
38
-
39
36
  function expandSession() {
40
37
  withCookieLockAccess({
41
38
  options: options,
@@ -44,13 +41,12 @@ export function startSessionStore(options, productKey, computeSessionState) {
44
41
  }
45
42
  });
46
43
  }
44
+
47
45
  /**
48
46
  * allows two behaviors:
49
47
  * - if the session is active, synchronize the session cache without updating the session cookie
50
48
  * - if the session is not active, clear the session cookie and expire the session cache
51
49
  */
52
-
53
-
54
50
  function watchSession() {
55
51
  withCookieLockAccess({
56
52
  options: options,
@@ -60,12 +56,10 @@ export function startSessionStore(options, productKey, computeSessionState) {
60
56
  after: synchronizeSession
61
57
  });
62
58
  }
63
-
64
59
  function synchronizeSession(cookieSession) {
65
60
  if (!isActiveSession(cookieSession)) {
66
61
  cookieSession = {};
67
62
  }
68
-
69
63
  if (hasSessionInCache()) {
70
64
  if (isSessionInCacheOutdated(cookieSession)) {
71
65
  expireSessionInCache();
@@ -73,58 +67,45 @@ export function startSessionStore(options, productKey, computeSessionState) {
73
67
  sessionCache = cookieSession;
74
68
  }
75
69
  }
76
-
77
70
  return cookieSession;
78
71
  }
79
-
80
72
  function expandOrRenewCookie(cookieSession) {
81
73
  var sessionState = computeSessionState(cookieSession[productKey]);
82
74
  var trackingType = sessionState.trackingType;
83
75
  var isTracked = sessionState.isTracked;
84
76
  cookieSession[productKey] = trackingType;
85
-
86
77
  if (isTracked && !cookieSession.id) {
87
78
  cookieSession.id = UUID();
88
79
  cookieSession.created = String(dateNow());
89
80
  }
90
-
91
81
  return isTracked;
92
82
  }
93
-
94
83
  function hasSessionInCache() {
95
84
  return sessionCache[productKey] !== undefined;
96
85
  }
97
-
98
86
  function isSessionInCacheOutdated(cookieSession) {
99
87
  return sessionCache.id !== cookieSession.id || sessionCache[productKey] !== cookieSession[productKey];
100
88
  }
101
-
102
89
  function expireSessionInCache() {
103
90
  sessionCache = {};
104
91
  expireObservable.notify();
105
92
  }
106
-
107
93
  function renewSession(cookieSession) {
108
94
  sessionCache = cookieSession;
109
95
  renewObservable.notify();
110
96
  }
111
-
112
97
  function retrieveActiveSession() {
113
98
  var session = retrieveSession();
114
-
115
99
  if (isActiveSession(session)) {
116
100
  return session;
117
101
  }
118
-
119
102
  return {};
120
103
  }
121
-
122
104
  function isActiveSession(session) {
123
105
  // created and expire can be undefined for versions which was not storing them
124
106
  // these checks could be removed when older versions will not be available/live anymore
125
107
  return (session.created === undefined || dateNow() - Number(session.created) < SESSION_TIME_OUT_DELAY) && (session.expire === undefined || dateNow() < Number(session.expire));
126
108
  }
127
-
128
109
  return {
129
110
  expandOrRenewSession: throttle(expandOrRenewSession, COOKIE_ACCESS_DELAY).throttled,
130
111
  expandSession: expandSession,
@@ -141,4 +122,5 @@ export function startSessionStore(options, productKey, computeSessionState) {
141
122
  clearInterval(watchSessionTimeoutId);
142
123
  }
143
124
  };
144
- }
125
+ }
126
+ //# sourceMappingURL=sessionStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStore.js","names":["COOKIE_ACCESS_DELAY","Observable","dateNow","UUID","throttle","SESSION_TIME_OUT_DELAY","retrieveSession","withCookieLockAccess","clearInterval","setInterval","startSessionStore","options","productKey","computeSessionState","renewObservable","expireObservable","watchSessionTimeoutId","watchSession","sessionCache","retrieveActiveSession","expandOrRenewSession","isTracked","process","cookieSession","synchronizedSession","synchronizeSession","expandOrRenewCookie","after","hasSessionInCache","renewSession","expandSession","undefined","isActiveSession","isSessionInCacheOutdated","expireSessionInCache","sessionState","trackingType","id","created","String","notify","session","Number","expire","throttled","getSession","deleteSessionCookie","stop"],"sources":["../../src/session/sessionStore.js"],"sourcesContent":["import { COOKIE_ACCESS_DELAY } from '../browser/cookie'\nimport { Observable } from '../helper/observable'\nimport { dateNow, UUID, throttle } from '../helper/tools'\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants'\nimport { retrieveSession, withCookieLockAccess } from './sessionCookieStore'\nimport { clearInterval, setInterval } from '../helper/timer'\n\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(options, productKey, computeSessionState) {\n var renewObservable = new Observable()\n var expireObservable = new Observable()\n\n var watchSessionTimeoutId = setInterval(watchSession, COOKIE_ACCESS_DELAY)\n var sessionCache = retrieveActiveSession()\n\n function expandOrRenewSession() {\n var isTracked\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n var synchronizedSession = synchronizeSession(cookieSession)\n isTracked = expandOrRenewCookie(synchronizedSession)\n return synchronizedSession\n },\n after: function (cookieSession) {\n if (isTracked && !hasSessionInCache()) {\n renewSession(cookieSession)\n }\n sessionCache = cookieSession\n }\n })\n }\n\n function expandSession() {\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n return hasSessionInCache()\n ? synchronizeSession(cookieSession)\n : undefined\n }\n })\n }\n\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session cookie\n * - if the session is not active, clear the session cookie and expire the session cache\n */\n function watchSession() {\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n return !isActiveSession(cookieSession) ? {} : undefined\n },\n after: synchronizeSession\n })\n }\n\n function synchronizeSession(cookieSession) {\n if (!isActiveSession(cookieSession)) {\n cookieSession = {}\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(cookieSession)) {\n expireSessionInCache()\n } else {\n sessionCache = cookieSession\n }\n }\n return cookieSession\n }\n\n function expandOrRenewCookie(cookieSession) {\n var sessionState = computeSessionState(cookieSession[productKey])\n var trackingType = sessionState.trackingType\n var isTracked = sessionState.isTracked\n cookieSession[productKey] = trackingType\n if (isTracked && !cookieSession.id) {\n cookieSession.id = UUID()\n cookieSession.created = String(dateNow())\n }\n return isTracked\n }\n\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined\n }\n\n function isSessionInCacheOutdated(cookieSession) {\n return (\n sessionCache.id !== cookieSession.id ||\n sessionCache[productKey] !== cookieSession[productKey]\n )\n }\n\n function expireSessionInCache() {\n sessionCache = {}\n expireObservable.notify()\n }\n\n function renewSession(cookieSession) {\n sessionCache = cookieSession\n renewObservable.notify()\n }\n\n function retrieveActiveSession() {\n var session = retrieveSession()\n if (isActiveSession(session)) {\n return session\n }\n return {}\n }\n\n function isActiveSession(session) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return (\n (session.created === undefined ||\n dateNow() - Number(session.created) < SESSION_TIME_OUT_DELAY) &&\n (session.expire === undefined || dateNow() < Number(session.expire))\n )\n }\n\n return {\n expandOrRenewSession: throttle(expandOrRenewSession, COOKIE_ACCESS_DELAY)\n .throttled,\n expandSession: expandSession,\n getSession: function () {\n return sessionCache\n },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n expire: function () {\n deleteSessionCookie(options)\n synchronizeSession({})\n },\n stop: function () {\n clearInterval(watchSessionTimeoutId)\n }\n }\n}\n"],"mappings":"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"}
@@ -12,4 +12,5 @@ export function getSyntheticsTestId() {
12
12
  export function getSyntheticsResultId() {
13
13
  var value = window._GUANCE_SYNTHETICS_RESULT_ID || getCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);
14
14
  return typeof value === 'string' ? value : undefined;
15
- }
15
+ }
16
+ //# sourceMappingURL=syntheticsWorkerValues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntheticsWorkerValues.js","names":["getCookie","SYNTHETICS_TEST_ID_COOKIE_NAME","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","Boolean","window","_GUANCE_SYNTHETICS_INJECTS_RUM","getSyntheticsTestId","value","_GUANCE_SYNTHETICS_PUBLIC_ID","undefined","getSyntheticsResultId","_GUANCE_SYNTHETICS_RESULT_ID"],"sources":["../../src/synthetics/syntheticsWorkerValues.js"],"sourcesContent":["import { getCookie } from '../browser/cookie'\n\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'guance-synthetics-public-id'\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'guance-synthetics-result-id'\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'guance-synthetics-injects-rum'\n\nexport function willSyntheticsInjectRum() {\n return Boolean(\n window._GUANCE_SYNTHETICS_INJECTS_RUM ||\n getCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME)\n )\n}\n\nexport function getSyntheticsTestId() {\n var value =\n window._GUANCE_SYNTHETICS_PUBLIC_ID ||\n getCookie(SYNTHETICS_TEST_ID_COOKIE_NAME)\n return typeof value === 'string' ? value : undefined\n}\n\nexport function getSyntheticsResultId() {\n var value =\n window._GUANCE_SYNTHETICS_RESULT_ID ||\n getCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME)\n return typeof value === 'string' ? value : undefined\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,mBAAmB;AAE7C,OAAO,IAAIC,8BAA8B,GAAG,6BAA6B;AACzE,OAAO,IAAIC,gCAAgC,GAAG,6BAA6B;AAC3E,OAAO,IAAIC,kCAAkC,GAAG,+BAA+B;AAE/E,OAAO,SAASC,uBAAuBA,CAAA,EAAG;EACxC,OAAOC,OAAO,CACZC,MAAM,CAACC,8BAA8B,IACnCP,SAAS,CAACG,kCAAkC,CAChD,CAAC;AACH;AAEA,OAAO,SAASK,mBAAmBA,CAAA,EAAG;EACpC,IAAIC,KAAK,GACPH,MAAM,CAACI,4BAA4B,IACnCV,SAAS,CAACC,8BAA8B,CAAC;EAC3C,OAAO,OAAOQ,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGE,SAAS;AACtD;AAEA,OAAO,SAASC,qBAAqBA,CAAA,EAAG;EACtC,IAAIH,KAAK,GACPH,MAAM,CAACO,4BAA4B,IACnCb,SAAS,CAACE,gCAAgC,CAAC;EAC7C,OAAO,OAAOO,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGE,SAAS;AACtD"}
@@ -4,15 +4,14 @@ export var ANONYMOUS_ID_COOKIE_NAME = '_dataflulx_usr_id';
4
4
  export var ANONYMOUS_ID_EXPIRATION = 60 * 24 * ONE_HOUR;
5
5
  export var startCacheUsrCache = function startCacheUsrCache(configuration) {
6
6
  var usrCacheId = getCookie(ANONYMOUS_ID_COOKIE_NAME);
7
-
8
7
  if (!usrCacheId) {
9
8
  usrCacheId = UUID();
10
9
  setCookie(ANONYMOUS_ID_COOKIE_NAME, usrCacheId, ANONYMOUS_ID_EXPIRATION, configuration.cookieOptions);
11
10
  }
12
-
13
11
  return {
14
12
  getUsrId: function getUsrId() {
15
13
  return usrCacheId;
16
14
  }
17
15
  };
18
- };
16
+ };
17
+ //# sourceMappingURL=usr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usr.js","names":["getCookie","setCookie","ONE_HOUR","UUID","ANONYMOUS_ID_COOKIE_NAME","ANONYMOUS_ID_EXPIRATION","startCacheUsrCache","configuration","usrCacheId","cookieOptions","getUsrId"],"sources":["../../src/synthetics/usr.js"],"sourcesContent":["import { getCookie, setCookie } from '../browser/cookie'\nimport { ONE_HOUR, UUID } from '../helper/tools'\n\nexport var ANONYMOUS_ID_COOKIE_NAME = '_dataflulx_usr_id'\nexport var ANONYMOUS_ID_EXPIRATION = 60 * 24 * ONE_HOUR\n\nexport var startCacheUsrCache = function(configuration) {\n var usrCacheId = getCookie(ANONYMOUS_ID_COOKIE_NAME)\n if (!usrCacheId) {\n usrCacheId = UUID()\n setCookie(ANONYMOUS_ID_COOKIE_NAME, usrCacheId, ANONYMOUS_ID_EXPIRATION, configuration.cookieOptions)\n }\n return {\n getUsrId: function() {\n return usrCacheId\n }\n }\n}"],"mappings":"AAAA,SAASA,SAAS,EAAEC,SAAS,QAAQ,mBAAmB;AACxD,SAASC,QAAQ,EAAEC,IAAI,QAAQ,iBAAiB;AAEhD,OAAO,IAAIC,wBAAwB,GAAG,mBAAmB;AACzD,OAAO,IAAIC,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAGH,QAAQ;AAEvD,OAAO,IAAII,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAYC,aAAa,EAAE;EACtD,IAAIC,UAAU,GAAGR,SAAS,CAACI,wBAAwB,CAAC;EACpD,IAAI,CAACI,UAAU,EAAE;IACfA,UAAU,GAAGL,IAAI,CAAC,CAAC;IACnBF,SAAS,CAACG,wBAAwB,EAAEI,UAAU,EAAEH,uBAAuB,EAAEE,aAAa,CAACE,aAAa,CAAC;EACvG;EACA,OAAO;IACLC,QAAQ,EAAE,SAAAA,SAAA,EAAW;MACnB,OAAOF,UAAU;IACnB;EACF,CAAC;AACH,CAAC"}
@@ -0,0 +1,111 @@
1
+ import { ConsoleApiName } from '../helper/display';
2
+ import { toStackTraceString, NO_ERROR_STACK_PRESENT_MESSAGE } from '../helper/errorTools';
3
+ import { computeStackTrace } from '../tracekit';
4
+ import { Observable } from '../helper/observable';
5
+ import { displayIfDebugEnabled, startMonitorErrorCollection } from '..//helper/monitor';
6
+ import { startsWith, assign, performDraw, timeStampNow, extend2Lev } from '../helper/tools';
7
+ import { jsonStringify } from '../helper/serialisation/jsonStringify';
8
+ import { NonErrorPrefix } from '../helper/enums';
9
+ import { TelemetryStatusType, TelemetryType } from './types';
10
+ var ALLOWED_FRAME_URLS = ['https://static.guance.com', 'http://localhost', '<anonymous>'];
11
+ export var TelemetryService = {
12
+ LOGS: 'browser-logs-sdk',
13
+ RUM: 'browser-rum-sdk'
14
+ };
15
+ var telemetryConfiguration = {
16
+ maxEventsPerPage: 0,
17
+ sentEventCount: 0,
18
+ telemetryEnabled: false
19
+ };
20
+ var onRawTelemetryEventCollected;
21
+ export function startTelemetry(telemetryService, configuration) {
22
+ var contextProvider;
23
+ var observable = new Observable();
24
+ telemetryConfiguration.telemetryEnabled = configuration.telemetryEnabled && performDraw(configuration.telemetrySampleRate);
25
+ onRawTelemetryEventCollected = function onRawTelemetryEventCollected(rawEvent) {
26
+ if (telemetryConfiguration.telemetryEnabled) {
27
+ var event = toTelemetryEvent(telemetryService, rawEvent);
28
+ observable.notify(event);
29
+ }
30
+ };
31
+ startMonitorErrorCollection(addTelemetryError);
32
+ assign(telemetryConfiguration, {
33
+ maxEventsPerPage: configuration.maxTelemetryEventsPerPage,
34
+ sentEventCount: 0
35
+ });
36
+ function toTelemetryEvent(telemetryService, event) {
37
+ return extend2Lev({
38
+ type: 'telemetry',
39
+ date: timeStampNow(),
40
+ service: telemetryService,
41
+ version: __BUILD_ENV__SDK_VERSION__,
42
+ source: 'browser',
43
+ telemetry: event // https://github.com/microsoft/TypeScript/issues/48457
44
+ }, contextProvider !== undefined ? contextProvider() : {});
45
+ }
46
+ return {
47
+ setContextProvider: function setContextProvider(provider) {
48
+ contextProvider = provider;
49
+ },
50
+ observable: observable,
51
+ enabled: telemetryConfiguration.telemetryEnabled
52
+ };
53
+ }
54
+ export function resetTelemetry() {
55
+ onRawTelemetryEventCollected = undefined;
56
+ }
57
+ export function addTelemetryDebug(message, context) {
58
+ displayIfDebugEnabled(ConsoleApiName.debug, message, context);
59
+ addTelemetry(assign({
60
+ type: TelemetryType.log,
61
+ message: message,
62
+ status: TelemetryStatusType.debug
63
+ }, context));
64
+ }
65
+ export function addTelemetryError(e, context) {
66
+ addTelemetry(assign({
67
+ type: TelemetryType.log,
68
+ status: TelemetryStatusType.error
69
+ }, formatError(e), context));
70
+ }
71
+ export function addTelemetryConfiguration(configuration) {
72
+ if (telemetryConfiguration.telemetryEnabled) {
73
+ addTelemetry({
74
+ type: TelemetryType.configuration,
75
+ configuration: configuration
76
+ });
77
+ }
78
+ }
79
+ function addTelemetry(event) {
80
+ if (onRawTelemetryEventCollected && telemetryConfiguration.sentEventCount < telemetryConfiguration.maxEventsPerPage) {
81
+ telemetryConfiguration.sentEventCount += 1;
82
+ onRawTelemetryEventCollected(event);
83
+ }
84
+ }
85
+ export function formatError(e) {
86
+ if (e instanceof Error) {
87
+ var stackTrace = computeStackTrace(e);
88
+ return {
89
+ error: {
90
+ kind: stackTrace.name,
91
+ stack: toStackTraceString(scrubCustomerFrames(stackTrace))
92
+ },
93
+ message: stackTrace.message
94
+ };
95
+ }
96
+ return {
97
+ error: {
98
+ stack: NO_ERROR_STACK_PRESENT_MESSAGE
99
+ },
100
+ message: NonErrorPrefix.UNCAUGHT + ' ' + jsonStringify(e)
101
+ };
102
+ }
103
+ export function scrubCustomerFrames(stackTrace) {
104
+ stackTrace.stack = stackTrace.stack.filter(function (frame) {
105
+ return !frame.url || ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) {
106
+ return startsWith(frame.url, allowedFrameUrl);
107
+ });
108
+ });
109
+ return stackTrace;
110
+ }
111
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","names":["ConsoleApiName","toStackTraceString","NO_ERROR_STACK_PRESENT_MESSAGE","computeStackTrace","Observable","displayIfDebugEnabled","startMonitorErrorCollection","startsWith","assign","performDraw","timeStampNow","extend2Lev","jsonStringify","NonErrorPrefix","TelemetryStatusType","TelemetryType","ALLOWED_FRAME_URLS","TelemetryService","LOGS","RUM","telemetryConfiguration","maxEventsPerPage","sentEventCount","telemetryEnabled","onRawTelemetryEventCollected","startTelemetry","telemetryService","configuration","contextProvider","observable","telemetrySampleRate","rawEvent","event","toTelemetryEvent","notify","addTelemetryError","maxTelemetryEventsPerPage","type","date","service","version","__BUILD_ENV__SDK_VERSION__","source","telemetry","undefined","setContextProvider","provider","enabled","resetTelemetry","addTelemetryDebug","message","context","debug","addTelemetry","log","status","e","error","formatError","addTelemetryConfiguration","Error","stackTrace","kind","name","stack","scrubCustomerFrames","UNCAUGHT","filter","frame","url","some","allowedFrameUrl"],"sources":["../../src/telemetry/telemetry.js"],"sourcesContent":["import { ConsoleApiName } from '../helper/display'\nimport {\n toStackTraceString,\n NO_ERROR_STACK_PRESENT_MESSAGE\n} from '../helper/errorTools'\nimport { computeStackTrace } from '../tracekit'\nimport { Observable } from '../helper/observable'\nimport {\n displayIfDebugEnabled,\n startMonitorErrorCollection\n} from '..//helper/monitor'\nimport {\n startsWith,\n assign,\n performDraw,\n timeStampNow,\n extend2Lev\n} from '../helper/tools'\nimport { jsonStringify } from '../helper/serialisation/jsonStringify'\nimport { NonErrorPrefix } from '../helper/enums'\nimport { TelemetryStatusType, TelemetryType } from './types'\n\nconst ALLOWED_FRAME_URLS = [\n 'https://static.guance.com',\n 'http://localhost',\n '<anonymous>'\n]\n\nexport var TelemetryService = {\n LOGS: 'browser-logs-sdk',\n RUM: 'browser-rum-sdk'\n}\n\nvar telemetryConfiguration = {\n maxEventsPerPage: 0,\n sentEventCount: 0,\n telemetryEnabled: false\n}\n\nvar onRawTelemetryEventCollected\n\nexport function startTelemetry(telemetryService, configuration) {\n let contextProvider\n var observable = new Observable()\n telemetryConfiguration.telemetryEnabled =\n configuration.telemetryEnabled &&\n performDraw(configuration.telemetrySampleRate)\n\n onRawTelemetryEventCollected = function (rawEvent) {\n if (telemetryConfiguration.telemetryEnabled) {\n var event = toTelemetryEvent(telemetryService, rawEvent)\n observable.notify(event)\n }\n }\n startMonitorErrorCollection(addTelemetryError)\n\n assign(telemetryConfiguration, {\n maxEventsPerPage: configuration.maxTelemetryEventsPerPage,\n sentEventCount: 0\n })\n\n function toTelemetryEvent(telemetryService, event) {\n return extend2Lev(\n {\n type: 'telemetry',\n date: timeStampNow(),\n service: telemetryService,\n version: __BUILD_ENV__SDK_VERSION__,\n source: 'browser',\n telemetry: event // https://github.com/microsoft/TypeScript/issues/48457\n },\n contextProvider !== undefined ? contextProvider() : {}\n )\n }\n\n return {\n setContextProvider: function (provider) {\n contextProvider = provider\n },\n observable: observable,\n enabled: telemetryConfiguration.telemetryEnabled\n }\n}\n\nexport function resetTelemetry() {\n onRawTelemetryEventCollected = undefined\n}\n\nexport function addTelemetryDebug(message, context) {\n displayIfDebugEnabled(ConsoleApiName.debug, message, context)\n addTelemetry(\n assign(\n {\n type: TelemetryType.log,\n message: message,\n status: TelemetryStatusType.debug\n },\n context\n )\n )\n}\n\nexport function addTelemetryError(e, context) {\n addTelemetry(\n assign(\n {\n type: TelemetryType.log,\n status: TelemetryStatusType.error\n },\n formatError(e),\n context\n )\n )\n}\n\nexport function addTelemetryConfiguration(configuration) {\n if (telemetryConfiguration.telemetryEnabled) {\n addTelemetry({\n type: TelemetryType.configuration,\n configuration: configuration\n })\n }\n}\n\nfunction addTelemetry(event) {\n if (\n onRawTelemetryEventCollected &&\n telemetryConfiguration.sentEventCount <\n telemetryConfiguration.maxEventsPerPage\n ) {\n telemetryConfiguration.sentEventCount += 1\n onRawTelemetryEventCollected(event)\n }\n}\n\nexport function formatError(e) {\n if (e instanceof Error) {\n var stackTrace = computeStackTrace(e)\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(scrubCustomerFrames(stackTrace))\n },\n message: stackTrace.message\n }\n }\n return {\n error: {\n stack: NO_ERROR_STACK_PRESENT_MESSAGE\n },\n message: NonErrorPrefix.UNCAUGHT + ' ' + jsonStringify(e)\n }\n}\n\nexport function scrubCustomerFrames(stackTrace) {\n stackTrace.stack = stackTrace.stack.filter(\n (frame) =>\n !frame.url ||\n ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) {\n return startsWith(frame.url, allowedFrameUrl)\n })\n )\n return stackTrace\n}\n"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export var TelemetryType = {
2
+ log: 'log',
3
+ configuration: 'configuration'
4
+ };
5
+ export var TelemetryStatusType = {
6
+ debug: 'debug',
7
+ error: 'error'
8
+ };
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":["TelemetryType","log","configuration","TelemetryStatusType","debug","error"],"sources":["../../src/telemetry/types.js"],"sourcesContent":["export var TelemetryType = {\n log: 'log',\n configuration: 'configuration'\n}\n\nexport var TelemetryStatusType = {\n debug: 'debug',\n error: 'error'\n}\n"],"mappings":"AAAA,OAAO,IAAIA,aAAa,GAAG;EACzBC,GAAG,EAAE,KAAK;EACVC,aAAa,EAAE;AACjB,CAAC;AAED,OAAO,IAAIC,mBAAmB,GAAG;EAC/BC,KAAK,EAAE,OAAO;EACdC,KAAK,EAAE;AACT,CAAC"}