@cloudcare/browser-core 3.2.39 → 3.2.41

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 (51) hide show
  1. package/cjs/browser/addEventListener.js +45 -5
  2. package/cjs/browser/addEventListener.js.map +1 -1
  3. package/cjs/browser/xhrObservable.js +13 -0
  4. package/cjs/browser/xhrObservable.js.map +1 -1
  5. package/cjs/configuration/remoteConfiguration.js +7 -2
  6. package/cjs/configuration/remoteConfiguration.js.map +1 -1
  7. package/cjs/dataMap.js +2 -0
  8. package/cjs/dataMap.js.map +1 -1
  9. package/cjs/helper/deviceInfo.js +2 -1
  10. package/cjs/helper/deviceInfo.js.map +1 -1
  11. package/cjs/index.js +7 -0
  12. package/cjs/index.js.map +1 -1
  13. package/cjs/session/sessionConstants.js +2 -1
  14. package/cjs/session/sessionConstants.js.map +1 -1
  15. package/cjs/session/sessionManagement.js +13 -3
  16. package/cjs/session/sessionManagement.js.map +1 -1
  17. package/cjs/session/sessionStore.js +1 -1
  18. package/cjs/session/sessionStore.js.map +1 -1
  19. package/cjs/transport/flushController.js +2 -2
  20. package/cjs/transport/flushController.js.map +1 -1
  21. package/esm/browser/addEventListener.js +45 -5
  22. package/esm/browser/addEventListener.js.map +1 -1
  23. package/esm/browser/xhrObservable.js +13 -0
  24. package/esm/browser/xhrObservable.js.map +1 -1
  25. package/esm/configuration/remoteConfiguration.js +6 -2
  26. package/esm/configuration/remoteConfiguration.js.map +1 -1
  27. package/esm/dataMap.js +2 -0
  28. package/esm/dataMap.js.map +1 -1
  29. package/esm/helper/deviceInfo.js +2 -1
  30. package/esm/helper/deviceInfo.js.map +1 -1
  31. package/esm/index.js +1 -1
  32. package/esm/index.js.map +1 -1
  33. package/esm/session/sessionConstants.js +1 -0
  34. package/esm/session/sessionConstants.js.map +1 -1
  35. package/esm/session/sessionManagement.js +14 -4
  36. package/esm/session/sessionManagement.js.map +1 -1
  37. package/esm/session/sessionStore.js +1 -1
  38. package/esm/session/sessionStore.js.map +1 -1
  39. package/esm/transport/flushController.js +2 -2
  40. package/esm/transport/flushController.js.map +1 -1
  41. package/package.json +3 -3
  42. package/src/browser/addEventListener.js +60 -8
  43. package/src/browser/xhrObservable.js +17 -2
  44. package/src/configuration/remoteConfiguration.js +13 -2
  45. package/src/dataMap.js +2 -0
  46. package/src/helper/deviceInfo.js +2 -1
  47. package/src/index.js +2 -1
  48. package/src/session/sessionConstants.js +1 -0
  49. package/src/session/sessionManagement.js +14 -4
  50. package/src/session/sessionStore.js +1 -1
  51. package/src/transport/flushController.js +6 -4
@@ -28,7 +28,11 @@ function createXhrObservable() {
28
28
  },
29
29
  { computeHandlingStack: true }
30
30
  )
31
-
31
+ var setRequestHeaderInstrumentMethod = instrumentMethod(
32
+ XMLHttpRequest.prototype,
33
+ 'setRequestHeader',
34
+ setRequestHeaderXhr
35
+ )
32
36
  var abortInstrumentMethod = instrumentMethod(
33
37
  XMLHttpRequest.prototype,
34
38
  'abort',
@@ -39,6 +43,7 @@ function createXhrObservable() {
39
43
  openInstrumentMethod.stop()
40
44
  sendInstrumentMethod.stop()
41
45
  abortInstrumentMethod.stop()
46
+ setRequestHeaderInstrumentMethod.stop()
42
47
  }
43
48
  })
44
49
  }
@@ -53,7 +58,17 @@ function openXhr(params) {
53
58
  url: normalizeUrl(String(url))
54
59
  })
55
60
  }
56
-
61
+ function setRequestHeaderXhr(params) {
62
+ var xhr = params.target
63
+ var headerKey = params.parameters[0]
64
+ var headerValue = params.parameters[1]
65
+ var context = xhrContexts.get(xhr)
66
+ if (context && headerKey) {
67
+ var requestHeaderContexts = context.requestHeaderContexts || {}
68
+ requestHeaderContexts[headerKey] = headerValue
69
+ context.requestHeaderContexts = requestHeaderContexts
70
+ }
71
+ }
57
72
  function sendXhr(params, observable) {
58
73
  var xhr = params.target
59
74
  var handlingStack = params.handlingStack
@@ -5,7 +5,8 @@ import { objectEntries, getType } from '../helper/tools'
5
5
  export function fetchAndApplyRemoteConfiguration(initConfiguration, callback) {
6
6
  fetchRemoteConfiguration(initConfiguration, (remoteInitConfiguration) => {
7
7
  callback(
8
- applyRemoteConfiguration(initConfiguration, remoteInitConfiguration)
8
+ applyRemoteConfiguration(initConfiguration, remoteInitConfiguration),
9
+ getSimpleRemoteConfiguration(initConfiguration, remoteInitConfiguration)
9
10
  )
10
11
  })
11
12
  }
@@ -48,7 +49,7 @@ function modificationByFieldsPath(remoteConfiguration, modifiableFieldPaths) {
48
49
  })
49
50
  return result
50
51
  }
