@cloudcare/browser-core 1.1.2 → 1.2.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 (134) hide show
  1. package/cjs/{cookie.js → browser/cookie.js} +6 -37
  2. package/cjs/browser/fetchObservable.js +91 -0
  3. package/cjs/browser/xhrObservable.js +118 -0
  4. package/cjs/configuration/configuration.js +70 -0
  5. package/cjs/configuration/transportConfiguration.js +64 -0
  6. package/cjs/console/consoleObservable.js +84 -0
  7. package/cjs/dataMap.js +26 -21
  8. package/cjs/error/trackRuntimeError.js +27 -0
  9. package/cjs/helper/catchUserErrors.js +20 -0
  10. package/cjs/helper/contextHistory.js +134 -0
  11. package/cjs/helper/createEventRateLimiter.js +47 -0
  12. package/cjs/helper/deviceInfo.js +8 -25
  13. package/cjs/helper/display.js +31 -0
  14. package/cjs/helper/enums.js +28 -2
  15. package/cjs/helper/errorTools.js +63 -2
  16. package/cjs/helper/instrumentMethod.js +93 -0
  17. package/cjs/helper/lifeCycle.js +5 -3
  18. package/cjs/helper/observable.js +40 -2
  19. package/cjs/helper/tools.js +217 -11
  20. package/cjs/index.js +153 -23
  21. package/cjs/init.js +17 -27
  22. package/cjs/report/reportObservable.js +112 -0
  23. package/cjs/session/sessionConstants.js +13 -0
  24. package/cjs/session/sessionCookieStore.js +188 -0
  25. package/cjs/session/sessionManagement.js +96 -0
  26. package/cjs/session/sessionStore.js +150 -0
  27. package/cjs/synthetics/syntheticsWorkerValues.js +32 -0
  28. package/cjs/synthetics/usr.js +32 -0
  29. package/cjs/tracekit/computeStackTrace.js +73 -563
  30. package/cjs/tracekit/index.js +3 -15
  31. package/cjs/tracekit/tracekit.js +113 -0
  32. package/cjs/transport/batch.js +332 -0
  33. package/cjs/transport/httpRequest.js +112 -0
  34. package/cjs/transport/index.js +29 -0
  35. package/cjs/transport/sendWithRetryStrategy.js +177 -0
  36. package/cjs/transport/startBatchWithReplica.js +24 -0
  37. package/esm/{cookie.js → browser/cookie.js} +4 -35
  38. package/esm/browser/fetchObservable.js +77 -0
  39. package/esm/browser/xhrObservable.js +106 -0
  40. package/esm/configuration/configuration.js +55 -0
  41. package/esm/configuration/transportConfiguration.js +54 -0
  42. package/esm/console/consoleObservable.js +70 -0
  43. package/esm/dataMap.js +26 -21
  44. package/esm/error/trackRuntimeError.js +16 -0
  45. package/esm/helper/catchUserErrors.js +12 -0
  46. package/esm/helper/contextHistory.js +106 -0
  47. package/esm/helper/createEventRateLimiter.js +38 -0
  48. package/esm/helper/deviceInfo.js +6 -25
  49. package/esm/helper/display.js +21 -0
  50. package/esm/helper/enums.js +25 -1
  51. package/esm/helper/errorTools.js +58 -3
  52. package/esm/helper/instrumentMethod.js +81 -0
  53. package/esm/helper/lifeCycle.js +5 -3
  54. package/esm/helper/observable.js +39 -3
  55. package/esm/helper/tools.js +173 -3
  56. package/esm/index.js +17 -7
  57. package/esm/init.js +17 -22
  58. package/esm/report/reportObservable.js +98 -0
  59. package/esm/session/sessionConstants.js +3 -0
  60. package/esm/session/sessionCookieStore.js +168 -0
  61. package/esm/session/sessionManagement.js +78 -0
  62. package/esm/session/sessionStore.js +139 -0
  63. package/esm/synthetics/syntheticsWorkerValues.js +15 -0
  64. package/esm/synthetics/usr.js +18 -0
  65. package/esm/tracekit/computeStackTrace.js +73 -557
  66. package/esm/tracekit/index.js +1 -1
  67. package/esm/tracekit/tracekit.js +103 -0
  68. package/esm/transport/batch.js +316 -0
  69. package/esm/transport/httpRequest.js +104 -0
  70. package/esm/transport/index.js +3 -0
  71. package/esm/transport/sendWithRetryStrategy.js +165 -0
  72. package/esm/transport/startBatchWithReplica.js +15 -0
  73. package/package.json +2 -2
  74. package/src/.DS_Store +0 -0
  75. package/src/{cookie.js → browser/cookie.js} +6 -34
  76. package/src/browser/fetchObservable.js +86 -0
  77. package/src/browser/xhrObservable.js +102 -0
  78. package/src/configuration/configuration.js +61 -0
  79. package/src/configuration/transportConfiguration.js +42 -0
  80. package/src/console/consoleObservable.js +65 -0
  81. package/src/dataMap.js +26 -21
  82. package/src/error/trackRuntimeError.js +19 -0
  83. package/src/helper/catchUserErrors.js +12 -0
  84. package/src/helper/contextHistory.js +85 -0
  85. package/src/helper/createEventRateLimiter.js +37 -0
  86. package/src/helper/deviceInfo.js +5 -51
  87. package/src/helper/display.js +21 -0
  88. package/src/helper/enums.js +38 -14
  89. package/src/helper/errorTools.js +76 -12
  90. package/src/helper/instrumentMethod.js +97 -0
  91. package/src/helper/lifeCycle.js +5 -3
  92. package/src/helper/observable.js +33 -2
  93. package/src/helper/tools.js +159 -5
  94. package/src/index.js +18 -7
  95. package/src/init.js +17 -18
  96. package/src/report/reportObservable.js +113 -0
  97. package/src/session/sessionConstants.js +3 -0
  98. package/src/session/sessionCookieStore.js +159 -0
  99. package/src/session/sessionManagement.js +89 -0
  100. package/src/session/sessionStore.js +139 -0
  101. package/src/synthetics/syntheticsWorkerValues.js +22 -0
  102. package/src/synthetics/usr.js +18 -0
  103. package/src/tracekit/computeStackTrace.js +75 -551
  104. package/src/tracekit/index.js +1 -1
  105. package/src/tracekit/tracekit.js +100 -0
  106. package/src/transport/batch.js +289 -0
  107. package/src/transport/httpRequest.js +109 -0
  108. package/src/transport/index.js +3 -0
  109. package/src/transport/sendWithRetryStrategy.js +186 -0
  110. package/src/transport/startBatchWithReplica.js +26 -0
  111. package/cjs/configuration.js +0 -184
  112. package/cjs/errorCollection.js +0 -167
  113. package/cjs/fetchProxy.js +0 -162
  114. package/cjs/helper/errorFilter.js +0 -47
  115. package/cjs/sessionManagement.js +0 -221
  116. package/cjs/tracekit/report.js +0 -289
  117. package/cjs/transport.js +0 -373
  118. package/cjs/xhrProxy.js +0 -122
  119. package/esm/configuration.js +0 -167
  120. package/esm/errorCollection.js +0 -141
  121. package/esm/fetchProxy.js +0 -116
  122. package/esm/helper/errorFilter.js +0 -38
  123. package/esm/sessionManagement.js +0 -195
  124. package/esm/tracekit/report.js +0 -273
  125. package/esm/transport.js +0 -357
  126. package/esm/xhrProxy.js +0 -110
  127. package/src/configuration.js +0 -156
  128. package/src/errorCollection.js +0 -170
  129. package/src/fetchProxy.js +0 -109
  130. package/src/helper/errorFilter.js +0 -38
  131. package/src/sessionManagement.js +0 -224
  132. package/src/tracekit/report.js +0 -284
  133. package/src/transport.js +0 -380
  134. package/src/xhrProxy.js +0 -106
