@openobserve/browser-core 0.2.12-beta.17 → 0.2.12-beta.21
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/boot/displayAlreadyInitializedError.d.ts +2 -0
- package/cjs/boot/displayAlreadyInitializedError.js +10 -0
- package/cjs/boot/displayAlreadyInitializedError.js.map +1 -0
- package/cjs/boot/init.d.ts +14 -0
- package/cjs/boot/init.js +39 -0
- package/cjs/boot/init.js.map +1 -0
- package/cjs/browser/addEventListener.d.ts +87 -0
- package/cjs/browser/addEventListener.js +55 -0
- package/cjs/browser/addEventListener.js.map +1 -0
- package/cjs/browser/browser.types.d.ts +51 -0
- package/cjs/browser/browser.types.js +6 -0
- package/cjs/browser/browser.types.js.map +1 -0
- package/cjs/browser/cookie.d.ts +28 -0
- package/cjs/browser/cookie.js +114 -0
- package/cjs/browser/cookie.js.map +1 -0
- package/cjs/browser/fetchObservable.d.ts +38 -0
- package/cjs/browser/fetchObservable.js +103 -0
- package/cjs/browser/fetchObservable.js.map +1 -0
- package/cjs/browser/pageMayExitObservable.d.ts +14 -0
- package/cjs/browser/pageMayExitObservable.js +45 -0
- package/cjs/browser/pageMayExitObservable.js.map +1 -0
- package/cjs/browser/runOnReadyState.d.ts +5 -0
- package/cjs/browser/runOnReadyState.js +20 -0
- package/cjs/browser/runOnReadyState.js.map +1 -0
- package/cjs/browser/xhrObservable.d.ts +24 -0
- package/cjs/browser/xhrObservable.js +86 -0
- package/cjs/browser/xhrObservable.js.map +1 -0
- package/cjs/domain/allowedTrackingOrigins.d.ts +4 -0
- package/cjs/domain/allowedTrackingOrigins.js +25 -0
- package/cjs/domain/allowedTrackingOrigins.js.map +1 -0
- package/cjs/domain/bufferedData.d.ts +14 -0
- package/cjs/domain/bufferedData.js +22 -0
- package/cjs/domain/bufferedData.js.map +1 -0
- package/cjs/domain/configuration/configuration.d.ts +312 -0
- package/cjs/domain/configuration/configuration.js +137 -0
- package/cjs/domain/configuration/configuration.js.map +1 -0
- package/cjs/domain/configuration/endpointBuilder.d.ts +12 -0
- package/cjs/domain/configuration/endpointBuilder.js +76 -0
- package/cjs/domain/configuration/endpointBuilder.js.map +1 -0
- package/cjs/domain/configuration/index.d.ts +5 -0
- package/cjs/domain/configuration/index.js +16 -0
- package/cjs/domain/configuration/index.js.map +1 -0
- package/cjs/domain/configuration/transportConfiguration.d.ts +20 -0
- package/cjs/domain/configuration/transportConfiguration.js +54 -0
- package/cjs/domain/configuration/transportConfiguration.js.map +1 -0
- package/cjs/domain/connectivity/connectivity.d.ts +14 -0
- package/cjs/domain/connectivity/connectivity.js +14 -0
- package/cjs/domain/connectivity/connectivity.js.map +1 -0
- package/cjs/domain/connectivity/index.d.ts +1 -0
- package/cjs/domain/connectivity/index.js +18 -0
- package/cjs/domain/connectivity/index.js.map +1 -0
- package/cjs/domain/console/consoleObservable.d.ts +21 -0
- package/cjs/domain/console/consoleObservable.js +84 -0
- package/cjs/domain/console/consoleObservable.js.map +1 -0
- package/cjs/domain/context/contextConstants.d.ts +21 -0
- package/cjs/domain/context/contextConstants.js +18 -0
- package/cjs/domain/context/contextConstants.js.map +1 -0
- package/cjs/domain/context/contextManager.d.ts +19 -0
- package/cjs/domain/context/contextManager.js +60 -0
- package/cjs/domain/context/contextManager.js.map +1 -0
- package/cjs/domain/context/contextUtils.d.ts +5 -0
- package/cjs/domain/context/contextUtils.js +16 -0
- package/cjs/domain/context/contextUtils.js.map +1 -0
- package/cjs/domain/context/defineContextMethod.d.ts +6 -0
- package/cjs/domain/context/defineContextMethod.js +21 -0
- package/cjs/domain/context/defineContextMethod.js.map +1 -0
- package/cjs/domain/context/storeContextManager.d.ts +6 -0
- package/cjs/domain/context/storeContextManager.js +40 -0
- package/cjs/domain/context/storeContextManager.js.map +1 -0
- package/cjs/domain/contexts/accountContext.d.ts +26 -0
- package/cjs/domain/contexts/accountContext.js +33 -0
- package/cjs/domain/contexts/accountContext.js.map +1 -0
- package/cjs/domain/contexts/globalContext.d.ts +18 -0
- package/cjs/domain/contexts/globalContext.js +21 -0
- package/cjs/domain/contexts/globalContext.js.map +1 -0
- package/cjs/domain/contexts/rumInternalContext.type.d.ts +14 -0
- package/cjs/domain/contexts/rumInternalContext.type.js +3 -0
- package/cjs/domain/contexts/rumInternalContext.type.js.map +1 -0
- package/cjs/domain/contexts/userContext.d.ts +29 -0
- package/cjs/domain/contexts/userContext.js +45 -0
- package/cjs/domain/contexts/userContext.js.map +1 -0
- package/cjs/domain/deflate/deflate.types.d.ts +40 -0
- package/cjs/domain/deflate/deflate.types.js +3 -0
- package/cjs/domain/deflate/deflate.types.js.map +1 -0
- package/cjs/domain/deflate/index.d.ts +1 -0
- package/cjs/domain/deflate/index.js +18 -0
- package/cjs/domain/deflate/index.js.map +1 -0
- package/cjs/domain/error/error.d.ts +23 -0
- package/cjs/domain/error/error.js +74 -0
- package/cjs/domain/error/error.js.map +1 -0
- package/cjs/domain/error/error.types.d.ts +47 -0
- package/cjs/domain/error/error.types.js +13 -0
- package/cjs/domain/error/error.types.js.map +1 -0
- package/cjs/domain/error/trackRuntimeError.d.ts +11 -0
- package/cjs/domain/error/trackRuntimeError.js +48 -0
- package/cjs/domain/error/trackRuntimeError.js.map +1 -0
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.d.ts +5 -0
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +41 -0
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -0
- package/cjs/domain/extension/extensionUtils.d.ts +10 -0
- package/cjs/domain/extension/extensionUtils.js +30 -0
- package/cjs/domain/extension/extensionUtils.js.map +1 -0
- package/cjs/domain/intakeSites.d.ts +8 -0
- package/cjs/domain/intakeSites.js +11 -0
- package/cjs/domain/intakeSites.js.map +1 -0
- package/cjs/domain/report/browser.types.d.ts +34 -0
- package/cjs/domain/report/browser.types.js +3 -0
- package/cjs/domain/report/browser.types.js.map +1 -0
- package/cjs/domain/report/reportObservable.d.ts +14 -0
- package/cjs/domain/report/reportObservable.js +99 -0
- package/cjs/domain/report/reportObservable.js.map +1 -0
- package/cjs/domain/resourceUtils.d.ts +18 -0
- package/cjs/domain/resourceUtils.js +20 -0
- package/cjs/domain/resourceUtils.js.map +1 -0
- package/cjs/domain/session/oldCookiesMigration.d.ts +11 -0
- package/cjs/domain/session/oldCookiesMigration.js +40 -0
- package/cjs/domain/session/oldCookiesMigration.js.map +1 -0
- package/cjs/domain/session/sessionConstants.d.ts +15 -0
- package/cjs/domain/session/sessionConstants.js +16 -0
- package/cjs/domain/session/sessionConstants.js.map +1 -0
- package/cjs/domain/session/sessionManager.d.ts +28 -0
- package/cjs/domain/session/sessionManager.js +201 -0
- package/cjs/domain/session/sessionManager.js.map +1 -0
- package/cjs/domain/session/sessionState.d.ts +16 -0
- package/cjs/domain/session/sessionState.js +70 -0
- package/cjs/domain/session/sessionState.js.map +1 -0
- package/cjs/domain/session/sessionStateValidation.d.ts +3 -0
- package/cjs/domain/session/sessionStateValidation.js +11 -0
- package/cjs/domain/session/sessionStateValidation.js.map +1 -0
- package/cjs/domain/session/sessionStore.d.ts +38 -0
- package/cjs/domain/session/sessionStore.js +185 -0
- package/cjs/domain/session/sessionStore.js.map +1 -0
- package/cjs/domain/session/sessionStoreOperations.d.ts +12 -0
- package/cjs/domain/session/sessionStoreOperations.js +119 -0
- package/cjs/domain/session/sessionStoreOperations.js.map +1 -0
- package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +12 -0
- package/cjs/domain/session/storeStrategies/sessionInCookie.js +104 -0
- package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +1 -0
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +6 -0
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +42 -0
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -0
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -0
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +5 -0
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -0
- package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +12 -0
- package/cjs/domain/synthetics/syntheticsWorkerValues.js +31 -0
- package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +1 -0
- package/cjs/domain/tags.d.ts +6 -0
- package/cjs/domain/tags.js +67 -0
- package/cjs/domain/tags.js.map +1 -0
- package/cjs/domain/telemetry/index.d.ts +4 -0
- package/cjs/domain/telemetry/index.js +28 -0
- package/cjs/domain/telemetry/index.js.map +1 -0
- package/cjs/domain/telemetry/rawTelemetryEvent.types.d.ts +18 -0
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js +9 -0
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +1 -0
- package/cjs/domain/telemetry/telemetry.d.ts +56 -0
- package/cjs/domain/telemetry/telemetry.js +241 -0
- package/cjs/domain/telemetry/telemetry.js.map +1 -0
- package/cjs/domain/telemetry/telemetryEvent.types.d.ts +866 -0
- package/cjs/domain/telemetry/telemetryEvent.types.js +7 -0
- package/cjs/domain/telemetry/telemetryEvent.types.js.map +1 -0
- package/cjs/domain/trackingConsent.d.ts +13 -0
- package/cjs/domain/trackingConsent.js +28 -0
- package/cjs/domain/trackingConsent.js.map +1 -0
- package/cjs/index.d.ts +100 -0
- package/cjs/index.js +194 -0
- package/cjs/index.js.map +1 -0
- package/cjs/tools/abstractHooks.d.ts +24 -0
- package/cjs/tools/abstractHooks.js +41 -0
- package/cjs/tools/abstractHooks.js.map +1 -0
- package/cjs/tools/abstractLifeCycle.d.ts +23 -0
- package/cjs/tools/abstractLifeCycle.js +28 -0
- package/cjs/tools/abstractLifeCycle.js.map +1 -0
- package/cjs/tools/boundedBuffer.d.ts +16 -0
- package/cjs/tools/boundedBuffer.js +32 -0
- package/cjs/tools/boundedBuffer.js.map +1 -0
- package/cjs/tools/catchUserErrors.d.ts +1 -0
- package/cjs/tools/catchUserErrors.js +15 -0
- package/cjs/tools/catchUserErrors.js.map +1 -0
- package/cjs/tools/display.d.ts +38 -0
- package/cjs/tools/display.js +44 -0
- package/cjs/tools/display.js.map +1 -0
- package/cjs/tools/encoder.d.ts +54 -0
- package/cjs/tools/encoder.js +40 -0
- package/cjs/tools/encoder.js.map +1 -0
- package/cjs/tools/experimentalFeatures.d.ts +21 -0
- package/cjs/tools/experimentalFeatures.js +50 -0
- package/cjs/tools/experimentalFeatures.js.map +1 -0
- package/cjs/tools/getZoneJsOriginalValue.d.ts +19 -0
- package/cjs/tools/getZoneJsOriginalValue.js +29 -0
- package/cjs/tools/getZoneJsOriginalValue.js.map +1 -0
- package/cjs/tools/globalObject.d.ts +19 -0
- package/cjs/tools/globalObject.js +44 -0
- package/cjs/tools/globalObject.js.map +1 -0
- package/cjs/tools/instrumentMethod.d.ts +75 -0
- package/cjs/tools/instrumentMethod.js +118 -0
- package/cjs/tools/instrumentMethod.js.map +1 -0
- package/cjs/tools/matchOption.d.ts +8 -0
- package/cjs/tools/matchOption.js +35 -0
- package/cjs/tools/matchOption.js.map +1 -0
- package/cjs/tools/mergeInto.d.ts +25 -0
- package/cjs/tools/mergeInto.js +98 -0
- package/cjs/tools/mergeInto.js.map +1 -0
- package/cjs/tools/monitor.d.ts +9 -0
- package/cjs/tools/monitor.js +62 -0
- package/cjs/tools/monitor.js.map +1 -0
- package/cjs/tools/observable.d.ts +30 -0
- package/cjs/tools/observable.js +89 -0
- package/cjs/tools/observable.js.map +1 -0
- package/cjs/tools/queueMicrotask.d.ts +1 -0
- package/cjs/tools/queueMicrotask.js +17 -0
- package/cjs/tools/queueMicrotask.js.map +1 -0
- package/cjs/tools/readBytesFromStream.d.ts +10 -0
- package/cjs/tools/readBytesFromStream.js +28 -0
- package/cjs/tools/readBytesFromStream.js.map +1 -0
- package/cjs/tools/requestIdleCallback.d.ts +12 -0
- package/cjs/tools/requestIdleCallback.js +35 -0
- package/cjs/tools/requestIdleCallback.js.map +1 -0
- package/cjs/tools/sendToExtension.d.ts +3 -0
- package/cjs/tools/sendToExtension.js +11 -0
- package/cjs/tools/sendToExtension.js.map +1 -0
- package/cjs/tools/serialisation/context.d.ts +9 -0
- package/cjs/tools/serialisation/context.js +3 -0
- package/cjs/tools/serialisation/context.js.map +1 -0
- package/cjs/tools/serialisation/jsonStringify.d.ts +13 -0
- package/cjs/tools/serialisation/jsonStringify.js +48 -0
- package/cjs/tools/serialisation/jsonStringify.js.map +1 -0
- package/cjs/tools/serialisation/sanitize.d.ts +18 -0
- package/cjs/tools/serialisation/sanitize.js +188 -0
- package/cjs/tools/serialisation/sanitize.js.map +1 -0
- package/cjs/tools/stackTrace/computeStackTrace.d.ts +25 -0
- package/cjs/tools/stackTrace/computeStackTrace.js +187 -0
- package/cjs/tools/stackTrace/computeStackTrace.js.map +1 -0
- package/cjs/tools/stackTrace/handlingStack.d.ts +10 -0
- package/cjs/tools/stackTrace/handlingStack.js +46 -0
- package/cjs/tools/stackTrace/handlingStack.js.map +1 -0
- package/cjs/tools/taskQueue.d.ts +15 -0
- package/cjs/tools/taskQueue.js +54 -0
- package/cjs/tools/taskQueue.js.map +1 -0
- package/cjs/tools/timer.d.ts +5 -0
- package/cjs/tools/timer.js +22 -0
- package/cjs/tools/timer.js.map +1 -0
- package/cjs/tools/utils/arrayUtils.d.ts +3 -0
- package/cjs/tools/utils/arrayUtils.js +20 -0
- package/cjs/tools/utils/arrayUtils.js.map +1 -0
- package/cjs/tools/utils/browserDetection.d.ts +8 -0
- package/cjs/tools/utils/browserDetection.js +33 -0
- package/cjs/tools/utils/browserDetection.js.map +1 -0
- package/cjs/tools/utils/byteUtils.d.ts +8 -0
- package/cjs/tools/utils/byteUtils.js +34 -0
- package/cjs/tools/utils/byteUtils.js.map +1 -0
- package/cjs/tools/utils/functionUtils.d.ts +8 -0
- package/cjs/tools/utils/functionUtils.js +43 -0
- package/cjs/tools/utils/functionUtils.js.map +1 -0
- package/cjs/tools/utils/numberUtils.d.ts +9 -0
- package/cjs/tools/utils/numberUtils.js +24 -0
- package/cjs/tools/utils/numberUtils.js.map +1 -0
- package/cjs/tools/utils/objectUtils.d.ts +10 -0
- package/cjs/tools/utils/objectUtils.js +23 -0
- package/cjs/tools/utils/objectUtils.js.map +1 -0
- package/cjs/tools/utils/polyfills.d.ts +7 -0
- package/cjs/tools/utils/polyfills.js +23 -0
- package/cjs/tools/utils/polyfills.js.map +1 -0
- package/cjs/tools/utils/responseUtils.d.ts +2 -0
- package/cjs/tools/utils/responseUtils.js +17 -0
- package/cjs/tools/utils/responseUtils.js.map +1 -0
- package/cjs/tools/utils/stringUtils.d.ts +23 -0
- package/cjs/tools/utils/stringUtils.js +91 -0
- package/cjs/tools/utils/stringUtils.js.map +1 -0
- package/cjs/tools/utils/timeUtils.d.ts +53 -0
- package/cjs/tools/utils/timeUtils.js +101 -0
- package/cjs/tools/utils/timeUtils.js.map +1 -0
- package/cjs/tools/utils/timezone.d.ts +1 -0
- package/cjs/tools/utils/timezone.js +13 -0
- package/cjs/tools/utils/timezone.js.map +1 -0
- package/cjs/tools/utils/typeUtils.d.ts +4 -0
- package/cjs/tools/utils/typeUtils.js +16 -0
- package/cjs/tools/utils/typeUtils.js.map +1 -0
- package/cjs/tools/utils/urlPolyfill.d.ts +5 -0
- package/cjs/tools/utils/urlPolyfill.js +59 -0
- package/cjs/tools/utils/urlPolyfill.js.map +1 -0
- package/cjs/tools/valueHistory.d.ts +27 -0
- package/cjs/tools/valueHistory.js +104 -0
- package/cjs/tools/valueHistory.js.map +1 -0
- package/cjs/transport/batch.d.ts +16 -0
- package/cjs/transport/batch.js +110 -0
- package/cjs/transport/batch.js.map +1 -0
- package/cjs/transport/eventBridge.d.ts +21 -0
- package/cjs/transport/eventBridge.js +46 -0
- package/cjs/transport/eventBridge.js.map +1 -0
- package/cjs/transport/flushController.d.ts +65 -0
- package/cjs/transport/flushController.js +123 -0
- package/cjs/transport/flushController.js.map +1 -0
- package/cjs/transport/httpRequest.d.ts +56 -0
- package/cjs/transport/httpRequest.js +95 -0
- package/cjs/transport/httpRequest.js.map +1 -0
- package/cjs/transport/index.d.ts +7 -0
- package/cjs/transport/index.js +15 -0
- package/cjs/transport/index.js.map +1 -0
- package/cjs/transport/sendWithRetryStrategy.d.ts +41 -0
- package/cjs/transport/sendWithRetryStrategy.js +163 -0
- package/cjs/transport/sendWithRetryStrategy.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VISIBILITY_CHECK_DELAY = void 0;
|
|
4
|
+
exports.startSessionManager = startSessionManager;
|
|
5
|
+
exports.stopSessionManager = stopSessionManager;
|
|
6
|
+
const observable_1 = require("../../tools/observable");
|
|
7
|
+
const valueHistory_1 = require("../../tools/valueHistory");
|
|
8
|
+
const timeUtils_1 = require("../../tools/utils/timeUtils");
|
|
9
|
+
const addEventListener_1 = require("../../browser/addEventListener");
|
|
10
|
+
const timer_1 = require("../../tools/timer");
|
|
11
|
+
const telemetry_1 = require("../telemetry");
|
|
12
|
+
const syntheticsWorkerValues_1 = require("../synthetics/syntheticsWorkerValues");
|
|
13
|
+
const cookie_1 = require("../../browser/cookie");
|
|
14
|
+
const experimentalFeatures_1 = require("../../tools/experimentalFeatures");
|
|
15
|
+
const polyfills_1 = require("../../tools/utils/polyfills");
|
|
16
|
+
const monitor_1 = require("../../tools/monitor");
|
|
17
|
+
const sessionConstants_1 = require("./sessionConstants");
|
|
18
|
+
const sessionStore_1 = require("./sessionStore");
|
|
19
|
+
const sessionState_1 = require("./sessionState");
|
|
20
|
+
const sessionInCookie_1 = require("./storeStrategies/sessionInCookie");
|
|
21
|
+
const sessionStoreStrategy_1 = require("./storeStrategies/sessionStoreStrategy");
|
|
22
|
+
const sessionInLocalStorage_1 = require("./storeStrategies/sessionInLocalStorage");
|
|
23
|
+
exports.VISIBILITY_CHECK_DELAY = timeUtils_1.ONE_MINUTE;
|
|
24
|
+
const SESSION_CONTEXT_TIMEOUT_DELAY = sessionConstants_1.SESSION_TIME_OUT_DELAY;
|
|
25
|
+
let stopCallbacks = [];
|
|
26
|
+
function startSessionManager(configuration, productKey, computeTrackingType, trackingConsentState) {
|
|
27
|
+
const renewObservable = new observable_1.Observable();
|
|
28
|
+
const expireObservable = new observable_1.Observable();
|
|
29
|
+
// TODO - Improve configuration type and remove assertion
|
|
30
|
+
const sessionStore = (0, sessionStore_1.startSessionStore)(configuration.sessionStoreStrategyType, configuration, productKey, computeTrackingType);
|
|
31
|
+
stopCallbacks.push(() => sessionStore.stop());
|
|
32
|
+
const sessionContextHistory = (0, valueHistory_1.createValueHistory)({
|
|
33
|
+
expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY,
|
|
34
|
+
});
|
|
35
|
+
stopCallbacks.push(() => sessionContextHistory.stop());
|
|
36
|
+
sessionStore.renewObservable.subscribe(() => {
|
|
37
|
+
sessionContextHistory.add(buildSessionContext(), (0, timeUtils_1.relativeNow)());
|
|
38
|
+
renewObservable.notify();
|
|
39
|
+
});
|
|
40
|
+
sessionStore.expireObservable.subscribe(() => {
|
|
41
|
+
expireObservable.notify();
|
|
42
|
+
sessionContextHistory.closeActive((0, timeUtils_1.relativeNow)());
|
|
43
|
+
});
|
|
44
|
+
// We expand/renew session unconditionally as tracking consent is always granted when the session
|
|
45
|
+
// manager is started.
|
|
46
|
+
sessionStore.expandOrRenewSession();
|
|
47
|
+
sessionContextHistory.add(buildSessionContext(), (0, timeUtils_1.clocksOrigin)().relative);
|
|
48
|
+
if ((0, experimentalFeatures_1.isExperimentalFeatureEnabled)(experimentalFeatures_1.ExperimentalFeature.SHORT_SESSION_INVESTIGATION)) {
|
|
49
|
+
const session = sessionStore.getSession();
|
|
50
|
+
if (session) {
|
|
51
|
+
detectSessionIdChange(configuration, session);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
trackingConsentState.observable.subscribe(() => {
|
|
55
|
+
if (trackingConsentState.isGranted()) {
|
|
56
|
+
sessionStore.expandOrRenewSession();
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
sessionStore.expire(false);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
trackActivity(configuration, () => {
|
|
63
|
+
if (trackingConsentState.isGranted()) {
|
|
64
|
+
sessionStore.expandOrRenewSession();
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
trackVisibility(configuration, () => sessionStore.expandSession());
|
|
68
|
+
trackResume(configuration, () => sessionStore.restartSession());
|
|
69
|
+
function buildSessionContext() {
|
|
70
|
+
const session = sessionStore.getSession();
|
|
71
|
+
if (!session) {
|
|
72
|
+
reportUnexpectedSessionState(configuration).catch(() => void 0); // Ignore errors
|
|
73
|
+
return {
|
|
74
|
+
id: 'invalid',
|
|
75
|
+
trackingType: sessionConstants_1.SESSION_NOT_TRACKED,
|
|
76
|
+
isReplayForced: false,
|
|
77
|
+
anonymousId: undefined,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
id: session.id,
|
|
82
|
+
trackingType: session[productKey],
|
|
83
|
+
isReplayForced: !!session.forcedReplay,
|
|
84
|
+
anonymousId: session.anonymousId,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
findSession: (startTime, options) => sessionContextHistory.find(startTime, options),
|
|
89
|
+
renewObservable,
|
|
90
|
+
expireObservable,
|
|
91
|
+
sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,
|
|
92
|
+
expire: sessionStore.expire,
|
|
93
|
+
updateSessionState: sessionStore.updateSessionState,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function stopSessionManager() {
|
|
97
|
+
stopCallbacks.forEach((e) => e());
|
|
98
|
+
stopCallbacks = [];
|
|
99
|
+
}
|
|
100
|
+
function trackActivity(configuration, expandOrRenewSession) {
|
|
101
|
+
const { stop } = (0, addEventListener_1.addEventListeners)(configuration, window, ["click" /* DOM_EVENT.CLICK */, "touchstart" /* DOM_EVENT.TOUCH_START */, "keydown" /* DOM_EVENT.KEY_DOWN */, "scroll" /* DOM_EVENT.SCROLL */], expandOrRenewSession, { capture: true, passive: true });
|
|
102
|
+
stopCallbacks.push(stop);
|
|
103
|
+
}
|
|
104
|
+
function trackVisibility(configuration, expandSession) {
|
|
105
|
+
const expandSessionWhenVisible = () => {
|
|
106
|
+
if (document.visibilityState === 'visible') {
|
|
107
|
+
expandSession();
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
const { stop } = (0, addEventListener_1.addEventListener)(configuration, document, "visibilitychange" /* DOM_EVENT.VISIBILITY_CHANGE */, expandSessionWhenVisible);
|
|
111
|
+
stopCallbacks.push(stop);
|
|
112
|
+
const visibilityCheckInterval = (0, timer_1.setInterval)(expandSessionWhenVisible, exports.VISIBILITY_CHECK_DELAY);
|
|
113
|
+
stopCallbacks.push(() => {
|
|
114
|
+
(0, timer_1.clearInterval)(visibilityCheckInterval);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function trackResume(configuration, cb) {
|
|
118
|
+
const { stop } = (0, addEventListener_1.addEventListener)(configuration, window, "resume" /* DOM_EVENT.RESUME */, cb, { capture: true });
|
|
119
|
+
stopCallbacks.push(stop);
|
|
120
|
+
}
|
|
121
|
+
async function reportUnexpectedSessionState(configuration) {
|
|
122
|
+
const sessionStoreStrategyType = configuration.sessionStoreStrategyType;
|
|
123
|
+
if (!sessionStoreStrategyType) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
let rawSession;
|
|
127
|
+
let cookieContext;
|
|
128
|
+
if (sessionStoreStrategyType.type === sessionConstants_1.SessionPersistence.COOKIE) {
|
|
129
|
+
rawSession = (0, sessionInCookie_1.retrieveSessionCookie)(sessionStoreStrategyType.cookieOptions, configuration);
|
|
130
|
+
cookieContext = {
|
|
131
|
+
cookie: await getSessionCookies(),
|
|
132
|
+
currentDomain: `${window.location.protocol}//${window.location.hostname}`,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
rawSession = (0, sessionInLocalStorage_1.retrieveSessionFromLocalStorage)();
|
|
137
|
+
}
|
|
138
|
+
// monitor-until: forever, could be handy to troubleshoot issues until session manager rework
|
|
139
|
+
(0, telemetry_1.addTelemetryDebug)('Unexpected session state', {
|
|
140
|
+
sessionStoreStrategyType: sessionStoreStrategyType.type,
|
|
141
|
+
session: rawSession,
|
|
142
|
+
isSyntheticsTest: (0, syntheticsWorkerValues_1.isSyntheticsTest)(),
|
|
143
|
+
createdTimestamp: rawSession === null || rawSession === void 0 ? void 0 : rawSession.created,
|
|
144
|
+
expireTimestamp: rawSession === null || rawSession === void 0 ? void 0 : rawSession.expire,
|
|
145
|
+
...cookieContext,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
function detectSessionIdChange(configuration, initialSessionState) {
|
|
149
|
+
if (!window.cookieStore || !initialSessionState.created) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const sessionCreatedTime = Number(initialSessionState.created);
|
|
153
|
+
const sdkInitTime = (0, timeUtils_1.dateNow)();
|
|
154
|
+
const { stop } = (0, addEventListener_1.addEventListener)(configuration, cookieStore, "change" /* DOM_EVENT.CHANGE */, listener);
|
|
155
|
+
stopCallbacks.push(stop);
|
|
156
|
+
function listener(event) {
|
|
157
|
+
const changed = (0, polyfills_1.findLast)(event.changed, (change) => change.name === sessionStoreStrategy_1.SESSION_STORE_KEY);
|
|
158
|
+
if (!changed) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
const sessionAge = (0, timeUtils_1.dateNow)() - sessionCreatedTime;
|
|
162
|
+
if (sessionAge > 14 * timeUtils_1.ONE_MINUTE) {
|
|
163
|
+
// The session might have expired just because it's too old or lack activity
|
|
164
|
+
stop();
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
const newSessionState = (0, sessionState_1.toSessionState)(changed.value);
|
|
168
|
+
if (newSessionState.id && newSessionState.id !== initialSessionState.id) {
|
|
169
|
+
stop();
|
|
170
|
+
const time = (0, timeUtils_1.dateNow)() - sdkInitTime;
|
|
171
|
+
getSessionCookies()
|
|
172
|
+
.then((cookie) => {
|
|
173
|
+
// monitor-until: 2025-12-01, after RUM-10845 investigation done
|
|
174
|
+
(0, telemetry_1.addTelemetryDebug)('Session cookie changed', {
|
|
175
|
+
time,
|
|
176
|
+
session_age: sessionAge,
|
|
177
|
+
old: initialSessionState,
|
|
178
|
+
new: newSessionState,
|
|
179
|
+
cookie,
|
|
180
|
+
});
|
|
181
|
+
})
|
|
182
|
+
.catch(monitor_1.monitorError);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
async function getSessionCookies() {
|
|
188
|
+
let sessionCookies;
|
|
189
|
+
if ('cookieStore' in window) {
|
|
190
|
+
sessionCookies = await window.cookieStore.getAll(sessionStoreStrategy_1.SESSION_STORE_KEY);
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
sessionCookies = document.cookie.split(/\s*;\s*/).filter((cookie) => cookie.startsWith(sessionStoreStrategy_1.SESSION_STORE_KEY));
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
count: sessionCookies.length,
|
|
197
|
+
domain: (0, cookie_1.getCurrentSite)() || 'undefined',
|
|
198
|
+
...sessionCookies,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=sessionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionManager.js","sourceRoot":"","sources":["../../../src/domain/session/sessionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Configuration } from '../configuration';
|
|
2
|
+
export declare const EXPIRED = "1";
|
|
3
|
+
export interface SessionState {
|
|
4
|
+
id?: string;
|
|
5
|
+
created?: string;
|
|
6
|
+
expire?: string;
|
|
7
|
+
isExpired?: typeof EXPIRED;
|
|
8
|
+
[key: string]: string | undefined;
|
|
9
|
+
}
|
|
10
|
+
export declare function getExpiredSessionState(previousSessionState: SessionState | undefined, configuration: Configuration): SessionState;
|
|
11
|
+
export declare function isSessionInNotStartedState(session: SessionState): boolean;
|
|
12
|
+
export declare function isSessionStarted(session: SessionState): boolean;
|
|
13
|
+
export declare function isSessionInExpiredState(session: SessionState): boolean;
|
|
14
|
+
export declare function expandSessionState(session: SessionState): void;
|
|
15
|
+
export declare function toSessionString(session: SessionState): string;
|
|
16
|
+
export declare function toSessionState(sessionString: string | undefined | null): SessionState;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EXPIRED = void 0;
|
|
4
|
+
exports.getExpiredSessionState = getExpiredSessionState;
|
|
5
|
+
exports.isSessionInNotStartedState = isSessionInNotStartedState;
|
|
6
|
+
exports.isSessionStarted = isSessionStarted;
|
|
7
|
+
exports.isSessionInExpiredState = isSessionInExpiredState;
|
|
8
|
+
exports.expandSessionState = expandSessionState;
|
|
9
|
+
exports.toSessionString = toSessionString;
|
|
10
|
+
exports.toSessionState = toSessionState;
|
|
11
|
+
const objectUtils_1 = require("../../tools/utils/objectUtils");
|
|
12
|
+
const polyfills_1 = require("../../tools/utils/polyfills");
|
|
13
|
+
const timeUtils_1 = require("../../tools/utils/timeUtils");
|
|
14
|
+
const sessionConstants_1 = require("./sessionConstants");
|
|
15
|
+
const sessionStateValidation_1 = require("./sessionStateValidation");
|
|
16
|
+
exports.EXPIRED = '1';
|
|
17
|
+
function getExpiredSessionState(previousSessionState, configuration) {
|
|
18
|
+
const expiredSessionState = {
|
|
19
|
+
isExpired: exports.EXPIRED,
|
|
20
|
+
};
|
|
21
|
+
if (configuration.trackAnonymousUser && (previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId)) {
|
|
22
|
+
expiredSessionState.anonymousId = previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId;
|
|
23
|
+
}
|
|
24
|
+
return expiredSessionState;
|
|
25
|
+
}
|
|
26
|
+
function isSessionInNotStartedState(session) {
|
|
27
|
+
return (0, objectUtils_1.isEmptyObject)(session);
|
|
28
|
+
}
|
|
29
|
+
function isSessionStarted(session) {
|
|
30
|
+
return !isSessionInNotStartedState(session);
|
|
31
|
+
}
|
|
32
|
+
function isSessionInExpiredState(session) {
|
|
33
|
+
return session.isExpired !== undefined || !isActiveSession(session);
|
|
34
|
+
}
|
|
35
|
+
// An active session is a session in either `Tracked` or `NotTracked` state
|
|
36
|
+
function isActiveSession(sessionState) {
|
|
37
|
+
// created and expire can be undefined for versions which was not storing them
|
|
38
|
+
// these checks could be removed when older versions will not be available/live anymore
|
|
39
|
+
return ((sessionState.created === undefined || (0, timeUtils_1.dateNow)() - Number(sessionState.created) < sessionConstants_1.SESSION_TIME_OUT_DELAY) &&
|
|
40
|
+
(sessionState.expire === undefined || (0, timeUtils_1.dateNow)() < Number(sessionState.expire)));
|
|
41
|
+
}
|
|
42
|
+
function expandSessionState(session) {
|
|
43
|
+
session.expire = String((0, timeUtils_1.dateNow)() + sessionConstants_1.SESSION_EXPIRATION_DELAY);
|
|
44
|
+
}
|
|
45
|
+
function toSessionString(session) {
|
|
46
|
+
return ((0, polyfills_1.objectEntries)(session)
|
|
47
|
+
// we use `aid` as a key for anonymousId
|
|
48
|
+
.map(([key, value]) => (key === 'anonymousId' ? `aid=${value}` : `${key}=${value}`))
|
|
49
|
+
.join(sessionStateValidation_1.SESSION_ENTRY_SEPARATOR));
|
|
50
|
+
}
|
|
51
|
+
function toSessionState(sessionString) {
|
|
52
|
+
const session = {};
|
|
53
|
+
if ((0, sessionStateValidation_1.isValidSessionString)(sessionString)) {
|
|
54
|
+
sessionString.split(sessionStateValidation_1.SESSION_ENTRY_SEPARATOR).forEach((entry) => {
|
|
55
|
+
const matches = sessionStateValidation_1.SESSION_ENTRY_REGEXP.exec(entry);
|
|
56
|
+
if (matches !== null) {
|
|
57
|
+
const [, key, value] = matches;
|
|
58
|
+
if (key === 'aid') {
|
|
59
|
+
// we use `aid` as a key for anonymousId
|
|
60
|
+
session.anonymousId = value;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
session[key] = value;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return session;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=sessionState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionState.js","sourceRoot":"","sources":["../../../src/domain/session/sessionState.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SESSION_ENTRY_SEPARATOR = exports.SESSION_ENTRY_REGEXP = void 0;
|
|
4
|
+
exports.isValidSessionString = isValidSessionString;
|
|
5
|
+
exports.SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/;
|
|
6
|
+
exports.SESSION_ENTRY_SEPARATOR = '&';
|
|
7
|
+
function isValidSessionString(sessionString) {
|
|
8
|
+
return (!!sessionString &&
|
|
9
|
+
(sessionString.indexOf(exports.SESSION_ENTRY_SEPARATOR) !== -1 || exports.SESSION_ENTRY_REGEXP.test(sessionString)));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=sessionStateValidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionStateValidation.js","sourceRoot":"","sources":["../../../src/domain/session/sessionStateValidation.ts"],"names":[],"mappings":";;;AAGA,oDAKC;AARY,QAAA,oBAAoB,GAAG,4BAA4B,CAAA;AACnD,QAAA,uBAAuB,GAAG,GAAG,CAAA;AAE1C,SAAgB,oBAAoB,CAAC,aAAwC;IAC3E,OAAO,CACL,CAAC,CAAC,aAAa;QACf,CAAC,aAAa,CAAC,OAAO,CAAC,+BAAuB,CAAC,KAAK,CAAC,CAAC,IAAI,4BAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CACpG,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Observable } from '../../tools/observable';
|
|
2
|
+
import type { InitConfiguration, Configuration } from '../configuration';
|
|
3
|
+
import type { SessionStoreStrategy, SessionStoreStrategyType } from './storeStrategies/sessionStoreStrategy';
|
|
4
|
+
import type { SessionState } from './sessionState';
|
|
5
|
+
export interface SessionStore {
|
|
6
|
+
expandOrRenewSession: () => void;
|
|
7
|
+
expandSession: () => void;
|
|
8
|
+
getSession: () => SessionState;
|
|
9
|
+
restartSession: () => void;
|
|
10
|
+
renewObservable: Observable<void>;
|
|
11
|
+
expireObservable: Observable<void>;
|
|
12
|
+
sessionStateUpdateObservable: Observable<{
|
|
13
|
+
previousState: SessionState;
|
|
14
|
+
newState: SessionState;
|
|
15
|
+
}>;
|
|
16
|
+
expire: (hasConsent?: boolean) => void;
|
|
17
|
+
stop: () => void;
|
|
18
|
+
updateSessionState: (state: Partial<SessionState>) => void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Every second, the storage will be polled to check for any change that can occur
|
|
22
|
+
* to the session state in another browser tab, or another window.
|
|
23
|
+
* This value has been determined from our previous cookie-only implementation.
|
|
24
|
+
*/
|
|
25
|
+
export declare const STORAGE_POLL_DELAY = 1000;
|
|
26
|
+
/**
|
|
27
|
+
* Selects the correct session store strategy type based on the configuration and storage
|
|
28
|
+
* availability.
|
|
29
|
+
*/
|
|
30
|
+
export declare function selectSessionStoreStrategyType(initConfiguration: InitConfiguration): SessionStoreStrategyType | undefined;
|
|
31
|
+
export declare function getSessionStoreStrategy(sessionStoreStrategyType: SessionStoreStrategyType, configuration: Configuration): SessionStoreStrategy;
|
|
32
|
+
/**
|
|
33
|
+
* Different session concepts:
|
|
34
|
+
* - tracked, the session has an id and is updated along the user navigation
|
|
35
|
+
* - not tracked, the session does not have an id but it is updated along the user navigation
|
|
36
|
+
* - inactive, no session in store or session expired, waiting for a renew session
|
|
37
|
+
*/
|
|
38
|
+
export declare function startSessionStore<TrackingType extends string>(sessionStoreStrategyType: SessionStoreStrategyType, configuration: Configuration, productKey: string, computeTrackingType: (rawTrackingType?: string) => TrackingType, sessionStoreStrategy?: SessionStoreStrategy): SessionStore;
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.STORAGE_POLL_DELAY = void 0;
|
|
4
|
+
exports.selectSessionStoreStrategyType = selectSessionStoreStrategyType;
|
|
5
|
+
exports.getSessionStoreStrategy = getSessionStoreStrategy;
|
|
6
|
+
exports.startSessionStore = startSessionStore;
|
|
7
|
+
const timer_1 = require("../../tools/timer");
|
|
8
|
+
const observable_1 = require("../../tools/observable");
|
|
9
|
+
const timeUtils_1 = require("../../tools/utils/timeUtils");
|
|
10
|
+
const functionUtils_1 = require("../../tools/utils/functionUtils");
|
|
11
|
+
const stringUtils_1 = require("../../tools/utils/stringUtils");
|
|
12
|
+
const display_1 = require("../../tools/display");
|
|
13
|
+
const sessionInCookie_1 = require("./storeStrategies/sessionInCookie");
|
|
14
|
+
const sessionState_1 = require("./sessionState");
|
|
15
|
+
const sessionInLocalStorage_1 = require("./storeStrategies/sessionInLocalStorage");
|
|
16
|
+
const sessionStoreOperations_1 = require("./sessionStoreOperations");
|
|
17
|
+
const sessionConstants_1 = require("./sessionConstants");
|
|
18
|
+
/**
|
|
19
|
+
* Every second, the storage will be polled to check for any change that can occur
|
|
20
|
+
* to the session state in another browser tab, or another window.
|
|
21
|
+
* This value has been determined from our previous cookie-only implementation.
|
|
22
|
+
*/
|
|
23
|
+
exports.STORAGE_POLL_DELAY = timeUtils_1.ONE_SECOND;
|
|
24
|
+
/**
|
|
25
|
+
* Selects the correct session store strategy type based on the configuration and storage
|
|
26
|
+
* availability.
|
|
27
|
+
*/
|
|
28
|
+
function selectSessionStoreStrategyType(initConfiguration) {
|
|
29
|
+
switch (initConfiguration.sessionPersistence) {
|
|
30
|
+
case sessionConstants_1.SessionPersistence.COOKIE:
|
|
31
|
+
return (0, sessionInCookie_1.selectCookieStrategy)(initConfiguration);
|
|
32
|
+
case sessionConstants_1.SessionPersistence.LOCAL_STORAGE:
|
|
33
|
+
return (0, sessionInLocalStorage_1.selectLocalStorageStrategy)();
|
|
34
|
+
case undefined: {
|
|
35
|
+
let sessionStoreStrategyType = (0, sessionInCookie_1.selectCookieStrategy)(initConfiguration);
|
|
36
|
+
if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {
|
|
37
|
+
sessionStoreStrategyType = (0, sessionInLocalStorage_1.selectLocalStorageStrategy)();
|
|
38
|
+
}
|
|
39
|
+
return sessionStoreStrategyType;
|
|
40
|
+
}
|
|
41
|
+
default:
|
|
42
|
+
display_1.display.error(`Invalid session persistence '${String(initConfiguration.sessionPersistence)}'`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function getSessionStoreStrategy(sessionStoreStrategyType, configuration) {
|
|
46
|
+
return sessionStoreStrategyType.type === sessionConstants_1.SessionPersistence.COOKIE
|
|
47
|
+
? (0, sessionInCookie_1.initCookieStrategy)(configuration, sessionStoreStrategyType.cookieOptions)
|
|
48
|
+
: (0, sessionInLocalStorage_1.initLocalStorageStrategy)(configuration);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Different session concepts:
|
|
52
|
+
* - tracked, the session has an id and is updated along the user navigation
|
|
53
|
+
* - not tracked, the session does not have an id but it is updated along the user navigation
|
|
54
|
+
* - inactive, no session in store or session expired, waiting for a renew session
|
|
55
|
+
*/
|
|
56
|
+
function startSessionStore(sessionStoreStrategyType, configuration, productKey, computeTrackingType, sessionStoreStrategy = getSessionStoreStrategy(sessionStoreStrategyType, configuration)) {
|
|
57
|
+
const renewObservable = new observable_1.Observable();
|
|
58
|
+
const expireObservable = new observable_1.Observable();
|
|
59
|
+
const sessionStateUpdateObservable = new observable_1.Observable();
|
|
60
|
+
const watchSessionTimeoutId = (0, timer_1.setInterval)(watchSession, exports.STORAGE_POLL_DELAY);
|
|
61
|
+
let sessionCache;
|
|
62
|
+
startSession();
|
|
63
|
+
const { throttled: throttledExpandOrRenewSession, cancel: cancelExpandOrRenewSession } = (0, functionUtils_1.throttle)(() => {
|
|
64
|
+
(0, sessionStoreOperations_1.processSessionStoreOperations)({
|
|
65
|
+
process: (sessionState) => {
|
|
66
|
+
if ((0, sessionState_1.isSessionInNotStartedState)(sessionState)) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const synchronizedSession = synchronizeSession(sessionState);
|
|
70
|
+
expandOrRenewSessionState(synchronizedSession);
|
|
71
|
+
return synchronizedSession;
|
|
72
|
+
},
|
|
73
|
+
after: (sessionState) => {
|
|
74
|
+
if ((0, sessionState_1.isSessionStarted)(sessionState) && !hasSessionInCache()) {
|
|
75
|
+
renewSessionInCache(sessionState);
|
|
76
|
+
}
|
|
77
|
+
sessionCache = sessionState;
|
|
78
|
+
},
|
|
79
|
+
}, sessionStoreStrategy);
|
|
80
|
+
}, exports.STORAGE_POLL_DELAY);
|
|
81
|
+
function expandSession() {
|
|
82
|
+
(0, sessionStoreOperations_1.processSessionStoreOperations)({
|
|
83
|
+
process: (sessionState) => (hasSessionInCache() ? synchronizeSession(sessionState) : undefined),
|
|
84
|
+
}, sessionStoreStrategy);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* allows two behaviors:
|
|
88
|
+
* - if the session is active, synchronize the session cache without updating the session store
|
|
89
|
+
* - if the session is not active, clear the session store and expire the session cache
|
|
90
|
+
*/
|
|
91
|
+
function watchSession() {
|
|
92
|
+
const sessionState = sessionStoreStrategy.retrieveSession();
|
|
93
|
+
if ((0, sessionState_1.isSessionInExpiredState)(sessionState)) {
|
|
94
|
+
(0, sessionStoreOperations_1.processSessionStoreOperations)({
|
|
95
|
+
process: (sessionState) => (0, sessionState_1.isSessionInExpiredState)(sessionState) ? (0, sessionState_1.getExpiredSessionState)(sessionState, configuration) : undefined,
|
|
96
|
+
after: synchronizeSession,
|
|
97
|
+
}, sessionStoreStrategy);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
synchronizeSession(sessionState);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function synchronizeSession(sessionState) {
|
|
104
|
+
if ((0, sessionState_1.isSessionInExpiredState)(sessionState)) {
|
|
105
|
+
sessionState = (0, sessionState_1.getExpiredSessionState)(sessionState, configuration);
|
|
106
|
+
}
|
|
107
|
+
if (hasSessionInCache()) {
|
|
108
|
+
if (isSessionInCacheOutdated(sessionState)) {
|
|
109
|
+
expireSessionInCache();
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState });
|
|
113
|
+
sessionCache = sessionState;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return sessionState;
|
|
117
|
+
}
|
|
118
|
+
function startSession() {
|
|
119
|
+
(0, sessionStoreOperations_1.processSessionStoreOperations)({
|
|
120
|
+
process: (sessionState) => {
|
|
121
|
+
if ((0, sessionState_1.isSessionInNotStartedState)(sessionState)) {
|
|
122
|
+
sessionState.anonymousId = (0, stringUtils_1.generateUUID)();
|
|
123
|
+
return (0, sessionState_1.getExpiredSessionState)(sessionState, configuration);
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
after: (sessionState) => {
|
|
127
|
+
sessionCache = sessionState;
|
|
128
|
+
},
|
|
129
|
+
}, sessionStoreStrategy);
|
|
130
|
+
}
|
|
131
|
+
function expandOrRenewSessionState(sessionState) {
|
|
132
|
+
if ((0, sessionState_1.isSessionInNotStartedState)(sessionState)) {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
const trackingType = computeTrackingType(sessionState[productKey]);
|
|
136
|
+
sessionState[productKey] = trackingType;
|
|
137
|
+
delete sessionState.isExpired;
|
|
138
|
+
if (trackingType !== sessionConstants_1.SESSION_NOT_TRACKED && !sessionState.id) {
|
|
139
|
+
sessionState.id = (0, stringUtils_1.generateUUID)();
|
|
140
|
+
sessionState.created = String((0, timeUtils_1.dateNow)());
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function hasSessionInCache() {
|
|
144
|
+
return (sessionCache === null || sessionCache === void 0 ? void 0 : sessionCache[productKey]) !== undefined;
|
|
145
|
+
}
|
|
146
|
+
function isSessionInCacheOutdated(sessionState) {
|
|
147
|
+
return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey];
|
|
148
|
+
}
|
|
149
|
+
function expireSessionInCache() {
|
|
150
|
+
sessionCache = (0, sessionState_1.getExpiredSessionState)(sessionCache, configuration);
|
|
151
|
+
expireObservable.notify();
|
|
152
|
+
}
|
|
153
|
+
function renewSessionInCache(sessionState) {
|
|
154
|
+
sessionCache = sessionState;
|
|
155
|
+
renewObservable.notify();
|
|
156
|
+
}
|
|
157
|
+
function updateSessionState(partialSessionState) {
|
|
158
|
+
(0, sessionStoreOperations_1.processSessionStoreOperations)({
|
|
159
|
+
process: (sessionState) => ({ ...sessionState, ...partialSessionState }),
|
|
160
|
+
after: synchronizeSession,
|
|
161
|
+
}, sessionStoreStrategy);
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
expandOrRenewSession: throttledExpandOrRenewSession,
|
|
165
|
+
expandSession,
|
|
166
|
+
getSession: () => sessionCache,
|
|
167
|
+
renewObservable,
|
|
168
|
+
expireObservable,
|
|
169
|
+
sessionStateUpdateObservable,
|
|
170
|
+
restartSession: startSession,
|
|
171
|
+
expire: (hasConsent) => {
|
|
172
|
+
cancelExpandOrRenewSession();
|
|
173
|
+
if (hasConsent === false && sessionCache) {
|
|
174
|
+
delete sessionCache.anonymousId;
|
|
175
|
+
}
|
|
176
|
+
sessionStoreStrategy.expireSession(sessionCache);
|
|
177
|
+
synchronizeSession((0, sessionState_1.getExpiredSessionState)(sessionCache, configuration));
|
|
178
|
+
},
|
|
179
|
+
stop: () => {
|
|
180
|
+
(0, timer_1.clearInterval)(watchSessionTimeoutId);
|
|
181
|
+
},
|
|
182
|
+
updateSessionState,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=sessionStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionStore.js","sourceRoot":"","sources":["../../../src/domain/session/sessionStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SessionStoreStrategy } from './storeStrategies/sessionStoreStrategy';
|
|
2
|
+
import type { SessionState } from './sessionState';
|
|
3
|
+
interface Operations {
|
|
4
|
+
process: (sessionState: SessionState) => SessionState | undefined;
|
|
5
|
+
after?: (sessionState: SessionState) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const LOCK_RETRY_DELAY = 10;
|
|
8
|
+
export declare const LOCK_MAX_TRIES = 100;
|
|
9
|
+
export declare const LOCK_EXPIRATION_DELAY = 1000;
|
|
10
|
+
export declare function processSessionStoreOperations(operations: Operations, sessionStoreStrategy: SessionStoreStrategy, numberOfRetries?: number): void;
|
|
11
|
+
export declare function createLock(): string;
|
|
12
|
+
export {};
|