@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,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LOCK_EXPIRATION_DELAY = exports.LOCK_MAX_TRIES = exports.LOCK_RETRY_DELAY = void 0;
|
|
4
|
+
exports.processSessionStoreOperations = processSessionStoreOperations;
|
|
5
|
+
exports.createLock = createLock;
|
|
6
|
+
const timer_1 = require("../../tools/timer");
|
|
7
|
+
const stringUtils_1 = require("../../tools/utils/stringUtils");
|
|
8
|
+
const timeUtils_1 = require("../../tools/utils/timeUtils");
|
|
9
|
+
const sessionState_1 = require("./sessionState");
|
|
10
|
+
exports.LOCK_RETRY_DELAY = 10;
|
|
11
|
+
exports.LOCK_MAX_TRIES = 100;
|
|
12
|
+
// Locks should be hold for a few milliseconds top, just the time it takes to read and write a
|
|
13
|
+
// cookie. Using one second should be enough in most situations.
|
|
14
|
+
exports.LOCK_EXPIRATION_DELAY = timeUtils_1.ONE_SECOND;
|
|
15
|
+
const LOCK_SEPARATOR = '--';
|
|
16
|
+
const bufferedOperations = [];
|
|
17
|
+
let ongoingOperations;
|
|
18
|
+
function processSessionStoreOperations(operations, sessionStoreStrategy, numberOfRetries = 0) {
|
|
19
|
+
var _a;
|
|
20
|
+
const { isLockEnabled, persistSession, expireSession } = sessionStoreStrategy;
|
|
21
|
+
const persistWithLock = (session) => persistSession({ ...session, lock: currentLock });
|
|
22
|
+
const retrieveStore = () => {
|
|
23
|
+
const { lock, ...session } = sessionStoreStrategy.retrieveSession();
|
|
24
|
+
return {
|
|
25
|
+
session,
|
|
26
|
+
lock: lock && !isLockExpired(lock) ? lock : undefined,
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
if (!ongoingOperations) {
|
|
30
|
+
ongoingOperations = operations;
|
|
31
|
+
}
|
|
32
|
+
if (operations !== ongoingOperations) {
|
|
33
|
+
bufferedOperations.push(operations);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (isLockEnabled && numberOfRetries >= exports.LOCK_MAX_TRIES) {
|
|
37
|
+
next(sessionStoreStrategy);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
let currentLock;
|
|
41
|
+
let currentStore = retrieveStore();
|
|
42
|
+
if (isLockEnabled) {
|
|
43
|
+
// if someone has lock, retry later
|
|
44
|
+
if (currentStore.lock) {
|
|
45
|
+
retryLater(operations, sessionStoreStrategy, numberOfRetries);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
// acquire lock
|
|
49
|
+
currentLock = createLock();
|
|
50
|
+
persistWithLock(currentStore.session);
|
|
51
|
+
// if lock is not acquired, retry later
|
|
52
|
+
currentStore = retrieveStore();
|
|
53
|
+
if (currentStore.lock !== currentLock) {
|
|
54
|
+
retryLater(operations, sessionStoreStrategy, numberOfRetries);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
let processedSession = operations.process(currentStore.session);
|
|
59
|
+
if (isLockEnabled) {
|
|
60
|
+
// if lock corrupted after process, retry later
|
|
61
|
+
currentStore = retrieveStore();
|
|
62
|
+
if (currentStore.lock !== currentLock) {
|
|
63
|
+
retryLater(operations, sessionStoreStrategy, numberOfRetries);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (processedSession) {
|
|
68
|
+
if ((0, sessionState_1.isSessionInExpiredState)(processedSession)) {
|
|
69
|
+
expireSession(processedSession);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
(0, sessionState_1.expandSessionState)(processedSession);
|
|
73
|
+
if (isLockEnabled) {
|
|
74
|
+
persistWithLock(processedSession);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
persistSession(processedSession);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (isLockEnabled) {
|
|
82
|
+
// correctly handle lock around expiration would require to handle this case properly at several levels
|
|
83
|
+
// since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it
|
|
84
|
+
if (!(processedSession && (0, sessionState_1.isSessionInExpiredState)(processedSession))) {
|
|
85
|
+
// if lock corrupted after persist, retry later
|
|
86
|
+
currentStore = retrieveStore();
|
|
87
|
+
if (currentStore.lock !== currentLock) {
|
|
88
|
+
retryLater(operations, sessionStoreStrategy, numberOfRetries);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
persistSession(currentStore.session);
|
|
92
|
+
processedSession = currentStore.session;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// call after even if session is not persisted in order to perform operations on
|
|
96
|
+
// up-to-date session state value => the value could have been modified by another tab
|
|
97
|
+
(_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentStore.session);
|
|
98
|
+
next(sessionStoreStrategy);
|
|
99
|
+
}
|
|
100
|
+
function retryLater(operations, sessionStore, currentNumberOfRetries) {
|
|
101
|
+
(0, timer_1.setTimeout)(() => {
|
|
102
|
+
processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1);
|
|
103
|
+
}, exports.LOCK_RETRY_DELAY);
|
|
104
|
+
}
|
|
105
|
+
function next(sessionStore) {
|
|
106
|
+
ongoingOperations = undefined;
|
|
107
|
+
const nextOperations = bufferedOperations.shift();
|
|
108
|
+
if (nextOperations) {
|
|
109
|
+
processSessionStoreOperations(nextOperations, sessionStore);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function createLock() {
|
|
113
|
+
return (0, stringUtils_1.generateUUID)() + LOCK_SEPARATOR + (0, timeUtils_1.timeStampNow)();
|
|
114
|
+
}
|
|
115
|
+
function isLockExpired(lock) {
|
|
116
|
+
const [, timeStamp] = lock.split(LOCK_SEPARATOR);
|
|
117
|
+
return !timeStamp || (0, timeUtils_1.elapsed)(Number(timeStamp), (0, timeUtils_1.timeStampNow)()) > exports.LOCK_EXPIRATION_DELAY;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=sessionStoreOperations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionStoreOperations.js","sourceRoot":"","sources":["../../../src/domain/session/sessionStoreOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CookieOptions } from '../../../browser/cookie';
|
|
2
|
+
import type { InitConfiguration, Configuration } from '../../configuration';
|
|
3
|
+
import type { SessionState } from '../sessionState';
|
|
4
|
+
import type { SessionStoreStrategy, SessionStoreStrategyType } from './sessionStoreStrategy';
|
|
5
|
+
export declare function selectCookieStrategy(initConfiguration: InitConfiguration): SessionStoreStrategyType | undefined;
|
|
6
|
+
export declare function initCookieStrategy(configuration: Configuration, cookieOptions: CookieOptions): SessionStoreStrategy;
|
|
7
|
+
/**
|
|
8
|
+
* Retrieve the session state from the cookie that was set with the same cookie options
|
|
9
|
+
* If there is no match, return the first cookie, because that's how `getCookie()` works
|
|
10
|
+
*/
|
|
11
|
+
export declare function retrieveSessionCookie(cookieOptions: CookieOptions, configuration: Configuration): SessionState;
|
|
12
|
+
export declare function buildCookieOptions(initConfiguration: InitConfiguration): CookieOptions | undefined;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.selectCookieStrategy = selectCookieStrategy;
|
|
4
|
+
exports.initCookieStrategy = initCookieStrategy;
|
|
5
|
+
exports.retrieveSessionCookie = retrieveSessionCookie;
|
|
6
|
+
exports.buildCookieOptions = buildCookieOptions;
|
|
7
|
+
const objectUtils_1 = require("../../../tools/utils/objectUtils");
|
|
8
|
+
const browserDetection_1 = require("../../../tools/utils/browserDetection");
|
|
9
|
+
const cookie_1 = require("../../../browser/cookie");
|
|
10
|
+
const oldCookiesMigration_1 = require("../oldCookiesMigration");
|
|
11
|
+
const sessionConstants_1 = require("../sessionConstants");
|
|
12
|
+
const sessionState_1 = require("../sessionState");
|
|
13
|
+
const sessionStoreStrategy_1 = require("./sessionStoreStrategy");
|
|
14
|
+
const SESSION_COOKIE_VERSION = 0;
|
|
15
|
+
function selectCookieStrategy(initConfiguration) {
|
|
16
|
+
const cookieOptions = buildCookieOptions(initConfiguration);
|
|
17
|
+
return cookieOptions && (0, cookie_1.areCookiesAuthorized)(cookieOptions)
|
|
18
|
+
? { type: sessionConstants_1.SessionPersistence.COOKIE, cookieOptions }
|
|
19
|
+
: undefined;
|
|
20
|
+
}
|
|
21
|
+
function initCookieStrategy(configuration, cookieOptions) {
|
|
22
|
+
const cookieStore = {
|
|
23
|
+
/**
|
|
24
|
+
* Lock strategy allows mitigating issues due to concurrent access to cookie.
|
|
25
|
+
* This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.
|
|
26
|
+
*/
|
|
27
|
+
isLockEnabled: (0, browserDetection_1.isChromium)(),
|
|
28
|
+
persistSession: (sessionState) => storeSessionCookie(cookieOptions, configuration, sessionState, sessionConstants_1.SESSION_EXPIRATION_DELAY),
|
|
29
|
+
retrieveSession: () => retrieveSessionCookie(cookieOptions, configuration),
|
|
30
|
+
expireSession: (sessionState) => storeSessionCookie(cookieOptions, configuration, (0, sessionState_1.getExpiredSessionState)(sessionState, configuration), sessionConstants_1.SESSION_TIME_OUT_DELAY),
|
|
31
|
+
};
|
|
32
|
+
(0, oldCookiesMigration_1.tryOldCookiesMigration)(cookieStore);
|
|
33
|
+
return cookieStore;
|
|
34
|
+
}
|
|
35
|
+
function storeSessionCookie(options, configuration, sessionState, defaultTimeout) {
|
|
36
|
+
let sessionStateString = (0, sessionState_1.toSessionString)(sessionState);
|
|
37
|
+
if (configuration.betaEncodeCookieOptions) {
|
|
38
|
+
sessionStateString = (0, sessionState_1.toSessionString)({
|
|
39
|
+
...sessionState,
|
|
40
|
+
// deleting a cookie is writing a new cookie with an empty value
|
|
41
|
+
// we don't want to store the cookie options in this case otherwise the cookie will not be deleted
|
|
42
|
+
...(!(0, objectUtils_1.isEmptyObject)(sessionState) ? { c: encodeCookieOptions(options) } : {}),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
(0, cookie_1.setCookie)(sessionStoreStrategy_1.SESSION_STORE_KEY, sessionStateString, configuration.trackAnonymousUser ? sessionConstants_1.SESSION_COOKIE_EXPIRATION_DELAY : defaultTimeout, options);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Retrieve the session state from the cookie that was set with the same cookie options
|
|
49
|
+
* If there is no match, return the first cookie, because that's how `getCookie()` works
|
|
50
|
+
*/
|
|
51
|
+
function retrieveSessionCookie(cookieOptions, configuration) {
|
|
52
|
+
if (configuration.betaEncodeCookieOptions) {
|
|
53
|
+
return retrieveSessionCookieFromEncodedCookie(cookieOptions);
|
|
54
|
+
}
|
|
55
|
+
const sessionString = (0, cookie_1.getCookie)(sessionStoreStrategy_1.SESSION_STORE_KEY);
|
|
56
|
+
const sessionState = (0, sessionState_1.toSessionState)(sessionString);
|
|
57
|
+
return sessionState;
|
|
58
|
+
}
|
|
59
|
+
function buildCookieOptions(initConfiguration) {
|
|
60
|
+
const cookieOptions = {};
|
|
61
|
+
cookieOptions.secure =
|
|
62
|
+
!!initConfiguration.useSecureSessionCookie || !!initConfiguration.usePartitionedCrossSiteSessionCookie;
|
|
63
|
+
cookieOptions.crossSite = !!initConfiguration.usePartitionedCrossSiteSessionCookie;
|
|
64
|
+
cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie;
|
|
65
|
+
if (initConfiguration.trackSessionAcrossSubdomains) {
|
|
66
|
+
const currentSite = (0, cookie_1.getCurrentSite)();
|
|
67
|
+
if (!currentSite) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
cookieOptions.domain = currentSite;
|
|
71
|
+
}
|
|
72
|
+
return cookieOptions;
|
|
73
|
+
}
|
|
74
|
+
function encodeCookieOptions(cookieOptions) {
|
|
75
|
+
const domainCount = cookieOptions.domain ? cookieOptions.domain.split('.').length - 1 : 0;
|
|
76
|
+
/* eslint-disable no-bitwise */
|
|
77
|
+
let byte = 0;
|
|
78
|
+
byte |= SESSION_COOKIE_VERSION << 5; // Store version in upper 3 bits
|
|
79
|
+
byte |= domainCount << 1; // Store domain count in next 4 bits
|
|
80
|
+
byte |= cookieOptions.crossSite ? 1 : 0; // Store useCrossSiteScripting in next bit
|
|
81
|
+
/* eslint-enable no-bitwise */
|
|
82
|
+
return byte.toString(16); // Convert to hex string
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Retrieve the session state from the cookie that was set with the same cookie options.
|
|
86
|
+
* If there is no match, fallback to the first cookie, (because that's how `getCookie()` works)
|
|
87
|
+
* and this allows to keep the current session id when we release this feature.
|
|
88
|
+
*/
|
|
89
|
+
function retrieveSessionCookieFromEncodedCookie(cookieOptions) {
|
|
90
|
+
const cookies = (0, cookie_1.getCookies)(sessionStoreStrategy_1.SESSION_STORE_KEY);
|
|
91
|
+
const opts = encodeCookieOptions(cookieOptions);
|
|
92
|
+
let sessionState;
|
|
93
|
+
// reverse the cookies so that if there is no match, the cookie returned is the first one
|
|
94
|
+
for (const cookie of cookies.reverse()) {
|
|
95
|
+
sessionState = (0, sessionState_1.toSessionState)(cookie);
|
|
96
|
+
if (sessionState.c === opts) {
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// remove the cookie options from the session state as this is not part of the session state
|
|
101
|
+
sessionState === null || sessionState === void 0 ? true : delete sessionState.c;
|
|
102
|
+
return sessionState !== null && sessionState !== void 0 ? sessionState : {};
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=sessionInCookie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionInCookie.js","sourceRoot":"","sources":["../../../../src/domain/session/storeStrategies/sessionInCookie.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Configuration } from '../../configuration';
|
|
2
|
+
import type { SessionState } from '../sessionState';
|
|
3
|
+
import type { SessionStoreStrategy, SessionStoreStrategyType } from './sessionStoreStrategy';
|
|
4
|
+
export declare function selectLocalStorageStrategy(): SessionStoreStrategyType | undefined;
|
|
5
|
+
export declare function initLocalStorageStrategy(configuration: Configuration): SessionStoreStrategy;
|
|
6
|
+
export declare function retrieveSessionFromLocalStorage(): SessionState;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.selectLocalStorageStrategy = selectLocalStorageStrategy;
|
|
4
|
+
exports.initLocalStorageStrategy = initLocalStorageStrategy;
|
|
5
|
+
exports.retrieveSessionFromLocalStorage = retrieveSessionFromLocalStorage;
|
|
6
|
+
const stringUtils_1 = require("../../../tools/utils/stringUtils");
|
|
7
|
+
const sessionConstants_1 = require("../sessionConstants");
|
|
8
|
+
const sessionState_1 = require("../sessionState");
|
|
9
|
+
const sessionStoreStrategy_1 = require("./sessionStoreStrategy");
|
|
10
|
+
const LOCAL_STORAGE_TEST_KEY = '_oo_test_';
|
|
11
|
+
function selectLocalStorageStrategy() {
|
|
12
|
+
try {
|
|
13
|
+
const id = (0, stringUtils_1.generateUUID)();
|
|
14
|
+
const testKey = `${LOCAL_STORAGE_TEST_KEY}${id}`;
|
|
15
|
+
localStorage.setItem(testKey, id);
|
|
16
|
+
const retrievedId = localStorage.getItem(testKey);
|
|
17
|
+
localStorage.removeItem(testKey);
|
|
18
|
+
return id === retrievedId ? { type: sessionConstants_1.SessionPersistence.LOCAL_STORAGE } : undefined;
|
|
19
|
+
}
|
|
20
|
+
catch (_a) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function initLocalStorageStrategy(configuration) {
|
|
25
|
+
return {
|
|
26
|
+
isLockEnabled: false,
|
|
27
|
+
persistSession: persistInLocalStorage,
|
|
28
|
+
retrieveSession: retrieveSessionFromLocalStorage,
|
|
29
|
+
expireSession: (sessionState) => expireSessionFromLocalStorage(sessionState, configuration),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function persistInLocalStorage(sessionState) {
|
|
33
|
+
localStorage.setItem(sessionStoreStrategy_1.SESSION_STORE_KEY, (0, sessionState_1.toSessionString)(sessionState));
|
|
34
|
+
}
|
|
35
|
+
function retrieveSessionFromLocalStorage() {
|
|
36
|
+
const sessionString = localStorage.getItem(sessionStoreStrategy_1.SESSION_STORE_KEY);
|
|
37
|
+
return (0, sessionState_1.toSessionState)(sessionString);
|
|
38
|
+
}
|
|
39
|
+
function expireSessionFromLocalStorage(previousSessionState, configuration) {
|
|
40
|
+
persistInLocalStorage((0, sessionState_1.getExpiredSessionState)(previousSessionState, configuration));
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=sessionInLocalStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionInLocalStorage.js","sourceRoot":"","sources":["../../../../src/domain/session/storeStrategies/sessionInLocalStorage.ts"],"names":[],"mappings":";;AAUA,gEAWC;AAED,4DAOC;AAMD,0EAGC;AAvCD,kEAA+D;AAE/D,0DAAwD;AAExD,kDAAyF;AAEzF,iEAA0D;AAE1D,MAAM,sBAAsB,GAAG,WAAW,CAAA;AAE1C,SAAgB,0BAA0B;IACxC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAA,0BAAY,GAAE,CAAA;QACzB,MAAM,OAAO,GAAG,GAAG,sBAAsB,GAAG,EAAE,EAAE,CAAA;QAChD,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QACjC,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACjD,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAChC,OAAO,EAAE,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,qCAAkB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IACpF,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,SAAgB,wBAAwB,CAAC,aAA4B;IACnE,OAAO;QACL,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,qBAAqB;QACrC,eAAe,EAAE,+BAA+B;QAChD,aAAa,EAAE,CAAC,YAA0B,EAAE,EAAE,CAAC,6BAA6B,CAAC,YAAY,EAAE,aAAa,CAAC;KAC1G,CAAA;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,YAA0B;IACvD,YAAY,CAAC,OAAO,CAAC,wCAAiB,EAAE,IAAA,8BAAe,EAAC,YAAY,CAAC,CAAC,CAAA;AACxE,CAAC;AAED,SAAgB,+BAA+B;IAC7C,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,wCAAiB,CAAC,CAAA;IAC7D,OAAO,IAAA,6BAAc,EAAC,aAAa,CAAC,CAAA;AACtC,CAAC;AAED,SAAS,6BAA6B,CAAC,oBAAkC,EAAE,aAA4B;IACrG,qBAAqB,CAAC,IAAA,qCAAsB,EAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC,CAAA;AACpF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CookieOptions } from '../../../browser/cookie';
|
|
2
|
+
import type { SessionPersistence } from '../sessionConstants';
|
|
3
|
+
import type { SessionState } from '../sessionState';
|
|
4
|
+
export declare const SESSION_STORE_KEY = "_oo_s";
|
|
5
|
+
export type SessionStoreStrategyType = {
|
|
6
|
+
type: typeof SessionPersistence.COOKIE;
|
|
7
|
+
cookieOptions: CookieOptions;
|
|
8
|
+
} | {
|
|
9
|
+
type: typeof SessionPersistence.LOCAL_STORAGE;
|
|
10
|
+
};
|
|
11
|
+
export interface SessionStoreStrategy {
|
|
12
|
+
isLockEnabled: boolean;
|
|
13
|
+
persistSession: (session: SessionState) => void;
|
|
14
|
+
retrieveSession: () => SessionState;
|
|
15
|
+
expireSession: (previousSessionState: SessionState) => void;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionStoreStrategy.js","sourceRoot":"","sources":["../../../../src/domain/session/storeStrategies/sessionStoreStrategy.ts"],"names":[],"mappings":";;;AAIa,QAAA,iBAAiB,GAAG,OAAO,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const SYNTHETICS_TEST_ID_COOKIE_NAME = "openobserve-synthetics-public-id";
|
|
2
|
+
export declare const SYNTHETICS_RESULT_ID_COOKIE_NAME = "openobserve-synthetics-result-id";
|
|
3
|
+
export declare const SYNTHETICS_INJECTS_RUM_COOKIE_NAME = "openobserve-synthetics-injects-rum";
|
|
4
|
+
export interface BrowserWindow extends Window {
|
|
5
|
+
_OO_SYNTHETICS_PUBLIC_ID?: unknown;
|
|
6
|
+
_OO_SYNTHETICS_RESULT_ID?: unknown;
|
|
7
|
+
_OO_SYNTHETICS_INJECTS_RUM?: unknown;
|
|
8
|
+
}
|
|
9
|
+
export declare function willSyntheticsInjectRum(): boolean;
|
|
10
|
+
export declare function getSyntheticsTestId(): string | undefined;
|
|
11
|
+
export declare function getSyntheticsResultId(): string | undefined;
|
|
12
|
+
export declare function isSyntheticsTest(): boolean;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SYNTHETICS_INJECTS_RUM_COOKIE_NAME = exports.SYNTHETICS_RESULT_ID_COOKIE_NAME = exports.SYNTHETICS_TEST_ID_COOKIE_NAME = void 0;
|
|
4
|
+
exports.willSyntheticsInjectRum = willSyntheticsInjectRum;
|
|
5
|
+
exports.getSyntheticsTestId = getSyntheticsTestId;
|
|
6
|
+
exports.getSyntheticsResultId = getSyntheticsResultId;
|
|
7
|
+
exports.isSyntheticsTest = isSyntheticsTest;
|
|
8
|
+
const cookie_1 = require("../../browser/cookie");
|
|
9
|
+
const globalObject_1 = require("../../tools/globalObject");
|
|
10
|
+
exports.SYNTHETICS_TEST_ID_COOKIE_NAME = 'openobserve-synthetics-public-id';
|
|
11
|
+
exports.SYNTHETICS_RESULT_ID_COOKIE_NAME = 'openobserve-synthetics-result-id';
|
|
12
|
+
exports.SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'openobserve-synthetics-injects-rum';
|
|
13
|
+
function willSyntheticsInjectRum() {
|
|
14
|
+
if (globalObject_1.isWorkerEnvironment) {
|
|
15
|
+
// We don't expect to run synthetics tests in a worker environment
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
return Boolean(globalObject_1.globalObject._OO_SYNTHETICS_INJECTS_RUM || (0, cookie_1.getInitCookie)(exports.SYNTHETICS_INJECTS_RUM_COOKIE_NAME));
|
|
19
|
+
}
|
|
20
|
+
function getSyntheticsTestId() {
|
|
21
|
+
const value = window._OO_SYNTHETICS_PUBLIC_ID || (0, cookie_1.getInitCookie)(exports.SYNTHETICS_TEST_ID_COOKIE_NAME);
|
|
22
|
+
return typeof value === 'string' ? value : undefined;
|
|
23
|
+
}
|
|
24
|
+
function getSyntheticsResultId() {
|
|
25
|
+
const value = window._OO_SYNTHETICS_RESULT_ID || (0, cookie_1.getInitCookie)(exports.SYNTHETICS_RESULT_ID_COOKIE_NAME);
|
|
26
|
+
return typeof value === 'string' ? value : undefined;
|
|
27
|
+
}
|
|
28
|
+
function isSyntheticsTest() {
|
|
29
|
+
return Boolean(getSyntheticsTestId() && getSyntheticsResultId());
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=syntheticsWorkerValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntheticsWorkerValues.js","sourceRoot":"","sources":["../../../src/domain/synthetics/syntheticsWorkerValues.ts"],"names":[],"mappings":";;;AAaA,0DASC;AAED,kDAGC;AAED,sDAIC;AAED,4CAEC;AArCD,iDAAoD;AACpD,2DAA4E;AAE/D,QAAA,8BAA8B,GAAG,kCAAkC,CAAA;AACnE,QAAA,gCAAgC,GAAG,kCAAkC,CAAA;AACrE,QAAA,kCAAkC,GAAG,oCAAoC,CAAA;AAQtF,SAAgB,uBAAuB;IACrC,IAAI,kCAAmB,EAAE,CAAC;QACxB,kEAAkE;QAClE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,OAAO,CACX,2BAA8B,CAAC,0BAA0B,IAAI,IAAA,sBAAa,EAAC,0CAAkC,CAAC,CAChH,CAAA;AACH,CAAC;AAED,SAAgB,mBAAmB;IACjC,MAAM,KAAK,GAAI,MAAwB,CAAC,wBAAwB,IAAI,IAAA,sBAAa,EAAC,sCAA8B,CAAC,CAAA;IACjH,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AACtD,CAAC;AAED,SAAgB,qBAAqB;IACnC,MAAM,KAAK,GACR,MAAwB,CAAC,wBAAwB,IAAI,IAAA,sBAAa,EAAC,wCAAgC,CAAC,CAAA;IACvG,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AACtD,CAAC;AAED,SAAgB,gBAAgB;IAC9B,OAAO,OAAO,CAAC,mBAAmB,EAAE,IAAI,qBAAqB,EAAE,CAAC,CAAA;AAClE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Configuration } from './configuration';
|
|
2
|
+
export declare const TAG_SIZE_LIMIT = 200;
|
|
3
|
+
export declare function buildTags(configuration: Configuration): string[];
|
|
4
|
+
export declare function buildTag(key: string, rawValue?: string): string;
|
|
5
|
+
export declare function sanitizeTag(tag: string): string;
|
|
6
|
+
export declare function supportUnicodePropertyEscapes(): boolean;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TAG_SIZE_LIMIT = void 0;
|
|
4
|
+
exports.buildTags = buildTags;
|
|
5
|
+
exports.buildTag = buildTag;
|
|
6
|
+
exports.sanitizeTag = sanitizeTag;
|
|
7
|
+
exports.supportUnicodePropertyEscapes = supportUnicodePropertyEscapes;
|
|
8
|
+
const display_1 = require("../tools/display");
|
|
9
|
+
exports.TAG_SIZE_LIMIT = 200;
|
|
10
|
+
function buildTags(configuration) {
|
|
11
|
+
const { env, service, version, datacenter, sdkVersion, variant } = configuration;
|
|
12
|
+
const tags = [buildTag('sdk_version', sdkVersion !== null && sdkVersion !== void 0 ? sdkVersion : __BUILD_ENV__SDK_VERSION__)];
|
|
13
|
+
if (env) {
|
|
14
|
+
tags.push(buildTag('env', env));
|
|
15
|
+
}
|
|
16
|
+
if (service) {
|
|
17
|
+
tags.push(buildTag('service', service));
|
|
18
|
+
}
|
|
19
|
+
if (version) {
|
|
20
|
+
tags.push(buildTag('version', version));
|
|
21
|
+
}
|
|
22
|
+
if (datacenter) {
|
|
23
|
+
tags.push(buildTag('datacenter', datacenter));
|
|
24
|
+
}
|
|
25
|
+
if (variant) {
|
|
26
|
+
tags.push(buildTag('variant', variant));
|
|
27
|
+
}
|
|
28
|
+
return tags;
|
|
29
|
+
}
|
|
30
|
+
function buildTag(key, rawValue) {
|
|
31
|
+
// See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note
|
|
32
|
+
// that the backend may not follow the exact same rules, so we only want to display an informal
|
|
33
|
+
// warning.
|
|
34
|
+
const tag = rawValue ? `${key}:${rawValue}` : key;
|
|
35
|
+
if (tag.length > exports.TAG_SIZE_LIMIT || hasForbiddenCharacters(tag)) {
|
|
36
|
+
display_1.display.warn(`Tag ${tag} doesn't meet tag requirements and will be sanitized. ${display_1.MORE_DETAILS} ${display_1.DOCS_ORIGIN}/getting_started/tagging/#defining-tags`);
|
|
37
|
+
}
|
|
38
|
+
// Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted
|
|
39
|
+
// by forging a value containing commas.
|
|
40
|
+
return sanitizeTag(tag);
|
|
41
|
+
}
|
|
42
|
+
function sanitizeTag(tag) {
|
|
43
|
+
return tag.replace(/,/g, '_');
|
|
44
|
+
}
|
|
45
|
+
function hasForbiddenCharacters(rawValue) {
|
|
46
|
+
// Unicode property escapes is not supported in all browsers, so we use a try/catch.
|
|
47
|
+
// Todo: Remove the try/catch when dropping support for Chrome 63 and Firefox 67
|
|
48
|
+
// see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#browser_compatibility
|
|
49
|
+
if (!supportUnicodePropertyEscapes()) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
// We use the Unicode property escapes to match any character that is a letter including other languages like Chinese, Japanese, etc.
|
|
53
|
+
// p{Ll} matches a lowercase letter.
|
|
54
|
+
// p{Lo} matches a letter that is neither uppercase nor lowercase (ex: Japanese characters).
|
|
55
|
+
// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#unicode_property_escapes_vs._character_classes
|
|
56
|
+
return new RegExp('[^\\p{Ll}\\p{Lo}0-9_:./-]', 'u').test(rawValue);
|
|
57
|
+
}
|
|
58
|
+
function supportUnicodePropertyEscapes() {
|
|
59
|
+
try {
|
|
60
|
+
new RegExp('[\\p{Ll}]', 'u');
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
catch (_a) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/domain/tags.ts"],"names":[],"mappings":";;;AAQA,8BAsBC;AAED,4BAeC;AAED,kCAEC;AAiBD,sEAOC;AA3ED,8CAAqE;AAGxD,QAAA,cAAc,GAAG,GAAG,CAAA;AAKjC,SAAgB,SAAS,CAAC,aAA4B;IACpD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,aAAa,CAAA;IAChF,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,0BAA0B,CAAC,CAAC,CAAA;IAEhF,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;IACjC,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IACzC,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IACzC,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAgB,QAAQ,CAAC,GAAW,EAAE,QAAiB;IACrD,8FAA8F;IAC9F,+FAA+F;IAC/F,WAAW;IACX,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;IAEjD,IAAI,GAAG,CAAC,MAAM,GAAG,sBAAc,IAAI,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/D,iBAAO,CAAC,IAAI,CACV,OAAO,GAAG,yDAAyD,sBAAY,IAAI,qBAAW,yCAAyC,CACxI,CAAA;IACH,CAAC;IAED,kGAAkG;IAClG,wCAAwC;IACxC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAA;AACzB,CAAC;AAED,SAAgB,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAC/B,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgB;IAC9C,oFAAoF;IACpF,gFAAgF;IAChF,kJAAkJ;IAClJ,IAAI,CAAC,6BAA6B,EAAE,EAAE,CAAC;QACrC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,qIAAqI;IACrI,oCAAoC;IACpC,4FAA4F;IAC5F,0KAA0K;IAC1K,OAAO,IAAI,MAAM,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACpE,CAAC;AAED,SAAgB,6BAA6B;IAC3C,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { Telemetry } from './telemetry';
|
|
2
|
+
export { TelemetryService, TelemetryMetrics, addTelemetryDebug, addTelemetryError, resetTelemetry, startTelemetry, addTelemetryConfiguration, addTelemetryUsage, addTelemetryMetrics, getTelemetryObservable, } from './telemetry';
|
|
3
|
+
export * from './rawTelemetryEvent.types';
|
|
4
|
+
export type { TelemetryEvent, TelemetryErrorEvent, TelemetryDebugEvent, TelemetryConfigurationEvent, TelemetryUsageEvent, } from './telemetryEvent.types';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.getTelemetryObservable = exports.addTelemetryMetrics = exports.addTelemetryUsage = exports.addTelemetryConfiguration = exports.startTelemetry = exports.resetTelemetry = exports.addTelemetryError = exports.addTelemetryDebug = void 0;
|
|
18
|
+
var telemetry_1 = require("./telemetry");
|
|
19
|
+
Object.defineProperty(exports, "addTelemetryDebug", { enumerable: true, get: function () { return telemetry_1.addTelemetryDebug; } });
|
|
20
|
+
Object.defineProperty(exports, "addTelemetryError", { enumerable: true, get: function () { return telemetry_1.addTelemetryError; } });
|
|
21
|
+
Object.defineProperty(exports, "resetTelemetry", { enumerable: true, get: function () { return telemetry_1.resetTelemetry; } });
|
|
22
|
+
Object.defineProperty(exports, "startTelemetry", { enumerable: true, get: function () { return telemetry_1.startTelemetry; } });
|
|
23
|
+
Object.defineProperty(exports, "addTelemetryConfiguration", { enumerable: true, get: function () { return telemetry_1.addTelemetryConfiguration; } });
|
|
24
|
+
Object.defineProperty(exports, "addTelemetryUsage", { enumerable: true, get: function () { return telemetry_1.addTelemetryUsage; } });
|
|
25
|
+
Object.defineProperty(exports, "addTelemetryMetrics", { enumerable: true, get: function () { return telemetry_1.addTelemetryMetrics; } });
|
|
26
|
+
Object.defineProperty(exports, "getTelemetryObservable", { enumerable: true, get: function () { return telemetry_1.getTelemetryObservable; } });
|
|
27
|
+
__exportStar(require("./rawTelemetryEvent.types"), exports);
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/telemetry/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,yCAWoB;AARlB,8GAAA,iBAAiB,OAAA;AACjB,8GAAA,iBAAiB,OAAA;AACjB,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA;AACd,sHAAA,yBAAyB,OAAA;AACzB,8GAAA,iBAAiB,OAAA;AACjB,gHAAA,mBAAmB,OAAA;AACnB,mHAAA,sBAAsB,OAAA;AAGxB,4DAAyC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TelemetryEvent, TelemetryConfigurationEvent, TelemetryUsageEvent } from './telemetryEvent.types';
|
|
2
|
+
export declare const TelemetryType: {
|
|
3
|
+
readonly LOG: "log";
|
|
4
|
+
readonly CONFIGURATION: "configuration";
|
|
5
|
+
readonly USAGE: "usage";
|
|
6
|
+
};
|
|
7
|
+
export declare const enum StatusType {
|
|
8
|
+
debug = "debug",
|
|
9
|
+
error = "error"
|
|
10
|
+
}
|
|
11
|
+
export interface RuntimeEnvInfo {
|
|
12
|
+
is_local_file: boolean;
|
|
13
|
+
is_worker: boolean;
|
|
14
|
+
}
|
|
15
|
+
export type RawTelemetryEvent = TelemetryEvent['telemetry'];
|
|
16
|
+
export type RawTelemetryConfiguration = TelemetryConfigurationEvent['telemetry']['configuration'];
|
|
17
|
+
export type RawTelemetryUsage = TelemetryUsageEvent['telemetry']['usage'];
|
|
18
|
+
export type RawTelemetryUsageFeature = TelemetryUsageEvent['telemetry']['usage']['feature'];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TelemetryType = void 0;
|
|
4
|
+
exports.TelemetryType = {
|
|
5
|
+
LOG: 'log',
|
|
6
|
+
CONFIGURATION: 'configuration',
|
|
7
|
+
USAGE: 'usage',
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=rawTelemetryEvent.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rawTelemetryEvent.types.js","sourceRoot":"","sources":["../../../src/domain/telemetry/rawTelemetryEvent.types.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAG;IAC3B,GAAG,EAAE,KAAK;IACV,aAAa,EAAE,eAAe;IAC9B,KAAK,EAAE,OAAO;CACN,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { Context } from '../../tools/serialisation/context';
|
|
2
|
+
import type { Configuration } from '../configuration';
|
|
3
|
+
import { BufferedObservable, Observable } from '../../tools/observable';
|
|
4
|
+
import type { RawError } from '../error/error.types';
|
|
5
|
+
import type { StackTrace } from '../../tools/stackTrace/computeStackTrace';
|
|
6
|
+
import type { Encoder } from '../../tools/encoder';
|
|
7
|
+
import type { PageMayExitEvent } from '../../browser/pageMayExitObservable';
|
|
8
|
+
import { DeflateEncoderStreamId } from '../deflate';
|
|
9
|
+
import type { AbstractHooks } from '../../tools/abstractHooks';
|
|
10
|
+
import type { TelemetryEvent } from './telemetryEvent.types';
|
|
11
|
+
import type { RawTelemetryConfiguration, RawTelemetryEvent, RawTelemetryUsage } from './rawTelemetryEvent.types';
|
|
12
|
+
export declare const enum TelemetryService {
|
|
13
|
+
LOGS = "browser-logs-sdk",
|
|
14
|
+
RUM = "browser-rum-sdk"
|
|
15
|
+
}
|
|
16
|
+
export interface Telemetry {
|
|
17
|
+
stop: () => void;
|
|
18
|
+
enabled: boolean;
|
|
19
|
+
metricsEnabled: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare const enum TelemetryMetrics {
|
|
22
|
+
CUSTOMER_DATA_METRIC_NAME = "Customer data measures",
|
|
23
|
+
REMOTE_CONFIGURATION_METRIC_NAME = "remote configuration metrics",
|
|
24
|
+
RECORDER_INIT_METRICS_TELEMETRY_NAME = "Recorder init metrics",
|
|
25
|
+
SEGMENT_METRICS_TELEMETRY_NAME = "Segment network request metrics",
|
|
26
|
+
INITIAL_VIEW_METRICS_TELEMETRY_NAME = "Initial view metrics"
|
|
27
|
+
}
|
|
28
|
+
export declare function getTelemetryObservable(): BufferedObservable<{
|
|
29
|
+
rawEvent: RawTelemetryEvent;
|
|
30
|
+
metricName?: string;
|
|
31
|
+
}>;
|
|
32
|
+
export declare function startTelemetry(telemetryService: TelemetryService, configuration: Configuration, hooks: AbstractHooks, reportError: (error: RawError) => void, pageMayExitObservable: Observable<PageMayExitEvent>, createEncoder: (streamId: DeflateEncoderStreamId) => Encoder): Telemetry;
|
|
33
|
+
export declare function startTelemetryCollection(telemetryService: TelemetryService, configuration: Configuration, hooks: AbstractHooks, observable: Observable<TelemetryEvent & Context>, metricSampleRate?: number, maxTelemetryEventsPerPage?: number): {
|
|
34
|
+
enabled: boolean;
|
|
35
|
+
metricsEnabled: boolean;
|
|
36
|
+
};
|
|
37
|
+
export declare function resetTelemetry(): void;
|
|
38
|
+
export declare function addTelemetryDebug(message: string, context?: Context): void;
|
|
39
|
+
export declare function addTelemetryError(e: unknown, context?: Context): void;
|
|
40
|
+
export declare function addTelemetryConfiguration(configuration: RawTelemetryConfiguration): void;
|
|
41
|
+
export declare function addTelemetryMetrics(metricName: TelemetryMetrics, context?: Context): void;
|
|
42
|
+
export declare function addTelemetryUsage(usage: RawTelemetryUsage): void;
|
|
43
|
+
export declare function formatError(e: unknown): {
|
|
44
|
+
error: {
|
|
45
|
+
kind: string | undefined;
|
|
46
|
+
stack: string;
|
|
47
|
+
};
|
|
48
|
+
message: string;
|
|
49
|
+
} | {
|
|
50
|
+
error: {
|
|
51
|
+
stack: string;
|
|
52
|
+
kind?: undefined;
|
|
53
|
+
};
|
|
54
|
+
message: string;
|
|
55
|
+
};
|
|
56
|
+
export declare function scrubCustomerFrames(stackTrace: StackTrace): StackTrace;
|