@@ -1,141 +0,0 @@
1
- import { toArray, jsonStringify, find, clocksNow, map, extend } from './helper/tools';
2
- import { ErrorSource, formatUnknownError, toStackTraceString, formatErrorMessage, createHandlingStack } from './helper/errorTools';
3
- import { computeStackTrace, subscribe, unsubscribe } from './tracekit';
4
- import { Observable } from './helper/observable';
5
- import { isIntakeRequest } from './configuration';
6
- import { RequestType, ErrorHandling } from './helper/enums';
7
- import { resetXhrProxy, startXhrProxy } from './xhrProxy';
8
- import { resetFetchProxy, startFetchProxy } from './fetchProxy';
9
- var errorObservable;
10
- export function startAutomaticErrorCollection(configuration) {
11
- if (!errorObservable) {
12
- errorObservable = new Observable();
13
- trackNetworkError(configuration, errorObservable);
14
- startConsoleTracking(errorObservable);
15
- startRuntimeErrorTracking(errorObservable);
16
- }
17
-
18
- return errorObservable;
19
- }
20
- var originalConsoleError;
21
- export function startConsoleTracking(errorObservable) {
22
- originalConsoleError = console.error;
23
-
24
- console.error = function () {
25
- originalConsoleError.apply(console, arguments);
26
- var handlingStack = createHandlingStack();
27
- errorObservable.notify(extend({}, buildErrorFromParams(toArray(arguments), handlingStack), {
28
- source: ErrorSource.CONSOLE,
29
- startClocks: clocksNow(),
30
- handling: ErrorHandling.HANDLED
31
- }));
32
- };
33
- }
34
-
35
- function buildErrorFromParams(params, handlingStack) {
36
- var firstErrorParam = find(params, function (param) {
37
- return param instanceof Error;
38
- });
39
- var message = '';
40
- message = map(['console error:'].concat(params), function (param) {
41
- return formatConsoleParameters(param);
42
- }).join(' ');
43
- return {
44
- message: message,
45
- stack: firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined,
46
- handlingStack: handlingStack
47
- };
48
- }
49
-
50
- export function stopConsoleTracking() {
51
- console.error = originalConsoleError;
52
- }
53
-
54
- function formatConsoleParameters(param) {
55
- if (typeof param === 'string') {
56
- return param;
57
- }
58
-
59
- if (param instanceof Error) {
60
- return formatErrorMessage(computeStackTrace(param));
61
- }
62
-
63
- return jsonStringify(param, undefined, 2);
64
- }
65
-
66
- var traceKitReportHandler;
67
- export function startRuntimeErrorTracking(errorObservable) {
68
- traceKitReportHandler = function traceKitReportHandler(stackTrace, _, errorObject) {
69
- var error = formatUnknownError(stackTrace, errorObject, 'Uncaught');
70
- errorObservable.notify({
71
- message: error.message,
72
- stack: error.stack,
73
- type: error.type,
74
- source: ErrorSource.SOURCE,
75
- startClocks: clocksNow(),
76
- handling: ErrorHandling.UNHANDLED
77
- });
78
- };
79
-
80
- subscribe(traceKitReportHandler);
81
- }
82
- export function stopRuntimeErrorTracking() {
83
- unsubscribe(traceKitReportHandler);
84
- }
85
- export function trackNetworkError(configuration, errorObservable) {
86
- startXhrProxy().onRequestComplete(function (context) {
87
- handleCompleteRequest(RequestType.XHR, context);
88
- });
89
- startFetchProxy().onRequestComplete(function (context) {
90
- handleCompleteRequest(RequestType.FETCH, context);
91
- });
92
-
93
- function handleCompleteRequest(type, request) {
94
- if (!isIntakeRequest(request.url, configuration) && !request.isAborted && (isRejected(request) || isServerError(request) || configuration.isServerError(request))) {
95
- errorObservable.notify({
96
- message: format(type) + ' error ' + request.method + ' ' + request.url,
97
- resource: {
98
- method: request.method,
99
- statusCode: request.status,
100
- url: request.url,
101
- traceId: request.traceId,
102
- spanId: request.spanId
103
- },
104
- source: ErrorSource.NETWORK,
105
- stack: truncateResponse(request.response, configuration) || 'Failed to load',
106
- startClocks: request.startClocks
107
- });
108
- }
109
- }
110
-
111
- return {
112
- stop: () => {
113
- resetXhrProxy();
114
- resetFetchProxy();
115
- }
116
- };
117
- }
118
-
119
- function isRejected(request) {
120
- return request.status === 0 && request.responseType !== 'opaque';
121
- }
122
-
123
- function isServerError(request) {
124
- return request.status >= 500;
125
- }
126
-
127
- function truncateResponse(response, configuration) {
128
- if (response && response.length > configuration.requestErrorResponseLengthLimit) {
129
- return response.substring(0, configuration.requestErrorResponseLengthLimit) + '...';
130
- }
131
-
132
- return response;
133
- }
134
-
135
- function format(type) {
136
- if (RequestType.XHR === type) {
137
- return 'XHR';
138
- }
139
-
140
- return 'Fetch';
141
- }
package/esm/fetchProxy.js DELETED
@@ -1,116 +0,0 @@
1
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
2
-
3
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
4
-
5
- import { each, relativeNow, clocksNow, elapsed } from './helper/tools';
6
- import { computeStackTrace } from './tracekit';
7
- import { toStackTraceString } from './helper/errorTools';
8
- import { normalizeUrl } from './helper/urlPolyfill';
9
- var fetchProxySingleton;
10
- var originalFetch;
11
- var beforeSendCallbacks = [];
12
- var onRequestCompleteCallbacks = [];
13
- export function startFetchProxy() {
14
- if (!fetchProxySingleton) {
15
- proxyFetch();
16
- fetchProxySingleton = {
17
- beforeSend: function beforeSend(callback) {
18
- beforeSendCallbacks.push(callback);
19
- },
20
- onRequestComplete: function onRequestComplete(callback) {
21
- onRequestCompleteCallbacks.push(callback);
22
- }
23
- };
24
- }
25
-
26
- return fetchProxySingleton;
27
- }
28
- export function resetFetchProxy() {
29
- if (fetchProxySingleton) {
30
- fetchProxySingleton = undefined;
31
- beforeSendCallbacks.splice(0, beforeSendCallbacks.length);
32
- onRequestCompleteCallbacks.splice(0, onRequestCompleteCallbacks.length);
33
- window.fetch = originalFetch;
34
- }
35
- }
36
-
37
- function proxyFetch() {
38
- if (!window.fetch) {
39
- return;
40
- }
41
-
42
- originalFetch = window.fetch;
43
-
44
- window.fetch = function (input, init) {
45
- var responsePromise;
46
- var context = beforeSend.apply(null, [input, init]);
47
-
48
- if (context) {
49
- responsePromise = originalFetch.call(this, context.input, context.init);
50
- afterSend.apply(null, [responsePromise, context]);
51
- } else {
52
- responsePromise = originalFetch.call(this, input, init);
53
- }
54
-
55
- return responsePromise;
56
- };
57
- }
58
-
59
- function beforeSend(input, init) {
60
- var method = init && init.method || typeof input === 'object' && input.method || 'GET';
61
- var url = normalizeUrl(typeof input === 'object' && input.url || input);
62
- var startClocks = clocksNow();
63
- var context = {
64
- init: init,
65
- input: input,
66
- method: method,
67
- startTime: relativeNow(),
68
- startClocks: startClocks,
69
- url: url
70
- };
71
- each(beforeSendCallbacks, function (callback) {
72
- callback(context);
73
- });
74
- return context;
75
- }
76
-
77
- function afterSend(responsePromise, context) {
78
- var reportFetch = /*#__PURE__*/function () {
79
- var _ref = _asyncToGenerator(function* (response) {
80
- context.duration = elapsed(context.startClocks.relative, relativeNow());
81
-
82
- if ('stack' in response || response instanceof Error) {
83
- context.status = 0;
84
- context.response = toStackTraceString(computeStackTrace(response));
85
- context.headers = response.headers;
86
- context.isAborted = response instanceof DOMException && response.code === DOMException.ABORT_ERR;
87
- each(onRequestCompleteCallbacks, function (callback) {
88
- callback(context);
89
- });
90
- } else if ('status' in response) {
91
- var text;
92
-
93
- try {
94
- text = yield response.clone().text();
95
- } catch (e) {
96
- text = 'Unable to retrieve response: ' + e;
97
- }
98
-
99
- context.response = text;
100
- context.responseType = response.type;
101
- context.status = response.status;
102
- context.headers = response.headers;
103
- context.isAborted = false;
104
- each(onRequestCompleteCallbacks, function (callback) {
105
- callback(context);
106
- });
107
- }
108
- });
109
-
110
- return function reportFetch(_x) {
111
- return _ref.apply(this, arguments);
112
- };
113
- }();
114
-
115
- responsePromise.then(reportFetch, reportFetch);
116
- }
@@ -1,38 +0,0 @@
1
- import { ErrorSource } from './errorTools';
2
- import { ONE_MINUTE, clocksNow } from './tools';
3
- export function createErrorFilter(configuration, onLimitReached) {
4
- var errorCount = 0;
5
- var allowNextError = false;
6
- return {
7
- isLimitReached: function isLimitReached() {
8
- if (errorCount === 0) {
9
- setTimeout(function () {
10
- errorCount = 0;
11
- }, ONE_MINUTE);
12
- }
13
-
14
- errorCount += 1;
15
-
16
- if (errorCount <= configuration.maxErrorsByMinute || allowNextError) {
17
- allowNextError = false;
18
- return false;
19
- }
20
-
21
- if (errorCount === configuration.maxErrorsByMinute + 1) {
22
- allowNextError = true;
23
-
24
- try {
25
- onLimitReached({
26
- message: "Reached max number of errors by minute: ".concat(configuration.maxErrorsByMinute),
27
- source: ErrorSource.AGENT,
28
- startClocks: clocksNow()
29
- });
30
- } finally {
31
- allowNextError = false;
32
- }
33
- }
34
-
35
- return true;
36
- }
37
- };
38
- }
@@ -1,195 +0,0 @@
1
- import { cacheCookieAccess, COOKIE_ACCESS_DELAY } from './cookie';
2
- import { Observable } from './helper/observable';
3
- import { ONE_MINUTE, ONE_HOUR, throttle, UUID, isEmptyObject, objectEntries, addEventListener, addEventListeners, each } from './helper/tools';
4
- import { DOM_EVENT } from './helper/enums';
5
- export var SESSION_COOKIE_NAME = '_dataflux_s';
6
- export var SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;
7
- export var SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;
8
- export var VISIBILITY_CHECK_DELAY = ONE_MINUTE;
9
- export var ANONYMOUS_ID_COOKIE_NAME = '_dataflulx_an_id';
10
- export var ANONYMOUS_ID_EXPIRATION = 60 * 24 * ONE_HOUR;
11
-
12
- function cacheAnonymousID(options) {
13
- var anonymousCookie = cacheCookieAccess(ANONYMOUS_ID_COOKIE_NAME, options);
14
- var anonymouseId = anonymousCookie.get();
15
-
16
- if (!anonymouseId) {
17
- anonymousCookie.set(UUID(), ANONYMOUS_ID_EXPIRATION);
18
- }
19
-
20
- return anonymousCookie;
21
- }
22
- /**
23
- * Limit access to cookie to avoid performance issues
24
- */
25
-
26
-
27
- export function startSessionManagement(options, productKey, computeSessionState) {
28
- var anonymousCookie = cacheAnonymousID(options);
29
- var sessionCookie = cacheCookieAccess(SESSION_COOKIE_NAME, options);
30
- var renewObservable = new Observable();
31
- var currentSession = retrieveActiveSession(sessionCookie);
32
- var currentSessionId = currentSession.id;
33
- var expandOrRenewSession = throttle(function () {
34
- sessionCookie.clearCache();
35
- var session = retrieveActiveSession(sessionCookie);
36
- var state = computeSessionState(session[productKey]);
37
- session[productKey] = state.trackingType;
38
-
39
- if (state.isTracked && !session.id) {
40
- session.id = UUID();
41
- session.created = String(Date.now());
42
- } // save changes and expand session duration
43
-
44
-
45
- persistSession(session, sessionCookie); // If the session id has changed, notify that the session has been renewed
46
-
47
- if (state.isTracked && currentSessionId !== session.id) {
48
- currentSessionId = session.id;
49
- renewObservable.notify();
50
- }
51
- }, COOKIE_ACCESS_DELAY);
52
-
53
- var expandSession = function expandSession() {
54
- sessionCookie.clearCache();
55
- var session = retrieveActiveSession(sessionCookie);
56
- persistSession(session, sessionCookie);
57
- };
58
-
59
- expandOrRenewSession();
60
- trackActivity(expandOrRenewSession);
61
- trackVisibility(expandSession);
62
- return {
63
- getAnonymousID: function getAnonymousID() {
64
- return anonymousCookie.get();
65
- },
66
- getId: function getId() {
67
- // 先获取debug id
68
- var session = retrieveActiveSession(sessionCookie);
69
- return session.did || session.id;
70
- },
71
- getTrackingType: function getTrackingType() {
72
- return retrieveActiveSession(sessionCookie)[productKey];
73
- },
74
- getDebugSession: function getDebugSession() {
75
- var session = retrieveActiveSession(sessionCookie);
76
-
77
- if (isEmptyObject(session) || !session.did) {
78
- return {};
79
- }
80
-
81
- return {
82
- id: session.did,
83
- created: session.dcreated
84
- };
85
- },
86
- addDebugSession: function addDebugSession(id, created) {
87
- var session = retrieveActiveSession(sessionCookie);
88
-
89
- if (!isEmptyObject(session)) {
90
- session.did = id || UUID;
91
- session.dcreated = created || String(Date.now());
92
- persistSession(session, sessionCookie);
93
- }
94
- },
95
- clearDebugSession: function clearDebugSession() {
96
- var session = retrieveActiveSession(sessionCookie);
97
- var newSession = {};
98
- each(objectEntries(session), function (item) {
99
- if (item[0] !== 'did' && item[0] !== 'dcreated') {
100
- newSession[item[0]] = item[1];
101
- }
102
- });
103
- persistSession(newSession, sessionCookie);
104
- },
105
- renewObservable: renewObservable
106
- };
107
- }
108
- var SESSION_ENTRY_REGEXP = /^([a-z]+)=([a-z0-9-]+)$/;
109
- var SESSION_ENTRY_SEPARATOR = '&';
110
- export function isValidSessionString(sessionString) {
111
- return sessionString !== undefined && (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString));
112
- }
113
-
114
- function retrieveActiveSession(sessionCookie) {
115
- var session = retrieveSession(sessionCookie);
116
-
117
- if (isActiveSession(session)) {
118
- return session;
119
- }
120
-
121
- clearSession(sessionCookie);
122
- return {};
123
- }
124
-
125
- function isActiveSession(session) {
126
- return (session.created === undefined || Date.now() - Number(session.created) < SESSION_TIME_OUT_DELAY) && (session.expire === undefined || Date.now() < Number(session.expire));
127
- }
128
-
129
- function retrieveSession(sessionCookie) {
130
- var sessionString = sessionCookie.get();
131
- var session = {};
132
-
133
- if (isValidSessionString(sessionString)) {
134
- each(sessionString.split(SESSION_ENTRY_SEPARATOR), function (entry) {
135
- var matches = SESSION_ENTRY_REGEXP.exec(entry);
136
-
137
- if (matches !== null) {
138
- var key = matches[1];
139
- var value = matches[2];
140
- session[key] = value;
141
- }
142
- });
143
- }
144
-
145
- return session;
146
- }
147
-
148
- export function persistSession(session, cookie) {
149
- if (isEmptyObject(session)) {
150
- clearSession(cookie);
151
- return;
152
- }
153
-
154
- session.expire = String(Date.now() + SESSION_EXPIRATION_DELAY);
155
- var cookieArray = [];
156
- each(objectEntries(session), function (item) {
157
- cookieArray.push(item[0] + '=' + item[1]);
158
- });
159
- var cookieString = cookieArray.join(SESSION_ENTRY_SEPARATOR);
160
- cookie.set(cookieString, SESSION_EXPIRATION_DELAY);
161
- }
162
-
163
- function clearSession(cookie) {
164
- cookie.set('', 0);
165
- }
166
-
167
- export function stopSessionManagement() {
168
- each(stopCallbacks, function (e) {
169
- e();
170
- });
171
- stopCallbacks = [];
172
- }
173
- var stopCallbacks = [];
174
- export function trackActivity(expandOrRenewSession) {
175
- var listeners = addEventListeners(window, [DOM_EVENT.CLICK, DOM_EVENT.TOUCH_START, DOM_EVENT.KEY_DOWN, DOM_EVENT.SCROLL], expandOrRenewSession, {
176
- capture: true,
177
- passive: true
178
- });
179
- stopCallbacks.push(listeners.stop);
180
- }
181
-
182
- function trackVisibility(expandSession) {
183
- var expandSessionWhenVisible = function expandSessionWhenVisible() {
184
- if (document.visibilityState === 'visible') {
185
- expandSession();
186
- }
187
- };
188
-
189
- var listener = addEventListener(document, DOM_EVENT.VISIBILITY_CHANGE, expandSessionWhenVisible);
190
- stopCallbacks.push(listener.stop);
191
- var visibilityCheckInterval = window.setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);
192
- stopCallbacks.push(function () {
193
- clearInterval(visibilityCheckInterval);
194
- });
195
- }