@kubesense/kubesense-browser-core 1.7.0 → 2.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/cjs/boot/displayAlreadyInitializedError.js +6 -7
- package/cjs/boot/displayAlreadyInitializedError.js.map +1 -1
- package/cjs/boot/init.d.ts +1 -0
- package/cjs/boot/init.js +26 -34
- package/cjs/boot/init.js.map +1 -1
- package/cjs/browser/addEventListener.d.ts +12 -9
- package/cjs/browser/addEventListener.js +107 -50
- package/cjs/browser/addEventListener.js.map +1 -1
- package/cjs/browser/browser.types.d.ts +0 -24
- package/cjs/browser/cookie.d.ts +4 -1
- package/cjs/browser/cookie.js +76 -89
- package/cjs/browser/cookie.js.map +1 -1
- package/cjs/browser/cookieAccess.d.ts +18 -0
- package/cjs/browser/cookieAccess.js +129 -0
- package/cjs/browser/cookieAccess.js.map +1 -0
- package/cjs/browser/fetch.d.ts +9 -0
- package/cjs/browser/fetch.js +18 -0
- package/cjs/browser/fetch.js.map +1 -0
- package/cjs/browser/fetchObservable.d.ts +3 -3
- package/cjs/browser/fetchObservable.js +79 -92
- package/cjs/browser/fetchObservable.js.map +1 -1
- package/cjs/browser/pageMayExitObservable.d.ts +1 -2
- package/cjs/browser/pageMayExitObservable.js +53 -51
- package/cjs/browser/pageMayExitObservable.js.map +1 -1
- package/cjs/browser/runOnReadyState.d.ts +2 -3
- package/cjs/browser/runOnReadyState.js +18 -17
- package/cjs/browser/runOnReadyState.js.map +1 -1
- package/cjs/browser/webSocketObservable.d.ts +44 -0
- package/cjs/browser/webSocketObservable.js +92 -0
- package/cjs/browser/webSocketObservable.js.map +1 -0
- package/cjs/browser/xhrObservable.d.ts +8 -3
- package/cjs/browser/xhrObservable.js +64 -77
- package/cjs/browser/xhrObservable.js.map +1 -1
- package/cjs/domain/allowedTrackingOrigins.d.ts +2 -2
- package/cjs/domain/allowedTrackingOrigins.js +27 -23
- package/cjs/domain/allowedTrackingOrigins.js.map +1 -1
- package/cjs/domain/bufferedData.d.ts +20 -6
- package/cjs/domain/bufferedData.js +41 -19
- package/cjs/domain/bufferedData.js.map +1 -1
- package/cjs/domain/configuration/configuration.d.ts +169 -76
- package/cjs/domain/configuration/configuration.js +159 -128
- package/cjs/domain/configuration/configuration.js.map +1 -1
- package/cjs/domain/configuration/index.d.ts +5 -7
- package/cjs/domain/configuration/remoteSdkConfig.d.ts +26 -6
- package/cjs/domain/configuration/remoteSdkConfig.js +152 -159
- package/cjs/domain/configuration/remoteSdkConfig.js.map +1 -1
- package/cjs/domain/connectivity/connectivity.d.ts +2 -10
- package/cjs/domain/connectivity/connectivity.js +13 -13
- package/cjs/domain/connectivity/connectivity.js.map +1 -1
- package/cjs/domain/console/consoleObservable.d.ts +1 -1
- package/cjs/domain/console/consoleObservable.js +62 -74
- package/cjs/domain/console/consoleObservable.js.map +1 -1
- package/cjs/domain/context/contextConstants.js +24 -15
- package/cjs/domain/context/contextConstants.js.map +1 -1
- package/cjs/domain/context/contextManager.js +49 -53
- package/cjs/domain/context/contextManager.js.map +1 -1
- package/cjs/domain/context/contextUtils.js +11 -12
- package/cjs/domain/context/contextUtils.js.map +1 -1
- package/cjs/domain/context/defineContextMethod.d.ts +2 -2
- package/cjs/domain/context/defineContextMethod.js +15 -16
- package/cjs/domain/context/defineContextMethod.js.map +1 -1
- package/cjs/domain/context/storeContextManager.d.ts +1 -2
- package/cjs/domain/context/storeContextManager.js +31 -33
- package/cjs/domain/context/storeContextManager.js.map +1 -1
- package/cjs/domain/contexts/accountContext.d.ts +2 -2
- package/cjs/domain/contexts/accountContext.js +26 -29
- package/cjs/domain/contexts/accountContext.js.map +1 -1
- package/cjs/domain/contexts/globalContext.d.ts +2 -2
- package/cjs/domain/contexts/globalContext.js +17 -17
- package/cjs/domain/contexts/globalContext.js.map +1 -1
- package/cjs/domain/contexts/tabContext.d.ts +4 -0
- package/cjs/domain/contexts/tabContext.js +28 -0
- package/cjs/domain/contexts/tabContext.js.map +1 -0
- package/cjs/domain/contexts/telemetrySessionContext.d.ts +4 -0
- package/cjs/domain/contexts/telemetrySessionContext.js +17 -0
- package/cjs/domain/contexts/telemetrySessionContext.js.map +1 -0
- package/cjs/domain/contexts/userContext.d.ts +8 -3
- package/cjs/domain/contexts/userContext.js +79 -114
- package/cjs/domain/contexts/userContext.js.map +1 -1
- package/cjs/domain/deflate/deflate.types.js +11 -2
- package/cjs/domain/deflate/deflate.types.js.map +1 -1
- package/cjs/domain/error/error.d.ts +14 -6
- package/cjs/domain/error/error.js +101 -70
- package/cjs/domain/error/error.js.map +1 -1
- package/cjs/domain/error/error.types.d.ts +6 -4
- package/cjs/domain/error/error.types.js +24 -11
- package/cjs/domain/error/error.types.js.map +1 -1
- package/cjs/domain/error/isError.d.ts +2 -0
- package/cjs/domain/error/isError.js +14 -0
- package/cjs/domain/error/isError.js.map +1 -0
- package/cjs/domain/error/trackRuntimeError.d.ts +3 -2
- package/cjs/domain/error/trackRuntimeError.js +44 -41
- package/cjs/domain/error/trackRuntimeError.js.map +1 -1
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.d.ts +1 -2
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +28 -38
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -1
- package/cjs/domain/extension/extensionUtils.js +20 -25
- package/cjs/domain/extension/extensionUtils.js.map +1 -1
- package/cjs/domain/geo/geocoding.js +64 -0
- package/cjs/domain/geo/geocoding.js.map +1 -0
- package/cjs/domain/geo/geolocation.js +72 -0
- package/cjs/domain/geo/geolocation.js.map +1 -0
- package/cjs/domain/report/reportObservable.d.ts +1 -2
- package/cjs/domain/report/reportObservable.js +76 -85
- package/cjs/domain/report/reportObservable.js.map +1 -1
- package/cjs/domain/resourceUtils.d.ts +1 -0
- package/cjs/domain/resourceUtils.js +20 -17
- package/cjs/domain/resourceUtils.js.map +1 -1
- package/cjs/domain/sampler.d.ts +11 -0
- package/cjs/domain/sampler.js +40 -0
- package/cjs/domain/sampler.js.map +1 -0
- package/cjs/domain/session/sessionConstants.d.ts +1 -0
- package/cjs/domain/session/sessionConstants.js +19 -13
- package/cjs/domain/session/sessionConstants.js.map +1 -1
- package/cjs/domain/session/sessionManager.d.ts +21 -13
- package/cjs/domain/session/sessionManager.js +254 -191
- package/cjs/domain/session/sessionManager.js.map +1 -1
- package/cjs/domain/session/sessionState.d.ts +10 -1
- package/cjs/domain/session/sessionState.js +72 -56
- package/cjs/domain/session/sessionState.js.map +1 -1
- package/cjs/domain/session/sessionStateValidation.js +7 -8
- package/cjs/domain/session/sessionStateValidation.js.map +1 -1
- package/cjs/domain/session/sessionStore.d.ts +4 -33
- package/cjs/domain/session/sessionStore.js +41 -181
- package/cjs/domain/session/sessionStore.js.map +1 -1
- package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +7 -11
- package/cjs/domain/session/storeStrategies/sessionInCookie.js +90 -96
- package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +1 -1
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +1 -4
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +39 -38
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -1
- package/cjs/domain/session/storeStrategies/sessionInMemory.d.ts +12 -0
- package/cjs/domain/session/storeStrategies/sessionInMemory.js +36 -0
- package/cjs/domain/session/storeStrategies/sessionInMemory.js.map +1 -0
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -7
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +7 -4
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -1
- package/cjs/domain/sourceCodeContext.d.ts +22 -0
- package/cjs/domain/sourceCodeContext.js +56 -0
- package/cjs/domain/sourceCodeContext.js.map +1 -0
- package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +9 -3
- package/cjs/domain/synthetics/syntheticsWorkerValues.js +37 -25
- package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +1 -1
- package/cjs/domain/tags.d.ts +1 -2
- package/cjs/domain/tags.js +23 -57
- package/cjs/domain/tags.js.map +1 -1
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js +8 -7
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +1 -1
- package/cjs/domain/telemetry/telemetry.d.ts +7 -8
- package/cjs/domain/telemetry/telemetry.js +192 -215
- package/cjs/domain/telemetry/telemetry.js.map +1 -1
- package/cjs/domain/telemetry/telemetryEvent.types.d.ts +161 -16
- package/cjs/domain/trackingConsent.d.ts +1 -0
- package/cjs/domain/trackingConsent.js +35 -24
- package/cjs/domain/trackingConsent.js.map +1 -1
- package/cjs/domain/userAgentData/userAgentData.js +65 -96
- package/cjs/domain/userAgentData/userAgentData.js.map +1 -1
- package/cjs/index.d.ts +34 -30
- package/cjs/index.js +297 -213
- package/cjs/tools/abstractLifeCycle.js +19 -26
- package/cjs/tools/abstractLifeCycle.js.map +1 -1
- package/cjs/tools/catchUserErrors.js +12 -12
- package/cjs/tools/catchUserErrors.js.map +1 -1
- package/cjs/tools/display.d.ts +1 -37
- package/cjs/tools/display.js +8 -43
- package/cjs/tools/display.js.map +1 -1
- package/cjs/tools/encoder.js +36 -37
- package/cjs/tools/encoder.js.map +1 -1
- package/cjs/tools/experimentalFeatures.d.ts +1 -4
- package/cjs/tools/experimentalFeatures.js +29 -40
- package/cjs/tools/experimentalFeatures.js.map +1 -1
- package/cjs/tools/getZoneJsOriginalValue.d.ts +1 -1
- package/cjs/tools/getZoneJsOriginalValue.js +22 -25
- package/cjs/tools/getZoneJsOriginalValue.js.map +1 -1
- package/cjs/tools/instrumentMethod.d.ts +57 -0
- package/cjs/tools/instrumentMethod.js +179 -112
- package/cjs/tools/instrumentMethod.js.map +1 -1
- package/cjs/tools/matchOption.d.ts +0 -1
- package/cjs/tools/matchOption.js +21 -31
- package/cjs/tools/matchOption.js.map +1 -1
- package/cjs/tools/mockable.d.ts +22 -0
- package/cjs/tools/mockable.js +28 -0
- package/cjs/tools/mockable.js.map +1 -0
- package/cjs/tools/observable.d.ts +3 -1
- package/cjs/tools/observable.js +75 -85
- package/cjs/tools/observable.js.map +1 -1
- package/cjs/tools/queueMicrotask.js +9 -14
- package/cjs/tools/queueMicrotask.js.map +1 -1
- package/cjs/tools/readBytesFromStream.d.ts +1 -6
- package/cjs/tools/readBytesFromStream.js +18 -25
- package/cjs/tools/readBytesFromStream.js.map +1 -1
- package/cjs/tools/requestIdleCallback.js +23 -29
- package/cjs/tools/requestIdleCallback.js.map +1 -1
- package/cjs/tools/sendToExtension.js +10 -8
- package/cjs/tools/sendToExtension.js.map +1 -1
- package/cjs/tools/serialisation/jsonStringify.js +37 -42
- package/cjs/tools/serialisation/jsonStringify.js.map +1 -1
- package/cjs/tools/serialisation/sanitize.d.ts +1 -0
- package/cjs/tools/serialisation/sanitize.js +112 -167
- package/cjs/tools/serialisation/sanitize.js.map +1 -1
- package/cjs/tools/serialisation/stringify.d.ts +2 -0
- package/cjs/tools/serialisation/stringify.js +18 -0
- package/cjs/tools/serialisation/stringify.js.map +1 -0
- package/cjs/tools/stackTrace/computeStackTrace.js +121 -159
- package/cjs/tools/stackTrace/computeStackTrace.js.map +1 -1
- package/cjs/tools/stackTrace/handlingStack.d.ts +1 -1
- package/cjs/tools/stackTrace/handlingStack.js +39 -38
- package/cjs/tools/stackTrace/handlingStack.js.map +1 -1
- package/cjs/tools/taskQueue.js +40 -49
- package/cjs/tools/taskQueue.js.map +1 -1
- package/cjs/tools/thenable.d.ts +8 -0
- package/cjs/tools/thenable.js +27 -0
- package/cjs/tools/thenable.js.map +1 -0
- package/cjs/tools/timer.d.ts +2 -1
- package/cjs/tools/timer.js +14 -13
- package/cjs/tools/timer.js.map +1 -1
- package/cjs/tools/utils/arrayUtils.d.ts +1 -0
- package/cjs/tools/utils/arrayUtils.js +17 -13
- package/cjs/tools/utils/arrayUtils.js.map +1 -1
- package/cjs/tools/utils/browserDetection.d.ts +1 -0
- package/cjs/tools/utils/browserDetection.js +25 -23
- package/cjs/tools/utils/browserDetection.js.map +1 -1
- package/cjs/tools/utils/byteUtils.js +20 -28
- package/cjs/tools/utils/byteUtils.js.map +1 -1
- package/cjs/tools/utils/functionUtils.js +33 -40
- package/cjs/tools/utils/functionUtils.js.map +1 -1
- package/cjs/tools/utils/numberUtils.d.ts +0 -6
- package/cjs/tools/utils/numberUtils.js +7 -18
- package/cjs/tools/utils/numberUtils.js.map +1 -1
- package/cjs/tools/utils/objectUtils.d.ts +2 -0
- package/cjs/tools/utils/objectUtils.js +27 -14
- package/cjs/tools/utils/objectUtils.js.map +1 -1
- package/cjs/tools/utils/polyfills.js +12 -16
- package/cjs/tools/utils/polyfills.js.map +1 -1
- package/cjs/tools/utils/responseUtils.js +11 -12
- package/cjs/tools/utils/responseUtils.js.map +1 -1
- package/cjs/tools/utils/stringUtils.d.ts +9 -0
- package/cjs/tools/utils/stringUtils.js +73 -77
- package/cjs/tools/utils/stringUtils.js.map +1 -1
- package/cjs/tools/utils/timezone.js +9 -10
- package/cjs/tools/utils/timezone.js.map +1 -1
- package/cjs/tools/valueHistory.d.ts +16 -3
- package/cjs/tools/valueHistory.js +113 -99
- package/cjs/tools/valueHistory.js.map +1 -1
- package/cjs/transport/batch.d.ts +11 -7
- package/cjs/transport/batch.js +93 -106
- package/cjs/transport/batch.js.map +1 -1
- package/cjs/transport/eventBridge.d.ts +6 -2
- package/cjs/transport/eventBridge.js +54 -38
- package/cjs/transport/eventBridge.js.map +1 -1
- package/cjs/transport/flushController.d.ts +6 -15
- package/cjs/transport/flushController.js +99 -118
- package/cjs/transport/flushController.js.map +1 -1
- package/cjs/transport/httpRequest.d.ts +8 -9
- package/cjs/transport/httpRequest.js +61 -97
- package/cjs/transport/httpRequest.js.map +1 -1
- package/cjs/transport/index.d.ts +3 -2
- package/cjs/transport/sendWithRetryStrategy.d.ts +9 -4
- package/cjs/transport/sendWithRetryStrategy.js +144 -148
- package/cjs/transport/sendWithRetryStrategy.js.map +1 -1
- package/esm/boot/displayAlreadyInitializedError.mjs +9 -0
- package/esm/boot/displayAlreadyInitializedError.mjs.map +1 -0
- package/esm/boot/init.mjs +30 -0
- package/esm/boot/init.mjs.map +1 -0
- package/esm/browser/addEventListener.mjs +107 -0
- package/esm/browser/addEventListener.mjs.map +1 -0
- package/esm/browser/cookie.mjs +92 -0
- package/esm/browser/cookie.mjs.map +1 -0
- package/esm/browser/cookieAccess.mjs +124 -0
- package/esm/browser/cookieAccess.mjs.map +1 -0
- package/esm/browser/fetch.mjs +18 -0
- package/esm/browser/fetch.mjs.map +1 -0
- package/esm/browser/fetchObservable.mjs +89 -0
- package/esm/browser/fetchObservable.mjs.map +1 -0
- package/esm/browser/pageMayExitObservable.mjs +56 -0
- package/esm/browser/pageMayExitObservable.mjs.map +1 -0
- package/esm/browser/runOnReadyState.mjs +19 -0
- package/esm/browser/runOnReadyState.mjs.map +1 -0
- package/esm/browser/webSocketObservable.mjs +92 -0
- package/esm/browser/webSocketObservable.mjs.map +1 -0
- package/esm/browser/xhrObservable.mjs +73 -0
- package/esm/browser/xhrObservable.mjs.map +1 -0
- package/esm/domain/allowedTrackingOrigins.mjs +27 -0
- package/esm/domain/allowedTrackingOrigins.mjs.map +1 -0
- package/esm/domain/bufferedData.mjs +43 -0
- package/esm/domain/bufferedData.mjs.map +1 -0
- package/esm/domain/configuration/configuration.mjs +163 -0
- package/esm/domain/configuration/configuration.mjs.map +1 -0
- package/esm/domain/configuration/remoteSdkConfig.mjs +163 -0
- package/esm/domain/configuration/remoteSdkConfig.mjs.map +1 -0
- package/esm/domain/connectivity/connectivity.mjs +16 -0
- package/esm/domain/connectivity/connectivity.mjs.map +1 -0
- package/esm/domain/console/consoleObservable.mjs +72 -0
- package/esm/domain/console/consoleObservable.mjs.map +1 -0
- package/esm/domain/context/contextConstants.mjs +25 -0
- package/esm/domain/context/contextConstants.mjs.map +1 -0
- package/esm/domain/context/contextManager.mjs +55 -0
- package/esm/domain/context/contextManager.mjs.map +1 -0
- package/esm/domain/context/contextUtils.mjs +15 -0
- package/esm/domain/context/contextUtils.mjs.map +1 -0
- package/esm/domain/context/defineContextMethod.mjs +19 -0
- package/esm/domain/context/defineContextMethod.mjs.map +1 -0
- package/esm/domain/context/storeContextManager.mjs +36 -0
- package/esm/domain/context/storeContextManager.mjs.map +1 -0
- package/esm/domain/contexts/accountContext.mjs +29 -0
- package/esm/domain/contexts/accountContext.mjs.map +1 -0
- package/esm/domain/contexts/globalContext.mjs +20 -0
- package/esm/domain/contexts/globalContext.mjs.map +1 -0
- package/esm/domain/contexts/tabContext.mjs +27 -0
- package/esm/domain/contexts/tabContext.mjs.map +1 -0
- package/esm/domain/contexts/telemetrySessionContext.mjs +17 -0
- package/esm/domain/contexts/telemetrySessionContext.mjs.map +1 -0
- package/esm/domain/contexts/userContext.mjs +88 -0
- package/esm/domain/contexts/userContext.mjs.map +1 -0
- package/esm/domain/deflate/deflate.types.mjs +12 -0
- package/esm/domain/deflate/deflate.types.mjs.map +1 -0
- package/esm/domain/error/error.mjs +104 -0
- package/esm/domain/error/error.mjs.map +1 -0
- package/esm/domain/error/error.types.mjs +24 -0
- package/esm/domain/error/error.types.mjs.map +1 -0
- package/esm/domain/error/isError.mjs +13 -0
- package/esm/domain/error/isError.mjs.map +1 -0
- package/esm/domain/error/trackRuntimeError.mjs +49 -0
- package/esm/domain/error/trackRuntimeError.mjs.map +1 -0
- package/esm/domain/eventRateLimiter/createEventRateLimiter.mjs +31 -0
- package/esm/domain/eventRateLimiter/createEventRateLimiter.mjs.map +1 -0
- package/esm/domain/extension/extensionUtils.mjs +23 -0
- package/esm/domain/extension/extensionUtils.mjs.map +1 -0
- package/esm/domain/geo/geocoding.mjs +60 -0
- package/esm/domain/geo/geocoding.mjs.map +1 -0
- package/esm/domain/geo/geolocation.mjs +69 -0
- package/esm/domain/geo/geolocation.mjs.map +1 -0
- package/esm/domain/report/reportObservable.mjs +89 -0
- package/esm/domain/report/reportObservable.mjs.map +1 -0
- package/esm/domain/resourceUtils.mjs +22 -0
- package/esm/domain/resourceUtils.mjs.map +1 -0
- package/esm/domain/sampler.mjs +37 -0
- package/esm/domain/sampler.mjs.map +1 -0
- package/esm/domain/session/sessionConstants.mjs +18 -0
- package/esm/domain/session/sessionConstants.mjs.map +1 -0
- package/esm/domain/session/sessionManager.mjs +258 -0
- package/esm/domain/session/sessionManager.mjs.map +1 -0
- package/esm/domain/session/sessionState.mjs +76 -0
- package/esm/domain/session/sessionState.mjs.map +1 -0
- package/esm/domain/session/sessionStateValidation.mjs +9 -0
- package/esm/domain/session/sessionStateValidation.mjs.map +1 -0
- package/esm/domain/session/sessionStore.mjs +45 -0
- package/esm/domain/session/sessionStore.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInCookie.mjs +96 -0
- package/esm/domain/session/storeStrategies/sessionInCookie.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.mjs +42 -0
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInMemory.mjs +34 -0
- package/esm/domain/session/storeStrategies/sessionInMemory.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.mjs +7 -0
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.mjs.map +1 -0
- package/esm/domain/sourceCodeContext.mjs +55 -0
- package/esm/domain/sourceCodeContext.mjs.map +1 -0
- package/esm/domain/synthetics/syntheticsWorkerValues.mjs +37 -0
- package/esm/domain/synthetics/syntheticsWorkerValues.mjs.map +1 -0
- package/esm/domain/tags.mjs +29 -0
- package/esm/domain/tags.mjs.map +1 -0
- package/esm/domain/telemetry/rawTelemetryEvent.types.mjs +10 -0
- package/esm/domain/telemetry/rawTelemetryEvent.types.mjs.map +1 -0
- package/esm/domain/telemetry/telemetry.mjs +210 -0
- package/esm/domain/telemetry/telemetry.mjs.map +1 -0
- package/esm/domain/trackingConsent.mjs +38 -0
- package/esm/domain/trackingConsent.mjs.map +1 -0
- package/esm/domain/userAgentData/userAgentData.mjs +77 -0
- package/esm/domain/userAgentData/userAgentData.mjs.map +1 -0
- package/esm/index.mjs +85 -0
- package/esm/tools/abstractLifeCycle.mjs +21 -0
- package/esm/tools/abstractLifeCycle.mjs.map +1 -0
- package/esm/tools/catchUserErrors.mjs +15 -0
- package/esm/tools/catchUserErrors.mjs.map +1 -0
- package/esm/tools/display.mjs +8 -0
- package/esm/tools/display.mjs.map +1 -0
- package/esm/tools/encoder.mjs +39 -0
- package/esm/tools/encoder.mjs.map +1 -0
- package/esm/tools/experimentalFeatures.mjs +35 -0
- package/esm/tools/experimentalFeatures.mjs.map +1 -0
- package/esm/tools/getZoneJsOriginalValue.mjs +26 -0
- package/esm/tools/getZoneJsOriginalValue.mjs.map +1 -0
- package/esm/tools/instrumentMethod.mjs +183 -0
- package/esm/tools/instrumentMethod.mjs.map +1 -0
- package/esm/tools/matchOption.mjs +25 -0
- package/esm/tools/matchOption.mjs.map +1 -0
- package/esm/tools/mockable.mjs +28 -0
- package/esm/tools/mockable.mjs.map +1 -0
- package/esm/tools/observable.mjs +77 -0
- package/esm/tools/observable.mjs.map +1 -0
- package/esm/tools/queueMicrotask.mjs +12 -0
- package/esm/tools/queueMicrotask.mjs.map +1 -0
- package/esm/tools/readBytesFromStream.mjs +21 -0
- package/esm/tools/readBytesFromStream.mjs.map +1 -0
- package/esm/tools/requestIdleCallback.mjs +28 -0
- package/esm/tools/requestIdleCallback.mjs.map +1 -0
- package/esm/tools/sendToExtension.mjs +13 -0
- package/esm/tools/sendToExtension.mjs.map +1 -0
- package/esm/tools/serialisation/jsonStringify.mjs +42 -0
- package/esm/tools/serialisation/jsonStringify.mjs.map +1 -0
- package/esm/tools/serialisation/sanitize.mjs +132 -0
- package/esm/tools/serialisation/sanitize.mjs.map +1 -0
- package/esm/tools/serialisation/stringify.mjs +17 -0
- package/esm/tools/serialisation/stringify.mjs.map +1 -0
- package/esm/tools/stackTrace/computeStackTrace.mjs +148 -0
- package/esm/tools/stackTrace/computeStackTrace.mjs.map +1 -0
- package/esm/tools/stackTrace/handlingStack.mjs +45 -0
- package/esm/tools/stackTrace/handlingStack.mjs.map +1 -0
- package/esm/tools/taskQueue.mjs +45 -0
- package/esm/tools/taskQueue.mjs.map +1 -0
- package/esm/tools/thenable.mjs +24 -0
- package/esm/tools/thenable.mjs.map +1 -0
- package/esm/tools/timer.mjs +20 -0
- package/esm/tools/timer.mjs.map +1 -0
- package/esm/tools/utils/arrayUtils.mjs +21 -0
- package/esm/tools/utils/arrayUtils.mjs.map +1 -0
- package/esm/tools/utils/browserDetection.mjs +31 -0
- package/esm/tools/utils/browserDetection.mjs.map +1 -0
- package/esm/tools/utils/byteUtils.mjs +23 -0
- package/esm/tools/utils/byteUtils.mjs.map +1 -0
- package/esm/tools/utils/functionUtils.mjs +35 -0
- package/esm/tools/utils/functionUtils.mjs.map +1 -0
- package/esm/tools/utils/numberUtils.mjs +11 -0
- package/esm/tools/utils/numberUtils.mjs.map +1 -0
- package/esm/tools/utils/objectUtils.mjs +31 -0
- package/esm/tools/utils/objectUtils.mjs.map +1 -0
- package/esm/tools/utils/polyfills.mjs +17 -0
- package/esm/tools/utils/polyfills.mjs.map +1 -0
- package/esm/tools/utils/responseUtils.mjs +15 -0
- package/esm/tools/utils/responseUtils.mjs.map +1 -0
- package/esm/tools/utils/stringUtils.mjs +81 -0
- package/esm/tools/utils/stringUtils.mjs.map +1 -0
- package/esm/tools/utils/timezone.mjs +12 -0
- package/esm/tools/utils/timezone.mjs.map +1 -0
- package/esm/tools/valueHistory.mjs +117 -0
- package/esm/tools/valueHistory.mjs.map +1 -0
- package/esm/transport/batch.mjs +96 -0
- package/esm/transport/batch.mjs.map +1 -0
- package/esm/transport/eventBridge.mjs +58 -0
- package/esm/transport/eventBridge.mjs.map +1 -0
- package/esm/transport/flushController.mjs +103 -0
- package/esm/transport/flushController.mjs.map +1 -0
- package/esm/transport/httpRequest.mjs +69 -0
- package/esm/transport/httpRequest.mjs.map +1 -0
- package/esm/transport/sendWithRetryStrategy.mjs +154 -0
- package/esm/transport/sendWithRetryStrategy.mjs.map +1 -0
- package/package.json +20 -11
- package/src/boot/displayAlreadyInitializedError.ts +4 -1
- package/src/boot/init.ts +3 -2
- package/src/browser/addEventListener.ts +43 -8
- package/src/browser/browser.types.ts +0 -32
- package/src/browser/cookie.ts +45 -30
- package/src/browser/cookieAccess.ts +172 -0
- package/src/browser/fetch.ts +14 -0
- package/src/browser/fetchObservable.ts +25 -26
- package/src/browser/pageMayExitObservable.ts +9 -5
- package/src/browser/runOnReadyState.ts +3 -8
- package/src/browser/webSocketObservable.ts +181 -0
- package/src/browser/xhrObservable.ts +22 -13
- package/src/domain/allowedTrackingOrigins.ts +7 -6
- package/src/domain/bufferedData.ts +41 -14
- package/src/domain/configuration/configuration.ts +121 -171
- package/src/domain/configuration/index.ts +6 -7
- package/src/domain/configuration/remoteSdkConfig.ts +65 -16
- package/src/domain/connectivity/connectivity.ts +11 -23
- package/src/domain/console/consoleObservable.ts +9 -5
- package/src/domain/context/contextManager.ts +6 -2
- package/src/domain/context/contextUtils.ts +1 -1
- package/src/domain/context/defineContextMethod.ts +4 -4
- package/src/domain/context/storeContextManager.ts +9 -6
- package/src/domain/contexts/accountContext.ts +5 -5
- package/src/domain/contexts/globalContext.ts +4 -5
- package/src/domain/contexts/tabContext.ts +43 -0
- package/src/domain/contexts/telemetrySessionContext.ts +26 -0
- package/src/domain/contexts/userContext.ts +21 -16
- package/src/domain/error/error.ts +83 -35
- package/src/domain/error/error.types.ts +6 -4
- package/src/domain/error/isError.ts +13 -0
- package/src/domain/error/trackRuntimeError.ts +11 -4
- package/src/domain/eventRateLimiter/createEventRateLimiter.ts +3 -9
- package/src/{tools/utils → domain/geo}/geocoding.ts +7 -18
- package/src/{tools/utils → domain/geo}/geolocation.ts +1 -1
- package/src/domain/report/reportObservable.ts +15 -8
- package/src/domain/resourceUtils.ts +1 -0
- package/src/domain/sampler.ts +59 -0
- package/src/domain/session/sessionConstants.ts +2 -1
- package/src/domain/session/sessionManager.ts +347 -178
- package/src/domain/session/sessionState.ts +71 -10
- package/src/domain/session/sessionStore.ts +53 -226
- package/src/domain/session/storeStrategies/sessionInCookie.ts +122 -107
- package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +33 -21
- package/src/domain/session/storeStrategies/sessionInMemory.ts +55 -0
- package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +28 -6
- package/src/domain/sourceCodeContext.ts +100 -0
- package/src/domain/synthetics/syntheticsWorkerValues.ts +47 -15
- package/src/domain/tags.ts +5 -19
- package/src/domain/telemetry/rawTelemetryEvent.types.ts +1 -1
- package/src/domain/telemetry/telemetry.ts +44 -52
- package/src/domain/telemetry/telemetryEvent.types.ts +177 -19
- package/src/domain/trackingConsent.ts +18 -3
- package/src/domain/userAgentData/userAgentData.ts +1 -1
- package/src/index.ts +59 -43
- package/src/tools/display.ts +2 -52
- package/src/tools/experimentalFeatures.ts +3 -4
- package/src/tools/getZoneJsOriginalValue.ts +3 -3
- package/src/tools/instrumentMethod.ts +228 -18
- package/src/tools/matchOption.ts +2 -6
- package/src/tools/mockable.ts +32 -0
- package/src/tools/observable.ts +11 -2
- package/src/tools/queueMicrotask.ts +8 -3
- package/src/tools/readBytesFromStream.ts +3 -12
- package/src/tools/requestIdleCallback.ts +2 -2
- package/src/tools/sendToExtension.ts +1 -1
- package/src/tools/serialisation/sanitize.ts +71 -64
- package/src/tools/serialisation/stringify.ts +18 -0
- package/src/tools/stackTrace/computeStackTrace.ts +19 -19
- package/src/tools/stackTrace/handlingStack.ts +15 -2
- package/src/tools/taskQueue.ts +5 -3
- package/src/tools/thenable.ts +23 -0
- package/src/tools/timer.ts +8 -7
- package/src/tools/utils/arrayUtils.ts +8 -2
- package/src/tools/utils/browserDetection.ts +8 -0
- package/src/tools/utils/byteUtils.ts +2 -6
- package/src/tools/utils/functionUtils.ts +2 -2
- package/src/tools/utils/numberUtils.ts +0 -12
- package/src/tools/utils/objectUtils.ts +20 -0
- package/src/tools/utils/stringUtils.ts +23 -1
- package/src/tools/valueHistory.ts +59 -18
- package/src/transport/batch.ts +50 -31
- package/src/transport/eventBridge.ts +24 -10
- package/src/transport/flushController.ts +22 -30
- package/src/transport/httpRequest.ts +18 -47
- package/src/transport/index.ts +3 -2
- package/src/transport/sendWithRetryStrategy.ts +29 -17
- package/cjs/browser/browser.types.js +0 -6
- package/cjs/browser/browser.types.js.map +0 -1
- package/cjs/domain/configuration/endpointBuilder.d.ts +0 -12
- package/cjs/domain/configuration/endpointBuilder.js +0 -66
- package/cjs/domain/configuration/endpointBuilder.js.map +0 -1
- package/cjs/domain/configuration/index.js +0 -44
- package/cjs/domain/configuration/index.js.map +0 -1
- package/cjs/domain/configuration/transportConfiguration.d.ts +0 -21
- package/cjs/domain/configuration/transportConfiguration.js +0 -58
- package/cjs/domain/configuration/transportConfiguration.js.map +0 -1
- package/cjs/domain/connectivity/index.js +0 -18
- package/cjs/domain/connectivity/index.js.map +0 -1
- package/cjs/domain/contexts/rumInternalContext.type.js +0 -3
- package/cjs/domain/contexts/rumInternalContext.type.js.map +0 -1
- package/cjs/domain/deflate/index.js +0 -18
- package/cjs/domain/deflate/index.js.map +0 -1
- package/cjs/domain/intakeSites.d.ts +0 -4
- package/cjs/domain/intakeSites.js +0 -7
- package/cjs/domain/intakeSites.js.map +0 -1
- package/cjs/domain/report/browser.types.js +0 -3
- package/cjs/domain/report/browser.types.js.map +0 -1
- package/cjs/domain/session/oldCookiesMigration.d.ts +0 -11
- package/cjs/domain/session/oldCookiesMigration.js +0 -40
- package/cjs/domain/session/oldCookiesMigration.js.map +0 -1
- package/cjs/domain/session/sessionStoreOperations.d.ts +0 -12
- package/cjs/domain/session/sessionStoreOperations.js +0 -119
- package/cjs/domain/session/sessionStoreOperations.js.map +0 -1
- package/cjs/domain/telemetry/index.js +0 -28
- package/cjs/domain/telemetry/index.js.map +0 -1
- package/cjs/domain/telemetry/telemetryEvent.types.js +0 -7
- package/cjs/domain/telemetry/telemetryEvent.types.js.map +0 -1
- package/cjs/domain/userAgentData/index.js +0 -18
- package/cjs/domain/userAgentData/index.js.map +0 -1
- package/cjs/index.js.map +0 -1
- package/cjs/tools/abstractHooks.d.ts +0 -24
- package/cjs/tools/abstractHooks.js +0 -41
- package/cjs/tools/abstractHooks.js.map +0 -1
- package/cjs/tools/boundedBuffer.d.ts +0 -16
- package/cjs/tools/boundedBuffer.js +0 -32
- package/cjs/tools/boundedBuffer.js.map +0 -1
- package/cjs/tools/globalObject.d.ts +0 -19
- package/cjs/tools/globalObject.js +0 -44
- package/cjs/tools/globalObject.js.map +0 -1
- package/cjs/tools/mergeInto.d.ts +0 -25
- package/cjs/tools/mergeInto.js +0 -98
- package/cjs/tools/mergeInto.js.map +0 -1
- package/cjs/tools/monitor.d.ts +0 -9
- package/cjs/tools/monitor.js +0 -61
- package/cjs/tools/monitor.js.map +0 -1
- package/cjs/tools/serialisation/context.js +0 -3
- package/cjs/tools/serialisation/context.js.map +0 -1
- package/cjs/tools/utils/geocoding.js +0 -80
- package/cjs/tools/utils/geocoding.js.map +0 -1
- package/cjs/tools/utils/geolocation.js +0 -77
- package/cjs/tools/utils/geolocation.js.map +0 -1
- package/cjs/tools/utils/timeUtils.d.ts +0 -53
- package/cjs/tools/utils/timeUtils.js +0 -101
- package/cjs/tools/utils/timeUtils.js.map +0 -1
- package/cjs/tools/utils/typeUtils.d.ts +0 -4
- package/cjs/tools/utils/typeUtils.js +0 -16
- package/cjs/tools/utils/typeUtils.js.map +0 -1
- package/cjs/tools/utils/urlPolyfill.d.ts +0 -5
- package/cjs/tools/utils/urlPolyfill.js +0 -59
- package/cjs/tools/utils/urlPolyfill.js.map +0 -1
- package/cjs/transport/index.js +0 -15
- package/cjs/transport/index.js.map +0 -1
- package/esm/boot/displayAlreadyInitializedError.d.ts +0 -2
- package/esm/boot/displayAlreadyInitializedError.js +0 -7
- package/esm/boot/displayAlreadyInitializedError.js.map +0 -1
- package/esm/boot/init.d.ts +0 -13
- package/esm/boot/init.js +0 -35
- package/esm/boot/init.js.map +0 -1
- package/esm/browser/addEventListener.d.ts +0 -87
- package/esm/browser/addEventListener.js +0 -51
- package/esm/browser/addEventListener.js.map +0 -1
- package/esm/browser/browser.types.d.ts +0 -51
- package/esm/browser/browser.types.js +0 -5
- package/esm/browser/browser.types.js.map +0 -1
- package/esm/browser/cookie.d.ts +0 -26
- package/esm/browser/cookie.js +0 -101
- package/esm/browser/cookie.js.map +0 -1
- package/esm/browser/fetchObservable.d.ts +0 -38
- package/esm/browser/fetchObservable.js +0 -99
- package/esm/browser/fetchObservable.js.map +0 -1
- package/esm/browser/pageMayExitObservable.d.ts +0 -14
- package/esm/browser/pageMayExitObservable.js +0 -51
- package/esm/browser/pageMayExitObservable.js.map +0 -1
- package/esm/browser/runOnReadyState.d.ts +0 -5
- package/esm/browser/runOnReadyState.js +0 -16
- package/esm/browser/runOnReadyState.js.map +0 -1
- package/esm/browser/xhrObservable.d.ts +0 -24
- package/esm/browser/xhrObservable.js +0 -83
- package/esm/browser/xhrObservable.js.map +0 -1
- package/esm/domain/allowedTrackingOrigins.d.ts +0 -4
- package/esm/domain/allowedTrackingOrigins.js +0 -21
- package/esm/domain/allowedTrackingOrigins.js.map +0 -1
- package/esm/domain/bufferedData.d.ts +0 -14
- package/esm/domain/bufferedData.js +0 -19
- package/esm/domain/bufferedData.js.map +0 -1
- package/esm/domain/configuration/configuration.d.ts +0 -284
- package/esm/domain/configuration/configuration.js +0 -129
- package/esm/domain/configuration/configuration.js.map +0 -1
- package/esm/domain/configuration/endpointBuilder.d.ts +0 -12
- package/esm/domain/configuration/endpointBuilder.js +0 -62
- package/esm/domain/configuration/endpointBuilder.js.map +0 -1
- package/esm/domain/configuration/index.d.ts +0 -8
- package/esm/domain/configuration/index.js +0 -6
- package/esm/domain/configuration/index.js.map +0 -1
- package/esm/domain/configuration/remoteSdkConfig.d.ts +0 -81
- package/esm/domain/configuration/remoteSdkConfig.js +0 -172
- package/esm/domain/configuration/remoteSdkConfig.js.map +0 -1
- package/esm/domain/configuration/transportConfiguration.d.ts +0 -21
- package/esm/domain/configuration/transportConfiguration.js +0 -54
- package/esm/domain/configuration/transportConfiguration.js.map +0 -1
- package/esm/domain/connectivity/connectivity.d.ts +0 -18
- package/esm/domain/connectivity/connectivity.js +0 -13
- package/esm/domain/connectivity/connectivity.js.map +0 -1
- package/esm/domain/connectivity/index.d.ts +0 -1
- package/esm/domain/connectivity/index.js +0 -2
- package/esm/domain/connectivity/index.js.map +0 -1
- package/esm/domain/console/consoleObservable.d.ts +0 -21
- package/esm/domain/console/consoleObservable.js +0 -80
- package/esm/domain/console/consoleObservable.js.map +0 -1
- package/esm/domain/context/contextConstants.d.ts +0 -21
- package/esm/domain/context/contextConstants.js +0 -15
- package/esm/domain/context/contextConstants.js.map +0 -1
- package/esm/domain/context/contextManager.d.ts +0 -19
- package/esm/domain/context/contextManager.js +0 -56
- package/esm/domain/context/contextManager.js.map +0 -1
- package/esm/domain/context/contextUtils.d.ts +0 -5
- package/esm/domain/context/contextUtils.js +0 -13
- package/esm/domain/context/contextUtils.js.map +0 -1
- package/esm/domain/context/defineContextMethod.d.ts +0 -6
- package/esm/domain/context/defineContextMethod.js +0 -17
- package/esm/domain/context/defineContextMethod.js.map +0 -1
- package/esm/domain/context/storeContextManager.d.ts +0 -6
- package/esm/domain/context/storeContextManager.js +0 -35
- package/esm/domain/context/storeContextManager.js.map +0 -1
- package/esm/domain/contexts/accountContext.d.ts +0 -26
- package/esm/domain/contexts/accountContext.js +0 -29
- package/esm/domain/contexts/accountContext.js.map +0 -1
- package/esm/domain/contexts/globalContext.d.ts +0 -18
- package/esm/domain/contexts/globalContext.js +0 -17
- package/esm/domain/contexts/globalContext.js.map +0 -1
- package/esm/domain/contexts/rumInternalContext.type.d.ts +0 -14
- package/esm/domain/contexts/rumInternalContext.type.js +0 -2
- package/esm/domain/contexts/rumInternalContext.type.js.map +0 -1
- package/esm/domain/contexts/userContext.d.ts +0 -32
- package/esm/domain/contexts/userContext.js +0 -120
- package/esm/domain/contexts/userContext.js.map +0 -1
- package/esm/domain/deflate/deflate.types.d.ts +0 -40
- package/esm/domain/deflate/deflate.types.js +0 -2
- package/esm/domain/deflate/deflate.types.js.map +0 -1
- package/esm/domain/deflate/index.d.ts +0 -1
- package/esm/domain/deflate/index.js +0 -2
- package/esm/domain/deflate/index.js.map +0 -1
- package/esm/domain/error/error.d.ts +0 -23
- package/esm/domain/error/error.js +0 -72
- package/esm/domain/error/error.js.map +0 -1
- package/esm/domain/error/error.types.d.ts +0 -47
- package/esm/domain/error/error.types.js +0 -10
- package/esm/domain/error/error.types.js.map +0 -1
- package/esm/domain/error/trackRuntimeError.d.ts +0 -11
- package/esm/domain/error/trackRuntimeError.js +0 -43
- package/esm/domain/error/trackRuntimeError.js.map +0 -1
- package/esm/domain/eventRateLimiter/createEventRateLimiter.d.ts +0 -5
- package/esm/domain/eventRateLimiter/createEventRateLimiter.js +0 -38
- package/esm/domain/eventRateLimiter/createEventRateLimiter.js.map +0 -1
- package/esm/domain/extension/extensionUtils.d.ts +0 -10
- package/esm/domain/extension/extensionUtils.js +0 -25
- package/esm/domain/extension/extensionUtils.js.map +0 -1
- package/esm/domain/intakeSites.d.ts +0 -4
- package/esm/domain/intakeSites.js +0 -4
- package/esm/domain/intakeSites.js.map +0 -1
- package/esm/domain/report/browser.types.d.ts +0 -34
- package/esm/domain/report/browser.types.js +0 -2
- package/esm/domain/report/browser.types.js.map +0 -1
- package/esm/domain/report/reportObservable.d.ts +0 -14
- package/esm/domain/report/reportObservable.js +0 -95
- package/esm/domain/report/reportObservable.js.map +0 -1
- package/esm/domain/resourceUtils.d.ts +0 -18
- package/esm/domain/resourceUtils.js +0 -17
- package/esm/domain/resourceUtils.js.map +0 -1
- package/esm/domain/session/oldCookiesMigration.d.ts +0 -11
- package/esm/domain/session/oldCookiesMigration.js +0 -36
- package/esm/domain/session/oldCookiesMigration.js.map +0 -1
- package/esm/domain/session/sessionConstants.d.ts +0 -15
- package/esm/domain/session/sessionConstants.js +0 -13
- package/esm/domain/session/sessionConstants.js.map +0 -1
- package/esm/domain/session/sessionManager.d.ts +0 -28
- package/esm/domain/session/sessionManager.js +0 -196
- package/esm/domain/session/sessionManager.js.map +0 -1
- package/esm/domain/session/sessionState.d.ts +0 -16
- package/esm/domain/session/sessionState.js +0 -60
- package/esm/domain/session/sessionState.js.map +0 -1
- package/esm/domain/session/sessionStateValidation.d.ts +0 -3
- package/esm/domain/session/sessionStateValidation.js +0 -7
- package/esm/domain/session/sessionStateValidation.js.map +0 -1
- package/esm/domain/session/sessionStore.d.ts +0 -38
- package/esm/domain/session/sessionStore.js +0 -180
- package/esm/domain/session/sessionStore.js.map +0 -1
- package/esm/domain/session/sessionStoreOperations.d.ts +0 -12
- package/esm/domain/session/sessionStoreOperations.js +0 -114
- package/esm/domain/session/sessionStoreOperations.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +0 -12
- package/esm/domain/session/storeStrategies/sessionInCookie.js +0 -98
- package/esm/domain/session/storeStrategies/sessionInCookie.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +0 -6
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +0 -37
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -16
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.js +0 -2
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.js.map +0 -1
- package/esm/domain/synthetics/syntheticsWorkerValues.d.ts +0 -12
- package/esm/domain/synthetics/syntheticsWorkerValues.js +0 -24
- package/esm/domain/synthetics/syntheticsWorkerValues.js.map +0 -1
- package/esm/domain/tags.d.ts +0 -6
- package/esm/domain/tags.js +0 -59
- package/esm/domain/tags.js.map +0 -1
- package/esm/domain/telemetry/index.d.ts +0 -4
- package/esm/domain/telemetry/index.js +0 -3
- package/esm/domain/telemetry/index.js.map +0 -1
- package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +0 -18
- package/esm/domain/telemetry/rawTelemetryEvent.types.js +0 -6
- package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +0 -1
- package/esm/domain/telemetry/telemetry.d.ts +0 -56
- package/esm/domain/telemetry/telemetry.js +0 -232
- package/esm/domain/telemetry/telemetry.js.map +0 -1
- package/esm/domain/telemetry/telemetryEvent.types.d.ts +0 -866
- package/esm/domain/telemetry/telemetryEvent.types.js +0 -6
- package/esm/domain/telemetry/telemetryEvent.types.js.map +0 -1
- package/esm/domain/trackingConsent.d.ts +0 -13
- package/esm/domain/trackingConsent.js +0 -24
- package/esm/domain/trackingConsent.js.map +0 -1
- package/esm/domain/userAgentData/index.d.ts +0 -1
- package/esm/domain/userAgentData/index.js +0 -2
- package/esm/domain/userAgentData/index.js.map +0 -1
- package/esm/domain/userAgentData/userAgentData.d.ts +0 -22
- package/esm/domain/userAgentData/userAgentData.js +0 -105
- package/esm/domain/userAgentData/userAgentData.js.map +0 -1
- package/esm/index.d.ts +0 -104
- package/esm/index.js +0 -79
- package/esm/index.js.map +0 -1
- package/esm/tools/abstractHooks.d.ts +0 -24
- package/esm/tools/abstractHooks.js +0 -37
- package/esm/tools/abstractHooks.js.map +0 -1
- package/esm/tools/abstractLifeCycle.d.ts +0 -23
- package/esm/tools/abstractLifeCycle.js +0 -24
- package/esm/tools/abstractLifeCycle.js.map +0 -1
- package/esm/tools/boundedBuffer.d.ts +0 -16
- package/esm/tools/boundedBuffer.js +0 -29
- package/esm/tools/boundedBuffer.js.map +0 -1
- package/esm/tools/catchUserErrors.d.ts +0 -1
- package/esm/tools/catchUserErrors.js +0 -12
- package/esm/tools/catchUserErrors.js.map +0 -1
- package/esm/tools/display.d.ts +0 -38
- package/esm/tools/display.js +0 -41
- package/esm/tools/display.js.map +0 -1
- package/esm/tools/encoder.d.ts +0 -54
- package/esm/tools/encoder.js +0 -37
- package/esm/tools/encoder.js.map +0 -1
- package/esm/tools/experimentalFeatures.d.ts +0 -21
- package/esm/tools/experimentalFeatures.js +0 -42
- package/esm/tools/experimentalFeatures.js.map +0 -1
- package/esm/tools/getZoneJsOriginalValue.d.ts +0 -19
- package/esm/tools/getZoneJsOriginalValue.js +0 -26
- package/esm/tools/getZoneJsOriginalValue.js.map +0 -1
- package/esm/tools/globalObject.d.ts +0 -19
- package/esm/tools/globalObject.js +0 -40
- package/esm/tools/globalObject.js.map +0 -1
- package/esm/tools/instrumentMethod.d.ts +0 -75
- package/esm/tools/instrumentMethod.js +0 -114
- package/esm/tools/instrumentMethod.js.map +0 -1
- package/esm/tools/matchOption.d.ts +0 -8
- package/esm/tools/matchOption.js +0 -31
- package/esm/tools/matchOption.js.map +0 -1
- package/esm/tools/mergeInto.d.ts +0 -25
- package/esm/tools/mergeInto.js +0 -93
- package/esm/tools/mergeInto.js.map +0 -1
- package/esm/tools/monitor.d.ts +0 -9
- package/esm/tools/monitor.js +0 -51
- package/esm/tools/monitor.js.map +0 -1
- package/esm/tools/observable.d.ts +0 -30
- package/esm/tools/observable.js +0 -83
- package/esm/tools/observable.js.map +0 -1
- package/esm/tools/queueMicrotask.d.ts +0 -1
- package/esm/tools/queueMicrotask.js +0 -14
- package/esm/tools/queueMicrotask.js.map +0 -1
- package/esm/tools/readBytesFromStream.d.ts +0 -10
- package/esm/tools/readBytesFromStream.js +0 -25
- package/esm/tools/readBytesFromStream.js.map +0 -1
- package/esm/tools/requestIdleCallback.d.ts +0 -12
- package/esm/tools/requestIdleCallback.js +0 -30
- package/esm/tools/requestIdleCallback.js.map +0 -1
- package/esm/tools/sendToExtension.d.ts +0 -3
- package/esm/tools/sendToExtension.js +0 -8
- package/esm/tools/sendToExtension.js.map +0 -1
- package/esm/tools/serialisation/context.d.ts +0 -9
- package/esm/tools/serialisation/context.js +0 -2
- package/esm/tools/serialisation/context.js.map +0 -1
- package/esm/tools/serialisation/jsonStringify.d.ts +0 -13
- package/esm/tools/serialisation/jsonStringify.js +0 -44
- package/esm/tools/serialisation/jsonStringify.js.map +0 -1
- package/esm/tools/serialisation/sanitize.d.ts +0 -18
- package/esm/tools/serialisation/sanitize.js +0 -185
- package/esm/tools/serialisation/sanitize.js.map +0 -1
- package/esm/tools/stackTrace/computeStackTrace.d.ts +0 -25
- package/esm/tools/stackTrace/computeStackTrace.js +0 -183
- package/esm/tools/stackTrace/computeStackTrace.js.map +0 -1
- package/esm/tools/stackTrace/handlingStack.d.ts +0 -10
- package/esm/tools/stackTrace/handlingStack.js +0 -41
- package/esm/tools/stackTrace/handlingStack.js.map +0 -1
- package/esm/tools/taskQueue.d.ts +0 -15
- package/esm/tools/taskQueue.js +0 -50
- package/esm/tools/taskQueue.js.map +0 -1
- package/esm/tools/timer.d.ts +0 -5
- package/esm/tools/timer.js +0 -16
- package/esm/tools/timer.js.map +0 -1
- package/esm/tools/utils/arrayUtils.d.ts +0 -3
- package/esm/tools/utils/arrayUtils.js +0 -15
- package/esm/tools/utils/arrayUtils.js.map +0 -1
- package/esm/tools/utils/browserDetection.d.ts +0 -8
- package/esm/tools/utils/browserDetection.js +0 -28
- package/esm/tools/utils/browserDetection.js.map +0 -1
- package/esm/tools/utils/byteUtils.d.ts +0 -8
- package/esm/tools/utils/byteUtils.js +0 -29
- package/esm/tools/utils/byteUtils.js.map +0 -1
- package/esm/tools/utils/functionUtils.d.ts +0 -8
- package/esm/tools/utils/functionUtils.js +0 -39
- package/esm/tools/utils/functionUtils.js.map +0 -1
- package/esm/tools/utils/geocoding.d.ts +0 -60
- package/esm/tools/utils/geocoding.js +0 -73
- package/esm/tools/utils/geocoding.js.map +0 -1
- package/esm/tools/utils/geolocation.d.ts +0 -24
- package/esm/tools/utils/geolocation.js +0 -71
- package/esm/tools/utils/geolocation.js.map +0 -1
- package/esm/tools/utils/numberUtils.d.ts +0 -8
- package/esm/tools/utils/numberUtils.js +0 -17
- package/esm/tools/utils/numberUtils.js.map +0 -1
- package/esm/tools/utils/objectUtils.d.ts +0 -10
- package/esm/tools/utils/objectUtils.js +0 -17
- package/esm/tools/utils/objectUtils.js.map +0 -1
- package/esm/tools/utils/polyfills.d.ts +0 -7
- package/esm/tools/utils/polyfills.js +0 -18
- package/esm/tools/utils/polyfills.js.map +0 -1
- package/esm/tools/utils/responseUtils.d.ts +0 -2
- package/esm/tools/utils/responseUtils.js +0 -13
- package/esm/tools/utils/responseUtils.js.map +0 -1
- package/esm/tools/utils/stringUtils.d.ts +0 -23
- package/esm/tools/utils/stringUtils.js +0 -84
- package/esm/tools/utils/stringUtils.js.map +0 -1
- package/esm/tools/utils/timeUtils.d.ts +0 -53
- package/esm/tools/utils/timeUtils.js +0 -84
- package/esm/tools/utils/timeUtils.js.map +0 -1
- package/esm/tools/utils/timezone.d.ts +0 -1
- package/esm/tools/utils/timezone.js +0 -10
- package/esm/tools/utils/timezone.js.map +0 -1
- package/esm/tools/utils/typeUtils.d.ts +0 -4
- package/esm/tools/utils/typeUtils.js +0 -13
- package/esm/tools/utils/typeUtils.js.map +0 -1
- package/esm/tools/utils/urlPolyfill.d.ts +0 -5
- package/esm/tools/utils/urlPolyfill.js +0 -52
- package/esm/tools/utils/urlPolyfill.js.map +0 -1
- package/esm/tools/valueHistory.d.ts +0 -27
- package/esm/tools/valueHistory.js +0 -100
- package/esm/tools/valueHistory.js.map +0 -1
- package/esm/transport/batch.d.ts +0 -16
- package/esm/transport/batch.js +0 -106
- package/esm/transport/batch.js.map +0 -1
- package/esm/transport/eventBridge.d.ts +0 -21
- package/esm/transport/eventBridge.js +0 -41
- package/esm/transport/eventBridge.js.map +0 -1
- package/esm/transport/flushController.d.ts +0 -65
- package/esm/transport/flushController.js +0 -119
- package/esm/transport/flushController.js.map +0 -1
- package/esm/transport/httpRequest.d.ts +0 -57
- package/esm/transport/httpRequest.js +0 -101
- package/esm/transport/httpRequest.js.map +0 -1
- package/esm/transport/index.d.ts +0 -7
- package/esm/transport/index.js +0 -5
- package/esm/transport/index.js.map +0 -1
- package/esm/transport/sendWithRetryStrategy.d.ts +0 -41
- package/esm/transport/sendWithRetryStrategy.js +0 -158
- package/esm/transport/sendWithRetryStrategy.js.map +0 -1
- package/src/domain/configuration/endpointBuilder.ts +0 -105
- package/src/domain/configuration/transportConfiguration.ts +0 -86
- package/src/domain/intakeSites.ts +0 -6
- package/src/domain/session/oldCookiesMigration.ts +0 -42
- package/src/domain/session/sessionStoreOperations.ts +0 -131
- package/src/tools/abstractHooks.ts +0 -72
- package/src/tools/boundedBuffer.ts +0 -44
- package/src/tools/globalObject.ts +0 -51
- package/src/tools/mergeInto.ts +0 -177
- package/src/tools/monitor.ts +0 -71
- package/src/tools/utils/timeUtils.ts +0 -117
- package/src/tools/utils/typeUtils.ts +0 -12
- package/src/tools/utils/urlPolyfill.ts +0 -55
- /package/cjs/{tools/utils → domain/geo}/geocoding.d.ts +0 -0
- /package/cjs/{tools/utils → domain/geo}/geolocation.d.ts +0 -0
|
@@ -9,7 +9,10 @@ export function generateUUID(placeholder?: string): string {
|
|
|
9
9
|
: `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, generateUUID)
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
// Assuming input string is following the HTTP Cookie format defined in
|
|
13
|
+
// https://www.ietf.org/rfc/rfc2616.txt and https://www.ietf.org/rfc/rfc6265.txt, we don't need to
|
|
14
|
+
// be too strict with this regex.
|
|
15
|
+
const COMMA_SEPARATED_KEY_VALUE = /(\S+?)\s*=\s*(.*?)(?:;|$)/g
|
|
13
16
|
|
|
14
17
|
/**
|
|
15
18
|
* Returns the value of the key with the given name
|
|
@@ -84,3 +87,22 @@ export function safeTruncate(candidate: string, length: number, suffix = '') {
|
|
|
84
87
|
|
|
85
88
|
return `${candidate.slice(0, correctedLength)}${suffix}`
|
|
86
89
|
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Builds a telemetry integration identifier from a library name and its version, e.g. `react-v18`
|
|
93
|
+
*/
|
|
94
|
+
export function toMajorVersionIntegration(name: string, version: string | null | undefined): string {
|
|
95
|
+
if (!version) {
|
|
96
|
+
return name
|
|
97
|
+
}
|
|
98
|
+
return `${name}-v${version.split('.')[0]}`
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Filters out falsy values and returns `undefined` if no integration is left, so plugins report a
|
|
103
|
+
* consistent "nothing to report" telemetry shape instead of an empty array.
|
|
104
|
+
*/
|
|
105
|
+
export function toIntegrations(...maybeIntegrations: Array<string | false | undefined>): string[] | undefined {
|
|
106
|
+
const integrations = maybeIntegrations.filter((integration): integration is string => !!integration)
|
|
107
|
+
return integrations.length > 0 ? integrations : undefined
|
|
108
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { ONE_MINUTE, addDuration, relativeNow } from '@kubesense/kubesense-js-core/time'
|
|
2
|
+
import type { Duration, RelativeTime } from '@kubesense/kubesense-js-core/time'
|
|
1
3
|
import { setInterval, clearInterval } from './timer'
|
|
2
4
|
import type { TimeoutId } from './timer'
|
|
3
5
|
import { removeItem } from './utils/arrayUtils'
|
|
4
|
-
import type { Duration, RelativeTime } from './utils/timeUtils'
|
|
5
|
-
import { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils'
|
|
6
6
|
|
|
7
7
|
const END_OF_TIMES = Infinity as RelativeTime
|
|
8
8
|
|
|
@@ -26,11 +26,13 @@ export interface ValueHistory<Value> {
|
|
|
26
26
|
|
|
27
27
|
closeActive: (endTime: RelativeTime) => void
|
|
28
28
|
findAll: (startTime?: RelativeTime, duration?: Duration) => Value[]
|
|
29
|
+
findAllEntries: (startTime?: RelativeTime, duration?: Duration) => Array<ValueHistoryEntry<Value>>
|
|
30
|
+
getEntries: (startTime: RelativeTime) => Array<ValueHistoryEntry<Value>>
|
|
29
31
|
reset: () => void
|
|
30
32
|
stop: () => void
|
|
31
33
|
}
|
|
32
34
|
|
|
33
|
-
let cleanupHistoriesInterval: TimeoutId |
|
|
35
|
+
let cleanupHistoriesInterval: TimeoutId | undefined
|
|
34
36
|
|
|
35
37
|
const cleanupTasks: Set<() => void> = new Set()
|
|
36
38
|
|
|
@@ -38,27 +40,35 @@ function cleanupHistories() {
|
|
|
38
40
|
cleanupTasks.forEach((task) => task())
|
|
39
41
|
}
|
|
40
42
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
type ValueHistoryArgs =
|
|
44
|
+
| {
|
|
45
|
+
expireDelay?: number
|
|
46
|
+
maxEntries: number
|
|
47
|
+
}
|
|
48
|
+
| {
|
|
49
|
+
expireDelay: number
|
|
50
|
+
maxEntries?: number
|
|
51
|
+
}
|
|
49
52
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
+
export function createValueHistory<Value>({ expireDelay, maxEntries }: ValueHistoryArgs): ValueHistory<Value> {
|
|
54
|
+
let entries: Array<ValueHistoryEntry<Value>> = []
|
|
53
55
|
|
|
54
56
|
const clearExpiredValues = () => {
|
|
57
|
+
if (!expireDelay) {
|
|
58
|
+
return
|
|
59
|
+
}
|
|
55
60
|
const oldTimeThreshold = relativeNow() - expireDelay
|
|
56
61
|
while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {
|
|
57
62
|
entries.pop()
|
|
58
63
|
}
|
|
59
64
|
}
|
|
60
65
|
|
|
61
|
-
|
|
66
|
+
if (expireDelay) {
|
|
67
|
+
if (!cleanupHistoriesInterval) {
|
|
68
|
+
cleanupHistoriesInterval = setInterval(() => cleanupHistories(), CLEAR_OLD_VALUES_INTERVAL)
|
|
69
|
+
}
|
|
70
|
+
cleanupTasks.add(clearExpiredValues)
|
|
71
|
+
}
|
|
62
72
|
|
|
63
73
|
/**
|
|
64
74
|
* Add a value to the history associated with a start time. Returns a reference to this newly
|
|
@@ -112,7 +122,7 @@ export function createValueHistory<Value>({
|
|
|
112
122
|
*/
|
|
113
123
|
function closeActive(endTime: RelativeTime) {
|
|
114
124
|
const latestEntry = entries[0]
|
|
115
|
-
if (latestEntry
|
|
125
|
+
if (latestEntry?.endTime === END_OF_TIMES) {
|
|
116
126
|
latestEntry.close(endTime)
|
|
117
127
|
}
|
|
118
128
|
}
|
|
@@ -129,6 +139,26 @@ export function createValueHistory<Value>({
|
|
|
129
139
|
.map((entry) => entry.value)
|
|
130
140
|
}
|
|
131
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Return all entries with an active period overlapping with the duration,
|
|
144
|
+
* or all entries that were active during `startTime` if no duration is provided,
|
|
145
|
+
* or all currently active entries if no `startTime` is provided.
|
|
146
|
+
*/
|
|
147
|
+
function findAllEntries(
|
|
148
|
+
startTime: RelativeTime = END_OF_TIMES,
|
|
149
|
+
duration = 0 as Duration
|
|
150
|
+
): Array<ValueHistoryEntry<Value>> {
|
|
151
|
+
const endTime = addDuration(startTime, duration)
|
|
152
|
+
return entries.filter((entry) => entry.startTime <= endTime && startTime <= entry.endTime)
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Return all the entries whose start time is equal to the given startTime.
|
|
157
|
+
*/
|
|
158
|
+
function getEntries(startTime: RelativeTime): Array<ValueHistoryEntry<Value>> {
|
|
159
|
+
return entries.filter((entry) => entry.startTime === startTime)
|
|
160
|
+
}
|
|
161
|
+
|
|
132
162
|
/**
|
|
133
163
|
* Remove all entries from this collection.
|
|
134
164
|
*/
|
|
@@ -143,9 +173,20 @@ export function createValueHistory<Value>({
|
|
|
143
173
|
cleanupTasks.delete(clearExpiredValues)
|
|
144
174
|
if (cleanupTasks.size === 0 && cleanupHistoriesInterval) {
|
|
145
175
|
clearInterval(cleanupHistoriesInterval)
|
|
146
|
-
cleanupHistoriesInterval =
|
|
176
|
+
cleanupHistoriesInterval = undefined
|
|
147
177
|
}
|
|
148
178
|
}
|
|
149
179
|
|
|
150
|
-
return { add, find, closeActive, findAll, reset, stop }
|
|
180
|
+
return { add, find, closeActive, findAll, findAllEntries, getEntries, reset, stop }
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Reset all global state. This is useful for testing to ensure clean state between tests.
|
|
185
|
+
*
|
|
186
|
+
* @internal
|
|
187
|
+
*/
|
|
188
|
+
export function resetValueHistoryGlobals() {
|
|
189
|
+
cleanupTasks.clear()
|
|
190
|
+
clearInterval(cleanupHistoriesInterval)
|
|
191
|
+
cleanupHistoriesInterval = undefined
|
|
151
192
|
}
|
package/src/transport/batch.ts
CHANGED
|
@@ -1,58 +1,73 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { EndpointBuilder } from '@kubesense/kubesense-js-core/transport'
|
|
2
|
+
import { MORE_DETAILS } from '@kubesense/kubesense-js-core/util'
|
|
3
|
+
import { DOCS_TROUBLESHOOTING, display } from '../tools/display'
|
|
2
4
|
import type { Context } from '../tools/serialisation/context'
|
|
3
5
|
import { objectValues } from '../tools/utils/polyfills'
|
|
4
|
-
import { isPageExitReason } from '../browser/pageMayExitObservable'
|
|
6
|
+
import { isPageExitReason, createPageMayExitObservable } from '../browser/pageMayExitObservable'
|
|
5
7
|
import { jsonStringify } from '../tools/serialisation/jsonStringify'
|
|
8
|
+
import { createIdentityEncoder } from '../tools/encoder'
|
|
6
9
|
import type { Encoder, EncoderResult } from '../tools/encoder'
|
|
7
10
|
import { computeBytesCount, ONE_KIBI_BYTE } from '../tools/utils/byteUtils'
|
|
8
|
-
import
|
|
9
|
-
import type {
|
|
11
|
+
import { mockable } from '../tools/mockable'
|
|
12
|
+
import type { Observable } from '../tools/observable'
|
|
13
|
+
import { createHttpRequest } from './httpRequest'
|
|
14
|
+
import type { Payload } from './httpRequest'
|
|
15
|
+
import { createFlushController } from './flushController'
|
|
16
|
+
import type { FlushEvent, FlushReason, UrgentFlushReason } from './flushController'
|
|
10
17
|
|
|
11
18
|
export const MESSAGE_BYTES_LIMIT = 256 * ONE_KIBI_BYTE
|
|
12
19
|
|
|
13
20
|
export interface Batch {
|
|
14
|
-
|
|
21
|
+
isEmpty: boolean
|
|
15
22
|
add: (message: Context) => void
|
|
16
23
|
upsert: (message: Context, key: string) => void
|
|
24
|
+
forceFlush: (reason: FlushReason) => void
|
|
25
|
+
prepareUrgentFlushObservable: Observable<UrgentFlushReason>
|
|
26
|
+
flushObservable: Observable<FlushEvent>
|
|
17
27
|
stop: () => void
|
|
18
28
|
}
|
|
19
29
|
|
|
20
30
|
export function createBatch({
|
|
21
|
-
encoder,
|
|
22
|
-
|
|
23
|
-
|
|
31
|
+
encoder = createIdentityEncoder(),
|
|
32
|
+
endpoints,
|
|
33
|
+
reportError,
|
|
24
34
|
}: {
|
|
25
|
-
encoder
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
encoder?: Encoder
|
|
36
|
+
endpoints: EndpointBuilder[]
|
|
37
|
+
reportError: (message: string) => void
|
|
28
38
|
}): Batch {
|
|
39
|
+
const request = mockable(createHttpRequest)(endpoints, reportError)
|
|
40
|
+
const pageMayExitObservable = mockable(createPageMayExitObservable)()
|
|
41
|
+
const flushController = mockable(createFlushController)({ pageMayExitObservable })
|
|
29
42
|
let upsertBuffer: { [key: string]: string } = {}
|
|
30
43
|
const flushSubscription = flushController.flushObservable.subscribe((event) => flush(event))
|
|
31
44
|
|
|
32
|
-
|
|
33
|
-
|
|
45
|
+
// A batch that failed in transit sits in the retry queue with its view counters already
|
|
46
|
+
// incremented. Draining it with sendBeacon on page exit is the last chance to deliver it, and
|
|
47
|
+
// without this the counters on the view event would not match the events the backend received.
|
|
48
|
+
const pageExitSubscription = pageMayExitObservable.subscribe(() => {
|
|
49
|
+
request.sendQueuedOnExit()
|
|
50
|
+
})
|
|
34
51
|
|
|
52
|
+
function push(serializedMessage: string, estimatedMessageBytesCount: number, key?: string) {
|
|
35
53
|
if (key !== undefined) {
|
|
54
|
+
let bytesDiff: number
|
|
55
|
+
if (upsertBuffer[key] !== undefined) {
|
|
56
|
+
bytesDiff = estimatedMessageBytesCount - encoder.estimateEncodedBytesCount(upsertBuffer[key])
|
|
57
|
+
} else {
|
|
58
|
+
flushController.notifyBeforeAddMessage(estimatedMessageBytesCount)
|
|
59
|
+
bytesDiff = 0
|
|
60
|
+
}
|
|
36
61
|
upsertBuffer[key] = serializedMessage
|
|
37
|
-
flushController.notifyAfterAddMessage()
|
|
62
|
+
flushController.notifyAfterAddMessage(bytesDiff)
|
|
38
63
|
} else {
|
|
64
|
+
flushController.notifyBeforeAddMessage(estimatedMessageBytesCount)
|
|
39
65
|
encoder.write(encoder.isEmpty ? serializedMessage : `\n${serializedMessage}`, (realMessageBytesCount) => {
|
|
40
66
|
flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount)
|
|
41
67
|
})
|
|
42
68
|
}
|
|
43
69
|
}
|
|
44
70
|
|
|
45
|
-
function hasMessageFor(key?: string): key is string {
|
|
46
|
-
return key !== undefined && upsertBuffer[key] !== undefined
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function remove(key: string) {
|
|
50
|
-
const removedMessage = upsertBuffer[key]
|
|
51
|
-
delete upsertBuffer[key]
|
|
52
|
-
const messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage)
|
|
53
|
-
flushController.notifyAfterRemoveMessage(messageBytesCount)
|
|
54
|
-
}
|
|
55
|
-
|
|
56
71
|
function addOrUpdate(message: Context, key?: string) {
|
|
57
72
|
const serializedMessage = jsonStringify(message)!
|
|
58
73
|
|
|
@@ -65,10 +80,6 @@ export function createBatch({
|
|
|
65
80
|
return
|
|
66
81
|
}
|
|
67
82
|
|
|
68
|
-
if (hasMessageFor(key)) {
|
|
69
|
-
remove(key)
|
|
70
|
-
}
|
|
71
|
-
|
|
72
83
|
push(serializedMessage, estimatedMessageBytesCount, key)
|
|
73
84
|
}
|
|
74
85
|
|
|
@@ -113,10 +124,18 @@ export function createBatch({
|
|
|
113
124
|
}
|
|
114
125
|
|
|
115
126
|
return {
|
|
116
|
-
|
|
127
|
+
get isEmpty() {
|
|
128
|
+
return flushController.messagesCount === 0
|
|
129
|
+
},
|
|
117
130
|
add: addOrUpdate,
|
|
118
131
|
upsert: addOrUpdate,
|
|
119
|
-
|
|
132
|
+
prepareUrgentFlushObservable: flushController.prepareUrgentFlushObservable,
|
|
133
|
+
forceFlush: flushController.forceFlush,
|
|
134
|
+
flushObservable: flushController.flushObservable,
|
|
135
|
+
stop: () => {
|
|
136
|
+
flushSubscription.unsubscribe()
|
|
137
|
+
pageExitSubscription.unsubscribe()
|
|
138
|
+
},
|
|
120
139
|
}
|
|
121
140
|
}
|
|
122
141
|
|
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { globalObject } from '@kubesense/kubesense-js-core/util'
|
|
2
|
+
import { display } from '../tools/display'
|
|
2
3
|
import type { DefaultPrivacyLevel } from '../domain/configuration'
|
|
3
4
|
|
|
4
|
-
export interface BrowserWindowWithEventBridge
|
|
5
|
+
export interface BrowserWindowWithEventBridge {
|
|
5
6
|
KubeSenseEventBridge?: KubeSenseEventBridge
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
export interface KubeSenseEventBridge {
|
|
9
10
|
getCapabilities?(): string
|
|
10
11
|
getPrivacyLevel?(): DefaultPrivacyLevel
|
|
12
|
+
getIsTraceSampled?(): 'true' | 'false' | 'null'
|
|
11
13
|
getAllowedWebViewHosts(): string
|
|
12
14
|
send(msg: string): void
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
export const enum BridgeCapability {
|
|
16
18
|
RECORDS = 'records',
|
|
19
|
+
PROFILES = 'profiles',
|
|
17
20
|
}
|
|
18
21
|
|
|
19
22
|
export function getEventBridge<T, E>() {
|
|
@@ -30,6 +33,9 @@ export function getEventBridge<T, E>() {
|
|
|
30
33
|
getPrivacyLevel() {
|
|
31
34
|
return eventBridgeGlobal.getPrivacyLevel?.()
|
|
32
35
|
},
|
|
36
|
+
getIsTraceSampled() {
|
|
37
|
+
return JSON.parse(eventBridgeGlobal.getIsTraceSampled?.() || 'null') as boolean | null
|
|
38
|
+
},
|
|
33
39
|
getAllowedWebViewHosts() {
|
|
34
40
|
return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts()) as string[]
|
|
35
41
|
},
|
|
@@ -45,16 +51,24 @@ export function bridgeSupports(capability: BridgeCapability): boolean {
|
|
|
45
51
|
return !!bridge && bridge.getCapabilities().includes(capability)
|
|
46
52
|
}
|
|
47
53
|
|
|
48
|
-
export function canUseEventBridge(currentHost =
|
|
54
|
+
export function canUseEventBridge(currentHost = globalObject.location?.hostname): boolean {
|
|
49
55
|
const bridge = getEventBridge()
|
|
50
|
-
return (
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
+
return bridge?.getAllowedWebViewHosts().some((entry) => matchesHostEntry(currentHost, entry)) ?? false
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function matchesHostEntry(host: string, entry: string): boolean {
|
|
60
|
+
if (!entry.includes('*')) {
|
|
61
|
+
return host === entry || host.endsWith(`.${entry}`)
|
|
62
|
+
}
|
|
63
|
+
const parts = entry.split('*')
|
|
64
|
+
if (parts.length !== 2) {
|
|
65
|
+
display.error(`Invalid WebView host pattern "${entry}": only one wildcard (*) is supported.`)
|
|
66
|
+
return false
|
|
67
|
+
}
|
|
68
|
+
const [prefix, suffix] = parts
|
|
69
|
+
return host.length > prefix.length + suffix.length && host.startsWith(prefix) && host.endsWith(suffix)
|
|
56
70
|
}
|
|
57
71
|
|
|
58
72
|
function getEventBridgeGlobal() {
|
|
59
|
-
return
|
|
73
|
+
return (globalObject as BrowserWindowWithEventBridge).KubeSenseEventBridge
|
|
60
74
|
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
import { ONE_SECOND } from '@kubesense/kubesense-js-core/time'
|
|
2
|
+
import type { Duration } from '@kubesense/kubesense-js-core/time'
|
|
3
|
+
import { isWorkerEnvironment } from '@kubesense/kubesense-js-core/util'
|
|
1
4
|
import type { PageMayExitEvent, PageExitReason } from '../browser/pageMayExitObservable'
|
|
2
|
-
import { isWorkerEnvironment } from '../tools/globalObject'
|
|
3
5
|
import { Observable } from '../tools/observable'
|
|
4
6
|
import type { TimeoutId } from '../tools/timer'
|
|
5
7
|
import { clearTimeout, setTimeout } from '../tools/timer'
|
|
6
|
-
import { ONE_SECOND } from '../tools/utils/timeUtils'
|
|
7
|
-
import type { Duration } from '../tools/utils/timeUtils'
|
|
8
8
|
import { RECOMMENDED_REQUEST_BYTES_LIMIT } from './httpRequest'
|
|
9
9
|
|
|
10
|
-
export type
|
|
10
|
+
export type UrgentFlushReason = PageExitReason
|
|
11
|
+
export type FlushReason = UrgentFlushReason | 'duration_limit' | 'bytes_limit' | 'messages_limit' | 'session_expire'
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* flush automatically, aim to be lower than ALB connection timeout
|
|
@@ -30,7 +31,6 @@ export interface FlushEvent {
|
|
|
30
31
|
|
|
31
32
|
interface FlushControllerOptions {
|
|
32
33
|
pageMayExitObservable: Observable<PageMayExitEvent>
|
|
33
|
-
sessionExpireObservable: Observable<void>
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
/**
|
|
@@ -38,13 +38,21 @@ interface FlushControllerOptions {
|
|
|
38
38
|
* to happen. The implementation is designed to support both synchronous and asynchronous usages,
|
|
39
39
|
* but relies on invariants described in each method documentation to keep a coherent state.
|
|
40
40
|
*/
|
|
41
|
-
export function createFlushController({ pageMayExitObservable
|
|
42
|
-
|
|
43
|
-
const
|
|
41
|
+
export function createFlushController({ pageMayExitObservable }: FlushControllerOptions) {
|
|
42
|
+
let forcedFlushReason: FlushReason | undefined
|
|
43
|
+
const prepareUrgentFlushObservable = new Observable<UrgentFlushReason>()
|
|
44
|
+
const pageMayExitSubscription = pageMayExitObservable.subscribe((event) => {
|
|
45
|
+
forcedFlushReason = event.reason
|
|
46
|
+
try {
|
|
47
|
+
prepareUrgentFlushObservable.notify(event.reason)
|
|
48
|
+
} finally {
|
|
49
|
+
forcedFlushReason = undefined
|
|
50
|
+
}
|
|
51
|
+
flush(event.reason)
|
|
52
|
+
})
|
|
44
53
|
|
|
45
54
|
const flushObservable = new Observable<FlushEvent>(() => () => {
|
|
46
55
|
pageMayExitSubscription.unsubscribe()
|
|
47
|
-
sessionExpireSubscription.unsubscribe()
|
|
48
56
|
})
|
|
49
57
|
|
|
50
58
|
let currentBytesCount = 0
|
|
@@ -85,6 +93,8 @@ export function createFlushController({ pageMayExitObservable, sessionExpireObse
|
|
|
85
93
|
|
|
86
94
|
return {
|
|
87
95
|
flushObservable,
|
|
96
|
+
prepareUrgentFlushObservable,
|
|
97
|
+
forceFlush: flush,
|
|
88
98
|
get messagesCount() {
|
|
89
99
|
return currentMessagesCount
|
|
90
100
|
},
|
|
@@ -100,7 +110,7 @@ export function createFlushController({ pageMayExitObservable, sessionExpireObse
|
|
|
100
110
|
*/
|
|
101
111
|
notifyBeforeAddMessage(estimatedMessageBytesCount: number) {
|
|
102
112
|
if (currentBytesCount + estimatedMessageBytesCount >= RECOMMENDED_REQUEST_BYTES_LIMIT) {
|
|
103
|
-
flush('bytes_limit')
|
|
113
|
+
flush(forcedFlushReason ?? 'bytes_limit')
|
|
104
114
|
}
|
|
105
115
|
// Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no
|
|
106
116
|
// message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want
|
|
@@ -123,27 +133,9 @@ export function createFlushController({ pageMayExitObservable, sessionExpireObse
|
|
|
123
133
|
currentBytesCount += messageBytesCountDiff
|
|
124
134
|
|
|
125
135
|
if (currentMessagesCount >= MESSAGES_LIMIT) {
|
|
126
|
-
flush('messages_limit')
|
|
136
|
+
flush(forcedFlushReason ?? 'messages_limit')
|
|
127
137
|
} else if (currentBytesCount >= RECOMMENDED_REQUEST_BYTES_LIMIT) {
|
|
128
|
-
flush('bytes_limit')
|
|
129
|
-
}
|
|
130
|
-
},
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Notifies that a message was removed from a pool of pending messages waiting to be flushed.
|
|
134
|
-
*
|
|
135
|
-
* This function needs to be called synchronously, right after removing the message, so no flush
|
|
136
|
-
* event can happen after removing the message and before `notifyAfterRemoveMessage`.
|
|
137
|
-
*
|
|
138
|
-
* @param messageBytesCount - the message bytes count that was added to the pool. Should
|
|
139
|
-
* correspond to the sum of bytes counts passed to `notifyBeforeAddMessage` and
|
|
140
|
-
* `notifyAfterAddMessage`.
|
|
141
|
-
*/
|
|
142
|
-
notifyAfterRemoveMessage(messageBytesCount: number) {
|
|
143
|
-
currentBytesCount -= messageBytesCount
|
|
144
|
-
currentMessagesCount -= 1
|
|
145
|
-
if (currentMessagesCount === 0) {
|
|
146
|
-
cancelDurationLimitTimeout()
|
|
138
|
+
flush(forcedFlushReason ?? 'bytes_limit')
|
|
147
139
|
}
|
|
148
140
|
},
|
|
149
141
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { EndpointBuilder } from '
|
|
1
|
+
import type { EndpointBuilder, TransportRetryInfo } from '@kubesense/kubesense-js-core/transport'
|
|
2
|
+
import { monitor, monitorError } from '@kubesense/kubesense-js-core/monitor'
|
|
2
3
|
import type { Context } from '../tools/serialisation/context'
|
|
3
|
-
import {
|
|
4
|
-
import type { RawError } from '../domain/error/error.types'
|
|
5
|
-
import { isExperimentalFeatureEnabled, ExperimentalFeature } from '../tools/experimentalFeatures'
|
|
4
|
+
import { fetch } from '../browser/fetch'
|
|
6
5
|
import { Observable } from '../tools/observable'
|
|
7
6
|
import { ONE_KIBI_BYTE } from '../tools/utils/byteUtils'
|
|
8
7
|
import { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'
|
|
@@ -58,26 +57,30 @@ export type HttpRequestEvent<Body extends Payload = Payload> =
|
|
|
58
57
|
bandwidth: BandwidthStats
|
|
59
58
|
payload: Body
|
|
60
59
|
}
|
|
60
|
+
| {
|
|
61
|
+
// A request to send the given payload failed and will not be retried; the payload is gone.
|
|
62
|
+
// `status` is the last response's, 0 for a network error.
|
|
63
|
+
type: 'dropped'
|
|
64
|
+
bandwidth: BandwidthStats
|
|
65
|
+
payload: Body
|
|
66
|
+
status: number
|
|
67
|
+
}
|
|
61
68
|
|
|
62
69
|
export interface Payload {
|
|
63
70
|
data: string | FormData | Blob
|
|
64
71
|
bytesCount: number
|
|
65
|
-
retry?:
|
|
72
|
+
retry?: TransportRetryInfo
|
|
66
73
|
encoding?: 'deflate'
|
|
67
74
|
}
|
|
68
75
|
|
|
69
|
-
export interface RetryInfo {
|
|
70
|
-
count: number
|
|
71
|
-
lastFailureStatus: number
|
|
72
|
-
}
|
|
73
|
-
|
|
74
76
|
export function createHttpRequest<Body extends Payload = Payload>(
|
|
75
77
|
endpointBuilders: EndpointBuilder[],
|
|
76
|
-
reportError: (
|
|
77
|
-
bytesLimit: number = RECOMMENDED_REQUEST_BYTES_LIMIT
|
|
78
|
+
reportError: (message: string) => void,
|
|
79
|
+
bytesLimit: number = RECOMMENDED_REQUEST_BYTES_LIMIT,
|
|
80
|
+
networkErrorRetries = 0
|
|
78
81
|
): HttpRequest<Body> {
|
|
79
82
|
const observable = new Observable<HttpRequestEvent<Body>>()
|
|
80
|
-
const retryState = newRetryState<Body>()
|
|
83
|
+
const retryState = newRetryState<Body>(networkErrorRetries)
|
|
81
84
|
|
|
82
85
|
return {
|
|
83
86
|
observable,
|
|
@@ -87,11 +90,7 @@ export function createHttpRequest<Body extends Payload = Payload>(
|
|
|
87
90
|
payload,
|
|
88
91
|
retryState,
|
|
89
92
|
(payload, onResponse) => {
|
|
90
|
-
|
|
91
|
-
fetchStrategy(endpointBuilder, payload, onResponse)
|
|
92
|
-
} else {
|
|
93
|
-
fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse)
|
|
94
|
-
}
|
|
93
|
+
fetchStrategy(endpointBuilder, payload, onResponse)
|
|
95
94
|
},
|
|
96
95
|
endpointBuilder.trackType,
|
|
97
96
|
reportError,
|
|
@@ -124,7 +123,7 @@ export function createHttpRequest<Body extends Payload = Payload>(
|
|
|
124
123
|
}
|
|
125
124
|
|
|
126
125
|
function sendBeaconStrategy(endpointBuilder: EndpointBuilder, bytesLimit: number, payload: Payload) {
|
|
127
|
-
const canUseBeacon =
|
|
126
|
+
const canUseBeacon = payload.bytesCount < bytesLimit
|
|
128
127
|
if (canUseBeacon) {
|
|
129
128
|
try {
|
|
130
129
|
const beaconUrl = endpointBuilder.build('beacon', payload)
|
|
@@ -150,25 +149,6 @@ function reportBeaconError(e: unknown) {
|
|
|
150
149
|
}
|
|
151
150
|
}
|
|
152
151
|
|
|
153
|
-
export function fetchKeepAliveStrategy(
|
|
154
|
-
endpointBuilder: EndpointBuilder,
|
|
155
|
-
bytesLimit: number,
|
|
156
|
-
payload: Payload,
|
|
157
|
-
onResponse?: (r: HttpResponse) => void
|
|
158
|
-
) {
|
|
159
|
-
const canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit
|
|
160
|
-
|
|
161
|
-
if (canUseKeepAlive) {
|
|
162
|
-
const fetchUrl = endpointBuilder.build('fetch-keepalive', payload)
|
|
163
|
-
|
|
164
|
-
fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' })
|
|
165
|
-
.then(monitor((response: Response) => onResponse?.({ status: response.status, type: response.type })))
|
|
166
|
-
.catch(monitor(() => fetchStrategy(endpointBuilder, payload, onResponse)))
|
|
167
|
-
} else {
|
|
168
|
-
fetchStrategy(endpointBuilder, payload, onResponse)
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
152
|
export function fetchStrategy(
|
|
173
153
|
endpointBuilder: EndpointBuilder,
|
|
174
154
|
payload: Payload,
|
|
@@ -180,12 +160,3 @@ export function fetchStrategy(
|
|
|
180
160
|
.then(monitor((response: Response) => onResponse?.({ status: response.status, type: response.type })))
|
|
181
161
|
.catch(monitor(() => onResponse?.({ status: 0 })))
|
|
182
162
|
}
|
|
183
|
-
|
|
184
|
-
function isKeepAliveSupported() {
|
|
185
|
-
// Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors
|
|
186
|
-
try {
|
|
187
|
-
return window.Request && 'keepalive' in new Request('http://a')
|
|
188
|
-
} catch {
|
|
189
|
-
return false
|
|
190
|
-
}
|
|
191
|
-
}
|
package/src/transport/index.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export type { BandwidthStats, HttpRequest, HttpRequestEvent, Payload
|
|
1
|
+
export type { BandwidthStats, HttpRequest, HttpRequestEvent, Payload } from './httpRequest'
|
|
2
2
|
export { createHttpRequest } from './httpRequest'
|
|
3
3
|
export type { BrowserWindowWithEventBridge, KubeSenseEventBridge } from './eventBridge'
|
|
4
4
|
export { canUseEventBridge, bridgeSupports, getEventBridge, BridgeCapability } from './eventBridge'
|
|
5
|
+
export type { Batch } from './batch'
|
|
5
6
|
export { createBatch } from './batch'
|
|
6
|
-
export type { FlushController, FlushEvent, FlushReason } from './flushController'
|
|
7
|
+
export type { FlushController, FlushEvent, FlushReason, UrgentFlushReason } from './flushController'
|
|
7
8
|
export { createFlushController, FLUSH_DURATION_LIMIT } from './flushController'
|