51
- export function applyRemoteConfiguration(
52
+ export function getSimpleRemoteConfiguration(
52
53
  initConfiguration,
53
54
  remoteInitConfiguration
54
55
  ) {
@@ -70,6 +71,16 @@ export function applyRemoteConfiguration(
70
71
  simpleRemoteInitConfiguration[simpleKey] = remoteInitConfiguration[key]
71
72
  }
72
73
  }
74
+ return simpleRemoteInitConfiguration
75
+ }
76
+ export function applyRemoteConfiguration(
77
+ initConfiguration,
78
+ remoteInitConfiguration
79
+ ) {
80
+ const simpleRemoteInitConfiguration = getSimpleRemoteConfiguration(
81
+ initConfiguration,
82
+ remoteInitConfiguration
83
+ )
73
84
  return {
74
85
  ...initConfiguration,
75
86
  ...modificationByFieldsPath(
package/src/dataMap.js CHANGED
@@ -12,6 +12,7 @@ export var commonTags = {
12
12
  user_name: 'user.name',
13
13
  session_id: 'session.id',
14
14
  session_type: 'session.type',
15
+ session_is_forced: 'session.is_forced_session',
15
16
  session_sampling: 'session.is_sampling',
16
17
  is_signin: 'user.is_signin',
17
18
  os: 'device.os',
@@ -24,6 +25,7 @@ export var commonTags = {
24
25
  network_type: 'device.network_type',
25
26
  time_zone: 'device.time_zone',
26
27
  device: 'device.device',
28
+ user_agent: 'device.user_agent',
27
29
  view_id: 'view.id',
28
30
  view_referrer: 'view.referrer',
29
31
  view_url: 'view.url',
@@ -601,7 +601,8 @@ if (typeof window !== 'undefined') {
601
601
  screenSize: window.screen.width + '*' + window.screen.height,
602
602
  networkType: MethodLibrary.getNetwork(),
603
603
  device: MethodLibrary.getDeviceType(),
604
- timeZone: MethodLibrary.getTimeZone()
604
+ timeZone: MethodLibrary.getTimeZone(),
605
+ userAgent: VariableLibrary.navigator.userAgent || ''
605
606
  }
606
607
  }
607
608
  export var deviceInfo = _deviceInfo
package/src/index.js CHANGED
@@ -46,7 +46,8 @@ export {
46
46
  export {
47
47
  SESSION_TIME_OUT_DELAY,
48
48
  SESSION_STORE_KEY,
49
- SessionPersistence
49
+ SessionPersistence,
50
+ SESSION_NOT_TRACKED
50
51
  } from './session/sessionConstants'
51
52
  export { STORAGE_POLL_DELAY } from './session/sessionStore'
52
53
  export * from './transport'
@@ -2,6 +2,7 @@ import { ONE_HOUR, ONE_MINUTE } from '../helper/tools'
2
2
  export var SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR
3
3
  export var SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE
4
4
  export var SESSION_STORE_KEY = '_gc_s'
5
+ export const SESSION_NOT_TRACKED = '0'
5
6
  export const SessionPersistence = {
6
7
  COOKIE: 'cookie',
7
8
  LOCAL_STORAGE: 'local-storage'
@@ -7,7 +7,7 @@ import {
7
7
  addEventListeners
8
8
  } from '../browser/addEventListener'
9
9
  import { clearInterval, setInterval } from '../helper/timer'
10
- import { SESSION_TIME_OUT_DELAY } from './sessionConstants'
10
+ import { SESSION_TIME_OUT_DELAY, SESSION_NOT_TRACKED } from './sessionConstants'
11
11
  import { startSessionStore } from './sessionStore'
12
12
 
13
13
  export const VISIBILITY_CHECK_DELAY = ONE_MINUTE
@@ -62,10 +62,20 @@ export function startSessionManager(
62
62
  })
63
63
 
64
64
  function buildSessionContext() {
65
+ const session = sessionStore.getSession()
66
+ if (!session) {
67
+ return {
68
+ id: 'invalid',
69
+ trackingType: SESSION_NOT_TRACKED,
70
+ isSessionForced: false,
71
+ hasError: false
72
+ }
73
+ }
65
74
  return {
66
- id: sessionStore.getSession().id,
67
- trackingType: sessionStore.getSession()[productKey],
68
- hasError: !!sessionStore.getSession().hasError
75
+ id: session.id,
76
+ trackingType: session[productKey],
77
+ hasError: !!session.hasError,
78
+ isSessionForced: !!session.forcedSession
69
79
  }
70
80
  }
71
81
 
@@ -225,7 +225,7 @@ export function startSessionStore(
225
225
  expandOrRenewSession: throttledExpandOrRenewSession,
226
226
  expandSession,
227
227
  getSession: function () {
228
- return sessionCache || {}
228
+ return sessionCache
229
229
  },
230
230
  renewObservable,
231
231
  expireObservable,
@@ -15,12 +15,14 @@ export function createFlushController({
15
15
  pageExitObservable,
16
16
  sessionExpireObservable
17
17
  }) {
18
- pageExitObservable.subscribe(function (event) {
18
+ var pageExitSubscription = pageExitObservable.subscribe(function (event) {
19
19
  return flush(event.reason)
20
20
  })
21
- sessionExpireObservable.subscribe(function () {
22
- return flush('session_expire')
23
- })
21
+ var sessionExpireSubscription = sessionExpireObservable.subscribe(
22
+ function () {
23
+ return flush('session_expire')
24
+ }
25
+ )
24
26
  var flushObservable = new Observable(function () {
25
27
  return function () {
26
28
  pageExitSubscription.unsubscribe()