@cloudcare/browser-core 3.0.29 → 3.1.1
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/cjs/browser/addEventListener.js +3 -8
- package/cjs/browser/addEventListener.js.map +1 -0
- package/cjs/browser/cookie.js +3 -14
- package/cjs/browser/cookie.js.map +1 -0
- package/cjs/browser/fetchObservable.js +4 -21
- package/cjs/browser/fetchObservable.js.map +1 -0
- package/cjs/browser/htmlDomUtils.js +3 -9
- package/cjs/browser/htmlDomUtils.js.map +1 -0
- package/cjs/browser/pageExitObservable.js +3 -9
- package/cjs/browser/pageExitObservable.js.map +1 -0
- package/cjs/browser/runOnReadyState.js +2 -4
- package/cjs/browser/runOnReadyState.js.map +1 -0
- package/cjs/browser/scroll.js +32 -0
- package/cjs/browser/scroll.js.map +1 -0
- package/cjs/browser/xhrObservable.js +2 -21
- package/cjs/browser/xhrObservable.js.map +1 -0
- package/cjs/configuration/configuration.js +9 -20
- package/cjs/configuration/configuration.js.map +1 -0
- package/cjs/configuration/transportConfiguration.js +6 -20
- package/cjs/configuration/transportConfiguration.js.map +1 -0
- package/cjs/console/consoleObservable.js +3 -21
- package/cjs/console/consoleObservable.js.map +1 -0
- package/cjs/dataMap.js +24 -10
- package/cjs/dataMap.js.map +1 -0
- package/cjs/error/trackRuntimeError.js +3 -7
- package/cjs/error/trackRuntimeError.js.map +1 -0
- package/cjs/helper/boundedBuffer.js +2 -6
- package/cjs/helper/boundedBuffer.js.map +1 -0
- package/cjs/helper/byteUtils.js +6 -16
- package/cjs/helper/byteUtils.js.map +1 -0
- package/cjs/helper/catchUserErrors.js +2 -4
- package/cjs/helper/catchUserErrors.js.map +1 -0
- package/cjs/helper/contextHistory.js +21 -37
- package/cjs/helper/contextHistory.js.map +1 -0
- package/cjs/helper/createEventRateLimiter.js +2 -10
- package/cjs/helper/createEventRateLimiter.js.map +1 -0
- package/cjs/helper/deviceInfo.js +10 -64
- package/cjs/helper/deviceInfo.js.map +1 -0
- package/cjs/helper/display.js +2 -5
- package/cjs/helper/display.js.map +1 -0
- package/cjs/helper/enums.js +8 -2
- package/cjs/helper/enums.js.map +1 -0
- package/cjs/helper/errorTools.js +32 -38
- package/cjs/helper/errorTools.js.map +1 -0
- package/cjs/helper/eventEmitter.js +2 -6
- package/cjs/helper/eventEmitter.js.map +1 -0
- package/cjs/helper/getZoneJsOriginalValue.js +2 -5
- package/cjs/helper/getZoneJsOriginalValue.js.map +1 -0
- package/cjs/helper/instrumentMethod.js +10 -22
- package/cjs/helper/instrumentMethod.js.map +1 -0
- package/cjs/helper/lifeCycle.js +2 -9
- package/cjs/helper/lifeCycle.js.map +1 -0
- package/cjs/helper/limitModification.js +4 -22
- package/cjs/helper/limitModification.js.map +1 -0
- package/cjs/helper/mobileUtil.js +2 -20
- package/cjs/helper/mobileUtil.js.map +1 -0
- package/cjs/helper/monitor.js +2 -11
- package/cjs/helper/monitor.js.map +1 -0
- package/cjs/helper/observable.js +2 -9
- package/cjs/helper/observable.js.map +1 -0
- package/cjs/helper/readBytesFromStream.js +4 -14
- package/cjs/helper/readBytesFromStream.js.map +1 -0
- package/cjs/helper/sanitize.js +38 -61
- package/cjs/helper/sanitize.js.map +1 -0
- package/cjs/helper/serialisation/contextManager.js +5 -15
- package/cjs/helper/serialisation/contextManager.js.map +1 -0
- package/cjs/helper/serialisation/heavyCustomerDataWarning.js +2 -7
- package/cjs/helper/serialisation/heavyCustomerDataWarning.js.map +1 -0
- package/cjs/helper/serialisation/jsonStringify.js +6 -12
- package/cjs/helper/serialisation/jsonStringify.js.map +1 -0
- package/cjs/helper/serialisation/rowData.js +3 -10
- package/cjs/helper/serialisation/rowData.js.map +1 -0
- package/cjs/helper/timer.js +2 -8
- package/cjs/helper/timer.js.map +1 -0
- package/cjs/helper/tools.js +57 -444
- package/cjs/helper/tools.js.map +1 -0
- package/cjs/helper/urlPolyfill.js +5 -18
- package/cjs/helper/urlPolyfill.js.map +1 -0
- package/cjs/index.js +24 -95
- package/cjs/index.js.map +1 -0
- package/cjs/init.js +14 -20
- package/cjs/init.js.map +1 -0
- package/cjs/report/reportObservable.js +5 -24
- package/cjs/report/reportObservable.js.map +1 -0
- package/cjs/session/sessionConstants.js +2 -3
- package/cjs/session/sessionConstants.js.map +1 -0
- package/cjs/session/sessionCookieStore.js +11 -46
- package/cjs/session/sessionCookieStore.js.map +1 -0
- package/cjs/session/sessionManagement.js +2 -19
- package/cjs/session/sessionManagement.js.map +1 -0
- package/cjs/session/sessionStore.js +3 -28
- package/cjs/session/sessionStore.js.map +1 -0
- package/cjs/synthetics/syntheticsWorkerValues.js +2 -6
- package/cjs/synthetics/syntheticsWorkerValues.js.map +1 -0
- package/cjs/synthetics/usr.js +2 -8
- package/cjs/synthetics/usr.js.map +1 -0
- package/cjs/telemetry/telemetry.js +125 -0
- package/cjs/telemetry/telemetry.js.map +1 -0
- package/cjs/telemetry/types.js +17 -0
- package/cjs/telemetry/types.js.map +1 -0
- package/cjs/tracekit/computeStackTrace.js +4 -34
- package/cjs/tracekit/computeStackTrace.js.map +1 -0
- package/cjs/tracekit/index.js +2 -3
- package/cjs/tracekit/index.js.map +1 -0
- package/cjs/tracekit/tracekit.js +3 -18
- package/cjs/tracekit/tracekit.js.map +1 -0
- package/cjs/transport/batch.js +5 -54
- package/cjs/transport/batch.js.map +1 -0
- package/cjs/transport/eventBridge.js +2 -7
- package/cjs/transport/eventBridge.js.map +1 -0
- package/cjs/transport/flushController.js +8 -21
- package/cjs/transport/flushController.js.map +1 -0
- package/cjs/transport/httpRequest.js +4 -18
- package/cjs/transport/httpRequest.js.map +1 -0
- package/cjs/transport/index.js +2 -6
- package/cjs/transport/index.js.map +1 -0
- package/cjs/transport/sendWithRetryStrategy.js +3 -27
- package/cjs/transport/sendWithRetryStrategy.js.map +1 -0
- package/cjs/transport/startBatchWithReplica.js +2 -7
- package/cjs/transport/startBatchWithReplica.js.map +1 -0
- package/cjs/user/index.js +2 -3
- package/cjs/user/index.js.map +1 -0
- package/cjs/user/user.js +3 -8
- package/cjs/user/user.js.map +1 -0
- package/cjs/worker.js +2 -2
- package/cjs/worker.js.map +1 -0
- package/esm/browser/addEventListener.js +3 -3
- package/esm/browser/addEventListener.js.map +1 -0
- package/esm/browser/cookie.js +3 -6
- package/esm/browser/cookie.js.map +1 -0
- package/esm/browser/fetchObservable.js +4 -14
- package/esm/browser/fetchObservable.js.map +1 -0
- package/esm/browser/htmlDomUtils.js +3 -2
- package/esm/browser/htmlDomUtils.js.map +1 -0
- package/esm/browser/pageExitObservable.js +3 -2
- package/esm/browser/pageExitObservable.js.map +1 -0
- package/esm/browser/runOnReadyState.js +2 -1
- package/esm/browser/runOnReadyState.js.map +1 -0
- package/esm/browser/scroll.js +25 -0
- package/esm/browser/scroll.js.map +1 -0
- package/esm/browser/xhrObservable.js +2 -14
- package/esm/browser/xhrObservable.js.map +1 -0
- package/esm/configuration/configuration.js +9 -9
- package/esm/configuration/configuration.js.map +1 -0
- package/esm/configuration/transportConfiguration.js +6 -17
- package/esm/configuration/transportConfiguration.js.map +1 -0
- package/esm/console/consoleObservable.js +3 -11
- package/esm/console/consoleObservable.js.map +1 -0
- package/esm/dataMap.js +24 -8
- package/esm/dataMap.js.map +1 -0
- package/esm/error/trackRuntimeError.js +4 -3
- package/esm/error/trackRuntimeError.js.map +1 -0
- package/esm/helper/boundedBuffer.js +2 -4
- package/esm/helper/boundedBuffer.js.map +1 -0
- package/esm/helper/byteUtils.js +6 -13
- package/esm/helper/byteUtils.js.map +1 -0
- package/esm/helper/catchUserErrors.js +2 -2
- package/esm/helper/catchUserErrors.js.map +1 -0
- package/esm/helper/contextHistory.js +21 -33
- package/esm/helper/contextHistory.js.map +1 -0
- package/esm/helper/createEventRateLimiter.js +2 -6
- package/esm/helper/createEventRateLimiter.js.map +1 -0
- package/esm/helper/deviceInfo.js +10 -62
- package/esm/helper/deviceInfo.js.map +1 -0
- package/esm/helper/display.js +2 -3
- package/esm/helper/display.js.map +1 -0
- package/esm/helper/enums.js +6 -1
- package/esm/helper/enums.js.map +1 -0
- package/esm/helper/errorTools.js +30 -25
- package/esm/helper/errorTools.js.map +1 -0
- package/esm/helper/eventEmitter.js +2 -5
- package/esm/helper/eventEmitter.js.map +1 -0
- package/esm/helper/getZoneJsOriginalValue.js +2 -4
- package/esm/helper/getZoneJsOriginalValue.js.map +1 -0
- package/esm/helper/instrumentMethod.js +10 -16
- package/esm/helper/instrumentMethod.js.map +1 -0
- package/esm/helper/lifeCycle.js +2 -5
- package/esm/helper/lifeCycle.js.map +1 -0
- package/esm/helper/limitModification.js +5 -20
- package/esm/helper/limitModification.js.map +1 -0
- package/esm/helper/mobileUtil.js +2 -16
- package/esm/helper/mobileUtil.js.map +1 -0
- package/esm/helper/monitor.js +2 -3
- package/esm/helper/monitor.js.map +1 -0
- package/esm/helper/observable.js +2 -7
- package/esm/helper/observable.js.map +1 -0
- package/esm/helper/readBytesFromStream.js +4 -12
- package/esm/helper/readBytesFromStream.js.map +1 -0
- package/esm/helper/sanitize.js +40 -57
- package/esm/helper/sanitize.js.map +1 -0
- package/esm/helper/serialisation/contextManager.js +5 -9
- package/esm/helper/serialisation/contextManager.js.map +1 -0
- package/esm/helper/serialisation/heavyCustomerDataWarning.js +5 -4
- package/esm/helper/serialisation/heavyCustomerDataWarning.js.map +1 -0
- package/esm/helper/serialisation/jsonStringify.js +7 -10
- package/esm/helper/serialisation/jsonStringify.js.map +1 -0
- package/esm/helper/serialisation/rowData.js +3 -4
- package/esm/helper/serialisation/rowData.js.map +1 -0
- package/esm/helper/timer.js +2 -1
- package/esm/helper/timer.js.map +1 -0
- package/esm/helper/tools.js +57 -256
- package/esm/helper/tools.js.map +1 -0
- package/esm/helper/urlPolyfill.js +5 -9
- package/esm/helper/urlPolyfill.js.map +1 -0
- package/esm/index.js +4 -1
- package/esm/index.js.map +1 -0
- package/esm/init.js +14 -14
- package/esm/init.js.map +1 -0
- package/esm/report/reportObservable.js +5 -16
- package/esm/report/reportObservable.js.map +1 -0
- package/esm/session/sessionConstants.js +2 -1
- package/esm/session/sessionConstants.js.map +1 -0
- package/esm/session/sessionCookieStore.js +11 -38
- package/esm/session/sessionCookieStore.js.map +1 -0
- package/esm/session/sessionManagement.js +2 -8
- package/esm/session/sessionManagement.js.map +1 -0
- package/esm/session/sessionStore.js +4 -22
- package/esm/session/sessionStore.js.map +1 -0
- package/esm/synthetics/syntheticsWorkerValues.js +2 -1
- package/esm/synthetics/syntheticsWorkerValues.js.map +1 -0
- package/esm/synthetics/usr.js +2 -3
- package/esm/synthetics/usr.js.map +1 -0
- package/esm/telemetry/telemetry.js +111 -0
- package/esm/telemetry/telemetry.js.map +1 -0
- package/esm/telemetry/types.js +9 -0
- package/esm/telemetry/types.js.map +1 -0
- package/esm/tracekit/computeStackTrace.js +4 -31
- package/esm/tracekit/computeStackTrace.js.map +1 -0
- package/esm/tracekit/index.js +2 -1
- package/esm/tracekit/index.js.map +1 -0
- package/esm/tracekit/tracekit.js +5 -14
- package/esm/tracekit/tracekit.js.map +1 -0
- package/esm/transport/batch.js +7 -45
- package/esm/transport/batch.js.map +1 -0
- package/esm/transport/eventBridge.js +2 -5
- package/esm/transport/eventBridge.js.map +1 -0
- package/esm/transport/flushController.js +11 -20
- package/esm/transport/flushController.js.map +1 -0
- package/esm/transport/httpRequest.js +4 -15
- package/esm/transport/httpRequest.js.map +1 -0
- package/esm/transport/index.js +2 -1
- package/esm/transport/index.js.map +1 -0
- package/esm/transport/sendWithRetryStrategy.js +3 -21
- package/esm/transport/sendWithRetryStrategy.js.map +1 -0
- package/esm/transport/startBatchWithReplica.js +2 -3
- package/esm/transport/startBatchWithReplica.js.map +1 -0
- package/esm/user/index.js.map +1 -0
- package/esm/user/user.js +4 -5
- package/esm/user/user.js.map +1 -0
- package/esm/worker.js.map +1 -0
- package/package.json +2 -2
- package/src/browser/scroll.js +25 -0
- package/src/configuration/configuration.js +16 -0
- package/src/configuration/transportConfiguration.js +2 -2
- package/src/dataMap.js +17 -3
- package/src/error/trackRuntimeError.js +2 -2
- package/src/helper/contextHistory.js +3 -3
- package/src/helper/enums.js +4 -0
- package/src/helper/errorTools.js +49 -19
- package/src/helper/tools.js +1 -0
- package/src/index.js +3 -0
- package/src/report/reportObservable.js +3 -3
- package/src/telemetry/telemetry.js +165 -0
- package/src/telemetry/types.js +9 -0
- package/src/transport/sendWithRetryStrategy.js +1 -5
|
@@ -5,50 +5,36 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.RawReportType = void 0;
|
|
7
7
|
exports.initReportObservable = initReportObservable;
|
|
8
|
-
|
|
9
8
|
var _errorTools = require("../helper/errorTools");
|
|
10
|
-
|
|
11
9
|
var _observable = require("../helper/observable");
|
|
12
|
-
|
|
13
10
|
var _tools = require("../helper/tools");
|
|
14
|
-
|
|
15
11
|
var _addEventListener2 = require("../browser/addEventListener");
|
|
16
|
-
|
|
17
12
|
var _enums = require("../helper/enums");
|
|
18
|
-
|
|
19
13
|
var _monitor = require("../helper/monitor");
|
|
20
|
-
|
|
21
14
|
var RawReportType = {
|
|
22
15
|
intervention: 'intervention',
|
|
23
16
|
deprecation: 'deprecation',
|
|
24
17
|
cspViolation: 'csp_violation'
|
|
25
18
|
};
|
|
26
19
|
exports.RawReportType = RawReportType;
|
|
27
|
-
|
|
28
|
-
function initReportObservable(apis) {
|
|
20
|
+
function initReportObservable(configuration, apis) {
|
|
29
21
|
var observables = [];
|
|
30
|
-
|
|
31
22
|
if ((0, _tools.includes)(apis, RawReportType.cspViolation)) {
|
|
32
|
-
observables.push(createCspViolationReportObservable());
|
|
23
|
+
observables.push(createCspViolationReportObservable(configuration));
|
|
33
24
|
}
|
|
34
|
-
|
|
35
25
|
var reportTypes = (0, _tools.filter)(apis, function (api) {
|
|
36
26
|
return api !== RawReportType.cspViolation;
|
|
37
27
|
});
|
|
38
|
-
|
|
39
28
|
if (reportTypes.length) {
|
|
40
29
|
observables.push(createReportObservable(reportTypes));
|
|
41
30
|
}
|
|
42
|
-
|
|
43
31
|
return _observable.mergeObservables.apply(this, observables);
|
|
44
32
|
}
|
|
45
|
-
|
|
46
33
|
function createReportObservable(reportTypes) {
|
|
47
34
|
var observable = new _observable.Observable(function () {
|
|
48
35
|
if (!window.ReportingObserver) {
|
|
49
36
|
return;
|
|
50
37
|
}
|
|
51
|
-
|
|
52
38
|
var handleReports = (0, _monitor.monitor)(function (reports) {
|
|
53
39
|
(0, _tools.each)(reports, function (report) {
|
|
54
40
|
observable.notify(buildRawReportFromReport(report));
|
|
@@ -65,20 +51,16 @@ function createReportObservable(reportTypes) {
|
|
|
65
51
|
});
|
|
66
52
|
return observable;
|
|
67
53
|
}
|
|
68
|
-
|
|
69
|
-
function createCspViolationReportObservable() {
|
|
54
|
+
function createCspViolationReportObservable(configuration) {
|
|
70
55
|
var observable = new _observable.Observable(function () {
|
|
71
56
|
var handleCspViolation = function handleCspViolation(event) {
|
|
72
57
|
observable.notify(buildRawReportFromCspViolation(event));
|
|
73
58
|
};
|
|
74
|
-
|
|
75
59
|
var _addEventListener = (0, _addEventListener2.addEventListener)(document, _enums.DOM_EVENT.SECURITY_POLICY_VIOLATION, handleCspViolation);
|
|
76
|
-
|
|
77
60
|
return _addEventListener.stop;
|
|
78
61
|
});
|
|
79
62
|
return observable;
|
|
80
63
|
}
|
|
81
|
-
|
|
82
64
|
function buildRawReportFromReport(report) {
|
|
83
65
|
var body = report.body;
|
|
84
66
|
var type = report.type;
|
|
@@ -89,7 +71,6 @@ function buildRawReportFromReport(report) {
|
|
|
89
71
|
stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber)
|
|
90
72
|
};
|
|
91
73
|
}
|
|
92
|
-
|
|
93
74
|
function buildRawReportFromCspViolation(event) {
|
|
94
75
|
var type = RawReportType.cspViolation;
|
|
95
76
|
var message = "'" + event.blockedURI + "' blocked by '" + event.effectiveDirective + "' directive";
|
|
@@ -100,7 +81,6 @@ function buildRawReportFromCspViolation(event) {
|
|
|
100
81
|
stack: buildStack(event.effectiveDirective, message + ' of the policy "' + (0, _tools.safeTruncate)(event.originalPolicy, 100, '...') + '"', event.sourceFile, event.lineNumber, event.columnNumber)
|
|
101
82
|
};
|
|
102
83
|
}
|
|
103
|
-
|
|
104
84
|
function buildStack(name, message, sourceFile, lineNumber, columnNumber) {
|
|
105
85
|
return sourceFile && (0, _errorTools.toStackTraceString)({
|
|
106
86
|
name: name,
|
|
@@ -112,4 +92,5 @@ function buildStack(name, message, sourceFile, lineNumber, columnNumber) {
|
|
|
112
92
|
column: columnNumber
|
|
113
93
|
}]
|
|
114
94
|
});
|
|
115
|
-
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=reportObservable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportObservable.js","names":["_errorTools","require","_observable","_tools","_addEventListener2","_enums","_monitor","RawReportType","intervention","deprecation","cspViolation","exports","initReportObservable","configuration","apis","observables","includes","push","createCspViolationReportObservable","reportTypes","filter","api","length","createReportObservable","mergeObservables","apply","observable","Observable","window","ReportingObserver","handleReports","monitor","reports","each","report","notify","buildRawReportFromReport","observer","types","buffered","observe","disconnect","handleCspViolation","event","buildRawReportFromCspViolation","_addEventListener","addEventListener","document","DOM_EVENT","SECURITY_POLICY_VIOLATION","stop","body","type","subtype","id","message","stack","buildStack","sourceFile","lineNumber","columnNumber","blockedURI","effectiveDirective","safeTruncate","originalPolicy","name","toStackTraceString","func","url","line","column"],"sources":["../../src/report/reportObservable.js"],"sourcesContent":["import { toStackTraceString } from '../helper/errorTools'\nimport { mergeObservables, Observable } from '../helper/observable'\nimport { includes, safeTruncate, filter, each } from '../helper/tools'\nimport { addEventListener } from '../browser/addEventListener'\nimport { DOM_EVENT } from '../helper/enums'\nimport { monitor } from '../helper/monitor'\nexport var RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation'\n}\nexport function initReportObservable(configuration, apis) {\n var observables = []\n\n if (includes(apis, RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration))\n }\n\n var reportTypes = filter(apis, function (api) {\n return api !== RawReportType.cspViolation\n })\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes))\n }\n return mergeObservables.apply(this, observables)\n}\n\nfunction createReportObservable(reportTypes) {\n var observable = new Observable(function () {\n if (!window.ReportingObserver) {\n return\n }\n\n var handleReports = monitor(function (reports) {\n each(reports, function (report) {\n observable.notify(buildRawReportFromReport(report))\n })\n })\n\n var observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true\n })\n\n observer.observe()\n return function () {\n observer.disconnect()\n }\n })\n\n return observable\n}\n\nfunction createCspViolationReportObservable(configuration) {\n var observable = new Observable(function () {\n var handleCspViolation = function (event) {\n observable.notify(buildRawReportFromCspViolation(event))\n }\n\n var _addEventListener = addEventListener(\n document,\n DOM_EVENT.SECURITY_POLICY_VIOLATION,\n handleCspViolation\n )\n\n return _addEventListener.stop\n })\n return observable\n}\n\nfunction buildRawReportFromReport(report) {\n var body = report.body\n var type = report.type\n return {\n type: type,\n subtype: body.id,\n message: type + ': ' + body.message,\n stack: buildStack(\n body.id,\n body.message,\n body.sourceFile,\n body.lineNumber,\n body.columnNumber\n )\n }\n}\n\nfunction buildRawReportFromCspViolation(event) {\n var type = RawReportType.cspViolation\n var message =\n \"'\" +\n event.blockedURI +\n \"' blocked by '\" +\n event.effectiveDirective +\n \"' directive\"\n return {\n type: RawReportType.cspViolation,\n subtype: event.effectiveDirective,\n message: type + ': ' + message,\n stack: buildStack(\n event.effectiveDirective,\n message +\n ' of the policy \"' +\n safeTruncate(event.originalPolicy, 100, '...') +\n '\"',\n event.sourceFile,\n event.lineNumber,\n event.columnNumber\n )\n }\n}\n\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n return (\n sourceFile &&\n toStackTraceString({\n name: name,\n message: message,\n stack: [\n {\n func: '?',\n url: sourceFile,\n line: lineNumber,\n column: columnNumber\n }\n ]\n })\n )\n}\n"],"mappings":"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"}
|
|
@@ -4,10 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.SESSION_TIME_OUT_DELAY = exports.SESSION_EXPIRATION_DELAY = void 0;
|
|
7
|
-
|
|
8
7
|
var _tools = require("../helper/tools");
|
|
9
|
-
|
|
10
8
|
var SESSION_TIME_OUT_DELAY = 4 * _tools.ONE_HOUR;
|
|
11
9
|
exports.SESSION_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;
|
|
12
10
|
var SESSION_EXPIRATION_DELAY = 15 * _tools.ONE_MINUTE;
|
|
13
|
-
exports.SESSION_EXPIRATION_DELAY = SESSION_EXPIRATION_DELAY;
|
|
11
|
+
exports.SESSION_EXPIRATION_DELAY = SESSION_EXPIRATION_DELAY;
|
|
12
|
+
//# sourceMappingURL=sessionConstants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionConstants.js","names":["_tools","require","SESSION_TIME_OUT_DELAY","ONE_HOUR","exports","SESSION_EXPIRATION_DELAY","ONE_MINUTE"],"sources":["../../src/session/sessionConstants.js"],"sourcesContent":["import { ONE_HOUR, ONE_MINUTE } from '../helper/tools'\nexport var SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR\nexport var SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACO,IAAIC,sBAAsB,GAAG,CAAC,GAAGC,eAAQ;AAAAC,OAAA,CAAAF,sBAAA,GAAAA,sBAAA;AACzC,IAAIG,wBAAwB,GAAG,EAAE,GAAGC,iBAAU;AAAAF,OAAA,CAAAC,wBAAA,GAAAA,wBAAA"}
|
|
@@ -8,19 +8,15 @@ exports.persistSession = persistSession;
|
|
|
8
8
|
exports.retrieveSession = retrieveSession;
|
|
9
9
|
exports.toSessionString = toSessionString;
|
|
10
10
|
exports.withCookieLockAccess = withCookieLockAccess;
|
|
11
|
-
|
|
12
11
|
var _cookie = require("../browser/cookie");
|
|
13
|
-
|
|
14
12
|
var _tools = require("../helper/tools");
|
|
15
|
-
|
|
16
13
|
var _sessionConstants = require("./sessionConstants");
|
|
17
|
-
|
|
18
14
|
var _timer = require("../helper/timer");
|
|
19
|
-
|
|
20
15
|
var SESSION_ENTRY_REGEXP = /^([a-z]+)=([a-z0-9-]+)$/;
|
|
21
16
|
var SESSION_ENTRY_SEPARATOR = '&';
|
|
22
|
-
var SESSION_COOKIE_NAME = '_dataflux_s';
|
|
17
|
+
var SESSION_COOKIE_NAME = '_dataflux_s';
|
|
23
18
|
|
|
19
|
+
// arbitrary values
|
|
24
20
|
exports.SESSION_COOKIE_NAME = SESSION_COOKIE_NAME;
|
|
25
21
|
var LOCK_RETRY_DELAY = 10;
|
|
26
22
|
exports.LOCK_RETRY_DELAY = LOCK_RETRY_DELAY;
|
|
@@ -28,144 +24,116 @@ var MAX_NUMBER_OF_LOCK_RETRIES = 100;
|
|
|
28
24
|
exports.MAX_NUMBER_OF_LOCK_RETRIES = MAX_NUMBER_OF_LOCK_RETRIES;
|
|
29
25
|
var bufferedOperations = [];
|
|
30
26
|
var ongoingOperations;
|
|
31
|
-
|
|
32
27
|
function withCookieLockAccess(operations, numberOfRetries) {
|
|
33
28
|
if (typeof numberOfRetries === 'undefined') {
|
|
34
29
|
numberOfRetries = 0;
|
|
35
30
|
}
|
|
36
|
-
|
|
37
31
|
if (!ongoingOperations) {
|
|
38
32
|
ongoingOperations = operations;
|
|
39
33
|
}
|
|
40
|
-
|
|
41
34
|
if (operations !== ongoingOperations) {
|
|
42
35
|
bufferedOperations.push(operations);
|
|
43
36
|
return;
|
|
44
37
|
}
|
|
45
|
-
|
|
46
38
|
if (numberOfRetries >= MAX_NUMBER_OF_LOCK_RETRIES) {
|
|
47
39
|
next();
|
|
48
40
|
return;
|
|
49
41
|
}
|
|
50
|
-
|
|
51
42
|
var currentLock;
|
|
52
43
|
var currentSession = retrieveSession();
|
|
53
|
-
|
|
54
44
|
if (isCookieLockEnabled()) {
|
|
55
45
|
// if someone has lock, retry later
|
|
56
46
|
if (currentSession.lock) {
|
|
57
47
|
retryLater(operations, numberOfRetries);
|
|
58
48
|
return;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
49
|
+
}
|
|
50
|
+
// acquire lock
|
|
62
51
|
currentLock = (0, _tools.UUID)();
|
|
63
52
|
currentSession.lock = currentLock;
|
|
64
|
-
setSession(currentSession, operations.options);
|
|
65
|
-
|
|
53
|
+
setSession(currentSession, operations.options);
|
|
54
|
+
// if lock is not acquired, retry later
|
|
66
55
|
currentSession = retrieveSession();
|
|
67
|
-
|
|
68
56
|
if (currentSession.lock !== currentLock) {
|
|
69
57
|
retryLater(operations, numberOfRetries);
|
|
70
58
|
return;
|
|
71
59
|
}
|
|
72
60
|
}
|
|
73
|
-
|
|
74
61
|
var processedSession = operations.process(currentSession);
|
|
75
|
-
|
|
76
62
|
if (isCookieLockEnabled()) {
|
|
77
63
|
// if lock corrupted after process, retry later
|
|
78
64
|
currentSession = retrieveSession();
|
|
79
|
-
|
|
80
65
|
if (currentSession.lock !== currentLock) {
|
|
81
66
|
retryLater(operations, numberOfRetries);
|
|
82
67
|
return;
|
|
83
68
|
}
|
|
84
69
|
}
|
|
85
|
-
|
|
86
70
|
if (processedSession) {
|
|
87
71
|
persistSession(processedSession, operations.options);
|
|
88
72
|
}
|
|
89
|
-
|
|
90
73
|
if (isCookieLockEnabled()) {
|
|
91
74
|
// correctly handle lock around expiration would require to handle this case properly at several levels
|
|
92
75
|
// since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it
|
|
93
76
|
if (!(processedSession && isExpiredState(processedSession))) {
|
|
94
77
|
// if lock corrupted after persist, retry later
|
|
95
78
|
currentSession = retrieveSession();
|
|
96
|
-
|
|
97
79
|
if (currentSession.lock !== currentLock) {
|
|
98
80
|
retryLater(operations, numberOfRetries);
|
|
99
81
|
return;
|
|
100
82
|
}
|
|
101
|
-
|
|
102
83
|
delete currentSession.lock;
|
|
103
84
|
setSession(currentSession, operations.options);
|
|
104
85
|
processedSession = currentSession;
|
|
105
86
|
}
|
|
106
|
-
}
|
|
87
|
+
}
|
|
88
|
+
// call after even if session is not persisted in order to perform operations on
|
|
107
89
|
// up-to-date cookie value, the value could have been modified by another tab
|
|
108
|
-
|
|
109
|
-
|
|
110
90
|
if (operations.after) {
|
|
111
91
|
operations.after(processedSession || currentSession);
|
|
112
92
|
}
|
|
113
|
-
|
|
114
93
|
next();
|
|
115
94
|
}
|
|
95
|
+
|
|
116
96
|
/**
|
|
117
97
|
* Cookie lock strategy allows mitigating issues due to concurrent access to cookie.
|
|
118
98
|
* This issue concerns only chromium browsers and enabling this on firefox increase cookie write failures.
|
|
119
99
|
*/
|
|
120
|
-
|
|
121
|
-
|
|
122
100
|
function isCookieLockEnabled() {
|
|
123
101
|
return (0, _tools.isChromium)();
|
|
124
102
|
}
|
|
125
|
-
|
|
126
103
|
function retryLater(operations, currentNumberOfRetries) {
|
|
127
104
|
(0, _timer.setTimeout)(function () {
|
|
128
105
|
withCookieLockAccess(operations, currentNumberOfRetries + 1);
|
|
129
106
|
}, LOCK_RETRY_DELAY);
|
|
130
107
|
}
|
|
131
|
-
|
|
132
108
|
function next() {
|
|
133
109
|
ongoingOperations = undefined;
|
|
134
110
|
var nextOperations = bufferedOperations.shift();
|
|
135
|
-
|
|
136
111
|
if (nextOperations) {
|
|
137
112
|
withCookieLockAccess(nextOperations);
|
|
138
113
|
}
|
|
139
114
|
}
|
|
140
|
-
|
|
141
115
|
function persistSession(session, options) {
|
|
142
116
|
if (isExpiredState(session)) {
|
|
143
117
|
clearSession(options);
|
|
144
118
|
return;
|
|
145
119
|
}
|
|
146
|
-
|
|
147
120
|
session.expire = String((0, _tools.dateNow)() + _sessionConstants.SESSION_EXPIRATION_DELAY);
|
|
148
121
|
setSession(session, options);
|
|
149
122
|
}
|
|
150
|
-
|
|
151
123
|
function setSession(session, options) {
|
|
152
124
|
(0, _cookie.setCookie)(SESSION_COOKIE_NAME, toSessionString(session), _sessionConstants.SESSION_EXPIRATION_DELAY, options);
|
|
153
125
|
}
|
|
154
|
-
|
|
155
126
|
function toSessionString(session) {
|
|
156
127
|
return (0, _tools.map)((0, _tools.objectEntries)(session), function (item) {
|
|
157
128
|
return item[0] + '=' + item[1];
|
|
158
129
|
}).join(SESSION_ENTRY_SEPARATOR);
|
|
159
130
|
}
|
|
160
|
-
|
|
161
131
|
function retrieveSession() {
|
|
162
132
|
var sessionString = (0, _cookie.getCookie)(SESSION_COOKIE_NAME);
|
|
163
133
|
var session = {};
|
|
164
|
-
|
|
165
134
|
if (isValidSessionString(sessionString)) {
|
|
166
135
|
(0, _tools.each)(sessionString.split(SESSION_ENTRY_SEPARATOR), function (entry) {
|
|
167
136
|
var matches = SESSION_ENTRY_REGEXP.exec(entry);
|
|
168
|
-
|
|
169
137
|
if (matches !== null) {
|
|
170
138
|
var key = matches[1];
|
|
171
139
|
var value = matches[2];
|
|
@@ -173,18 +141,15 @@ function retrieveSession() {
|
|
|
173
141
|
}
|
|
174
142
|
});
|
|
175
143
|
}
|
|
176
|
-
|
|
177
144
|
return session;
|
|
178
145
|
}
|
|
179
|
-
|
|
180
146
|
function isValidSessionString(sessionString) {
|
|
181
147
|
return sessionString !== undefined && (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString));
|
|
182
148
|
}
|
|
183
|
-
|
|
184
149
|
function isExpiredState(session) {
|
|
185
150
|
return (0, _tools.isEmptyObject)(session);
|
|
186
151
|
}
|
|
187
|
-
|
|
188
152
|
function clearSession(options) {
|
|
189
153
|
(0, _cookie.setCookie)(SESSION_COOKIE_NAME, '', 0, options);
|
|
190
|
-
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=sessionCookieStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionCookieStore.js","names":["_cookie","require","_tools","_sessionConstants","_timer","SESSION_ENTRY_REGEXP","SESSION_ENTRY_SEPARATOR","SESSION_COOKIE_NAME","exports","LOCK_RETRY_DELAY","MAX_NUMBER_OF_LOCK_RETRIES","bufferedOperations","ongoingOperations","withCookieLockAccess","operations","numberOfRetries","push","next","currentLock","currentSession","retrieveSession","isCookieLockEnabled","lock","retryLater","UUID","setSession","options","processedSession","process","persistSession","isExpiredState","after","isChromium","currentNumberOfRetries","setTimeout","undefined","nextOperations","shift","session","clearSession","expire","String","dateNow","SESSION_EXPIRATION_DELAY","setCookie","toSessionString","map","objectEntries","item","join","sessionString","getCookie","isValidSessionString","each","split","entry","matches","exec","key","value","indexOf","test","isEmptyObject"],"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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"}
|
|
@@ -5,26 +5,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.startSessionManager = exports.VISIBILITY_CHECK_DELAY = void 0;
|
|
7
7
|
exports.stopSessionManager = stopSessionManager;
|
|
8
|
-
|
|
9
8
|
var _tools = require("../helper/tools");
|
|
10
|
-
|
|
11
9
|
var _addEventListener2 = require("../browser/addEventListener");
|
|
12
|
-
|
|
13
10
|
var _contextHistory = require("../helper/contextHistory");
|
|
14
|
-
|
|
15
11
|
var _sessionStore = require("./sessionStore");
|
|
16
|
-
|
|
17
12
|
var _sessionConstants = require("./sessionConstants");
|
|
18
|
-
|
|
19
13
|
var _enums = require("../helper/enums");
|
|
20
|
-
|
|
21
14
|
var _timer = require("../helper/timer");
|
|
22
|
-
|
|
23
15
|
var VISIBILITY_CHECK_DELAY = _tools.ONE_MINUTE;
|
|
24
16
|
exports.VISIBILITY_CHECK_DELAY = VISIBILITY_CHECK_DELAY;
|
|
25
17
|
var SESSION_CONTEXT_TIMEOUT_DELAY = _sessionConstants.SESSION_TIME_OUT_DELAY;
|
|
26
18
|
var stopCallbacks = [];
|
|
27
|
-
|
|
28
19
|
var startSessionManager = function startSessionManager(options, productKey, computeSessionState) {
|
|
29
20
|
var sessionStore = (0, _sessionStore.startSessionStore)(options, productKey, computeSessionState);
|
|
30
21
|
stopCallbacks.push(function () {
|
|
@@ -48,14 +39,12 @@ var startSessionManager = function startSessionManager(options, productKey, comp
|
|
|
48
39
|
trackVisibility(function () {
|
|
49
40
|
return sessionStore.expandSession();
|
|
50
41
|
});
|
|
51
|
-
|
|
52
42
|
function buildSessionContext() {
|
|
53
43
|
return {
|
|
54
44
|
id: sessionStore.getSession().id,
|
|
55
45
|
trackingType: sessionStore.getSession()[productKey]
|
|
56
46
|
};
|
|
57
47
|
}
|
|
58
|
-
|
|
59
48
|
return {
|
|
60
49
|
findActiveSession: function findActiveSession(startTime) {
|
|
61
50
|
return sessionContextHistory.find(startTime);
|
|
@@ -65,37 +54,31 @@ var startSessionManager = function startSessionManager(options, productKey, comp
|
|
|
65
54
|
expire: sessionStore.expire
|
|
66
55
|
};
|
|
67
56
|
};
|
|
68
|
-
|
|
69
57
|
exports.startSessionManager = startSessionManager;
|
|
70
|
-
|
|
71
58
|
function stopSessionManager() {
|
|
72
59
|
(0, _tools.each)(stopCallbacks, function (e) {
|
|
73
60
|
return e();
|
|
74
61
|
});
|
|
75
62
|
stopCallbacks = [];
|
|
76
63
|
}
|
|
77
|
-
|
|
78
64
|
function trackActivity(expandOrRenewSession) {
|
|
79
65
|
var _addEventListeners = (0, _addEventListener2.addEventListeners)(window, [_enums.DOM_EVENT.CLICK, _enums.DOM_EVENT.TOUCH_START, _enums.DOM_EVENT.KEY_DOWN, _enums.DOM_EVENT.SCROLL], expandOrRenewSession, {
|
|
80
66
|
capture: true,
|
|
81
67
|
passive: true
|
|
82
68
|
});
|
|
83
|
-
|
|
84
69
|
stopCallbacks.push(_addEventListeners.stop);
|
|
85
70
|
}
|
|
86
|
-
|
|
87
71
|
function trackVisibility(expandSession) {
|
|
88
72
|
var expandSessionWhenVisible = function expandSessionWhenVisible() {
|
|
89
73
|
if (document.visibilityState === 'visible') {
|
|
90
74
|
expandSession();
|
|
91
75
|
}
|
|
92
76
|
};
|
|
93
|
-
|
|
94
77
|
var _addEventListener = (0, _addEventListener2.addEventListener)(document, _enums.DOM_EVENT.VISIBILITY_CHANGE, expandSessionWhenVisible);
|
|
95
|
-
|
|
96
78
|
stopCallbacks.push(_addEventListener.stop);
|
|
97
79
|
var visibilityCheckInterval = (0, _timer.setInterval)(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);
|
|
98
80
|
stopCallbacks.push(function () {
|
|
99
81
|
(0, _timer.clearInterval)(visibilityCheckInterval);
|
|
100
82
|
});
|
|
101
|
-
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=sessionManagement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionManagement.js","names":["_tools","require","_addEventListener2","_contextHistory","_sessionStore","_sessionConstants","_enums","_timer","VISIBILITY_CHECK_DELAY","ONE_MINUTE","exports","SESSION_CONTEXT_TIMEOUT_DELAY","SESSION_TIME_OUT_DELAY","stopCallbacks","startSessionManager","options","productKey","computeSessionState","sessionStore","startSessionStore","push","stop","sessionContextHistory","ContextHistory","renewObservable","subscribe","add","buildSessionContext","relativeNow","expireObservable","closeActive","expandOrRenewSession","clocksOrigin","relative","trackActivity","trackVisibility","expandSession","id","getSession","trackingType","findActiveSession","startTime","find","expire","stopSessionManager","each","e","_addEventListeners","addEventListeners","window","DOM_EVENT","CLICK","TOUCH_START","KEY_DOWN","SCROLL","capture","passive","expandSessionWhenVisible","document","visibilityState","_addEventListener","addEventListener","VISIBILITY_CHANGE","visibilityCheckInterval","setInterval","clearInterval"],"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,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.startSessionStore = startSessionStore;
|
|
7
|
-
|
|
8
7
|
var _cookie = require("../browser/cookie");
|
|
9
|
-
|
|
10
8
|
var _observable = require("../helper/observable");
|
|
11
|
-
|
|
12
9
|
var _tools = require("../helper/tools");
|
|
13
|
-
|
|
14
10
|
var _sessionConstants = require("./sessionConstants");
|
|
15
|
-
|
|
16
11
|
var _sessionCookieStore = require("./sessionCookieStore");
|
|
17
|
-
|
|
18
12
|
var _timer = require("../helper/timer");
|
|
19
|
-
|
|
20
13
|
/**
|
|
21
14
|
* Different session concepts:
|
|
22
15
|
* - tracked, the session has an id and is updated along the user navigation
|
|
@@ -28,7 +21,6 @@ function startSessionStore(options, productKey, computeSessionState) {
|
|
|
28
21
|
var expireObservable = new _observable.Observable();
|
|
29
22
|
var watchSessionTimeoutId = (0, _timer.setInterval)(watchSession, _cookie.COOKIE_ACCESS_DELAY);
|
|
30
23
|
var sessionCache = retrieveActiveSession();
|
|
31
|
-
|
|
32
24
|
function expandOrRenewSession() {
|
|
33
25
|
var isTracked;
|
|
34
26
|
(0, _sessionCookieStore.withCookieLockAccess)({
|
|
@@ -42,12 +34,10 @@ function startSessionStore(options, productKey, computeSessionState) {
|
|
|
42
34
|
if (isTracked && !hasSessionInCache()) {
|
|
43
35
|
renewSession(cookieSession);
|
|
44
36
|
}
|
|
45
|
-
|
|
46
37
|
sessionCache = cookieSession;
|
|
47
38
|
}
|
|
48
39
|
});
|
|
49
40
|
}
|
|
50
|
-
|
|
51
41
|
function expandSession() {
|
|
52
42
|
(0, _sessionCookieStore.withCookieLockAccess)({
|
|
53
43
|
options: options,
|
|
@@ -56,13 +46,12 @@ function startSessionStore(options, productKey, computeSessionState) {
|
|
|
56
46
|
}
|
|
57
47
|
});
|
|
58
48
|
}
|
|
49
|
+
|
|
59
50
|
/**
|
|
60
51
|
* allows two behaviors:
|
|
61
52
|
* - if the session is active, synchronize the session cache without updating the session cookie
|
|
62
53
|
* - if the session is not active, clear the session cookie and expire the session cache
|
|
63
54
|
*/
|
|
64
|
-
|
|
65
|
-
|
|
66
55
|
function watchSession() {
|
|
67
56
|
(0, _sessionCookieStore.withCookieLockAccess)({
|
|
68
57
|
options: options,
|
|
@@ -72,12 +61,10 @@ function startSessionStore(options, productKey, computeSessionState) {
|
|
|
72
61
|
after: synchronizeSession
|
|
73
62
|
});
|
|
74
63
|
}
|
|
75
|
-
|
|
76
64
|
function synchronizeSession(cookieSession) {
|
|
77
65
|
if (!isActiveSession(cookieSession)) {
|
|
78
66
|
cookieSession = {};
|
|
79
67
|
}
|
|
80
|
-
|
|
81
68
|
if (hasSessionInCache()) {
|
|
82
69
|
if (isSessionInCacheOutdated(cookieSession)) {
|
|
83
70
|
expireSessionInCache();
|
|
@@ -85,58 +72,45 @@ function startSessionStore(options, productKey, computeSessionState) {
|
|
|
85
72
|
sessionCache = cookieSession;
|
|
86
73
|
}
|
|
87
74
|
}
|
|
88
|
-
|
|
89
75
|
return cookieSession;
|
|
90
76
|
}
|
|
91
|
-
|
|
92
77
|
function expandOrRenewCookie(cookieSession) {
|
|
93
78
|
var sessionState = computeSessionState(cookieSession[productKey]);
|
|
94
79
|
var trackingType = sessionState.trackingType;
|
|
95
80
|
var isTracked = sessionState.isTracked;
|
|
96
81
|
cookieSession[productKey] = trackingType;
|
|
97
|
-
|
|
98
82
|
if (isTracked && !cookieSession.id) {
|
|
99
83
|
cookieSession.id = (0, _tools.UUID)();
|
|
100
84
|
cookieSession.created = String((0, _tools.dateNow)());
|
|
101
85
|
}
|
|
102
|
-
|
|
103
86
|
return isTracked;
|
|
104
87
|
}
|
|
105
|
-
|
|
106
88
|
function hasSessionInCache() {
|
|
107
89
|
return sessionCache[productKey] !== undefined;
|
|
108
90
|
}
|
|
109
|
-
|
|
110
91
|
function isSessionInCacheOutdated(cookieSession) {
|
|
111
92
|
return sessionCache.id !== cookieSession.id || sessionCache[productKey] !== cookieSession[productKey];
|
|
112
93
|
}
|
|
113
|
-
|
|
114
94
|
function expireSessionInCache() {
|
|
115
95
|
sessionCache = {};
|
|
116
96
|
expireObservable.notify();
|
|
117
97
|
}
|
|
118
|
-
|
|
119
98
|
function renewSession(cookieSession) {
|
|
120
99
|
sessionCache = cookieSession;
|
|
121
100
|
renewObservable.notify();
|
|
122
101
|
}
|
|
123
|
-
|
|
124
102
|
function retrieveActiveSession() {
|
|
125
103
|
var session = (0, _sessionCookieStore.retrieveSession)();
|
|
126
|
-
|
|
127
104
|
if (isActiveSession(session)) {
|
|
128
105
|
return session;
|
|
129
106
|
}
|
|
130
|
-
|
|
131
107
|
return {};
|
|
132
108
|
}
|
|
133
|
-
|
|
134
109
|
function isActiveSession(session) {
|
|
135
110
|
// created and expire can be undefined for versions which was not storing them
|
|
136
111
|
// these checks could be removed when older versions will not be available/live anymore
|
|
137
112
|
return (session.created === undefined || (0, _tools.dateNow)() - Number(session.created) < _sessionConstants.SESSION_TIME_OUT_DELAY) && (session.expire === undefined || (0, _tools.dateNow)() < Number(session.expire));
|
|
138
113
|
}
|
|
139
|
-
|
|
140
114
|
return {
|
|
141
115
|
expandOrRenewSession: (0, _tools.throttle)(expandOrRenewSession, _cookie.COOKIE_ACCESS_DELAY).throttled,
|
|
142
116
|
expandSession: expandSession,
|
|
@@ -153,4 +127,5 @@ function startSessionStore(options, productKey, computeSessionState) {
|
|
|
153
127
|
(0, _timer.clearInterval)(watchSessionTimeoutId);
|
|
154
128
|
}
|
|
155
129
|
};
|
|
156
|
-
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=sessionStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionStore.js","names":["_cookie","require","_observable","_tools","_sessionConstants","_sessionCookieStore","_timer","startSessionStore","options","productKey","computeSessionState","renewObservable","Observable","expireObservable","watchSessionTimeoutId","setInterval","watchSession","COOKIE_ACCESS_DELAY","sessionCache","retrieveActiveSession","expandOrRenewSession","isTracked","withCookieLockAccess","process","cookieSession","synchronizedSession","synchronizeSession","expandOrRenewCookie","after","hasSessionInCache","renewSession","expandSession","undefined","isActiveSession","isSessionInCacheOutdated","expireSessionInCache","sessionState","trackingType","id","UUID","created","String","dateNow","notify","session","retrieveSession","Number","SESSION_TIME_OUT_DELAY","expire","throttle","throttled","getSession","deleteSessionCookie","stop","clearInterval"],"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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"}
|
|
@@ -7,26 +7,22 @@ exports.SYNTHETICS_TEST_ID_COOKIE_NAME = exports.SYNTHETICS_RESULT_ID_COOKIE_NAM
|
|
|
7
7
|
exports.getSyntheticsResultId = getSyntheticsResultId;
|
|
8
8
|
exports.getSyntheticsTestId = getSyntheticsTestId;
|
|
9
9
|
exports.willSyntheticsInjectRum = willSyntheticsInjectRum;
|
|
10
|
-
|
|
11
10
|
var _cookie = require("../browser/cookie");
|
|
12
|
-
|
|
13
11
|
var SYNTHETICS_TEST_ID_COOKIE_NAME = 'guance-synthetics-public-id';
|
|
14
12
|
exports.SYNTHETICS_TEST_ID_COOKIE_NAME = SYNTHETICS_TEST_ID_COOKIE_NAME;
|
|
15
13
|
var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'guance-synthetics-result-id';
|
|
16
14
|
exports.SYNTHETICS_RESULT_ID_COOKIE_NAME = SYNTHETICS_RESULT_ID_COOKIE_NAME;
|
|
17
15
|
var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'guance-synthetics-injects-rum';
|
|
18
16
|
exports.SYNTHETICS_INJECTS_RUM_COOKIE_NAME = SYNTHETICS_INJECTS_RUM_COOKIE_NAME;
|
|
19
|
-
|
|
20
17
|
function willSyntheticsInjectRum() {
|
|
21
18
|
return Boolean(window._GUANCE_SYNTHETICS_INJECTS_RUM || (0, _cookie.getCookie)(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));
|
|
22
19
|
}
|
|
23
|
-
|
|
24
20
|
function getSyntheticsTestId() {
|
|
25
21
|
var value = window._GUANCE_SYNTHETICS_PUBLIC_ID || (0, _cookie.getCookie)(SYNTHETICS_TEST_ID_COOKIE_NAME);
|
|
26
22
|
return typeof value === 'string' ? value : undefined;
|
|
27
23
|
}
|
|
28
|
-
|
|
29
24
|
function getSyntheticsResultId() {
|
|
30
25
|
var value = window._GUANCE_SYNTHETICS_RESULT_ID || (0, _cookie.getCookie)(SYNTHETICS_RESULT_ID_COOKIE_NAME);
|
|
31
26
|
return typeof value === 'string' ? value : undefined;
|
|
32
|
-
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=syntheticsWorkerValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntheticsWorkerValues.js","names":["_cookie","require","SYNTHETICS_TEST_ID_COOKIE_NAME","exports","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","Boolean","window","_GUANCE_SYNTHETICS_INJECTS_RUM","getCookie","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,IAAAA,OAAA,GAAAC,OAAA;AAEO,IAAIC,8BAA8B,GAAG,6BAA6B;AAAAC,OAAA,CAAAD,8BAAA,GAAAA,8BAAA;AAClE,IAAIE,gCAAgC,GAAG,6BAA6B;AAAAD,OAAA,CAAAC,gCAAA,GAAAA,gCAAA;AACpE,IAAIC,kCAAkC,GAAG,+BAA+B;AAAAF,OAAA,CAAAE,kCAAA,GAAAA,kCAAA;AAExE,SAASC,uBAAuBA,CAAA,EAAG;EACxC,OAAOC,OAAO,CACZC,MAAM,CAACC,8BAA8B,IACnC,IAAAC,iBAAS,EAACL,kCAAkC,CAChD,CAAC;AACH;AAEO,SAASM,mBAAmBA,CAAA,EAAG;EACpC,IAAIC,KAAK,GACPJ,MAAM,CAACK,4BAA4B,IACnC,IAAAH,iBAAS,EAACR,8BAA8B,CAAC;EAC3C,OAAO,OAAOU,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGE,SAAS;AACtD;AAEO,SAASC,qBAAqBA,CAAA,EAAG;EACtC,IAAIH,KAAK,GACPJ,MAAM,CAACQ,4BAA4B,IACnC,IAAAN,iBAAS,EAACN,gCAAgC,CAAC;EAC7C,OAAO,OAAOQ,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGE,SAAS;AACtD"}
|