@openobserve/browser-core 0.2.11-rc1 → 0.2.12-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -5
- package/src/boot/displayAlreadyInitializedError.ts +8 -0
- package/src/boot/init.ts +29 -15
- package/src/browser/addEventListener.ts +13 -10
- package/src/browser/{types.ts → browser.types.ts} +42 -0
- package/src/browser/cookie.ts +49 -14
- package/src/browser/fetchObservable.ts +80 -21
- package/src/browser/{pageExitObservable.ts → pageMayExitObservable.ts} +11 -22
- package/src/browser/runOnReadyState.ts +14 -4
- package/src/browser/xhrObservable.ts +17 -4
- package/src/domain/allowedTrackingOrigins.ts +30 -0
- package/src/domain/bufferedData.ts +32 -0
- package/src/domain/configuration/configuration.ts +352 -83
- package/src/domain/configuration/endpointBuilder.ts +29 -32
- package/src/domain/configuration/index.ts +6 -5
- package/src/domain/configuration/transportConfiguration.ts +42 -35
- package/src/domain/connectivity/connectivity.ts +5 -1
- package/src/domain/console/consoleObservable.ts +57 -21
- package/src/domain/context/contextConstants.ts +22 -0
- package/src/domain/context/contextManager.ts +48 -11
- package/src/domain/context/contextUtils.ts +14 -0
- package/src/domain/context/defineContextMethod.ts +31 -0
- package/src/domain/context/storeContextManager.ts +7 -3
- package/src/domain/contexts/accountContext.ts +47 -0
- package/src/domain/contexts/globalContext.ts +30 -0
- package/src/domain/contexts/rumInternalContext.type.ts +15 -0
- package/src/domain/contexts/userContext.ts +64 -0
- package/src/domain/deflate/{types.ts → deflate.types.ts} +6 -4
- package/src/domain/deflate/index.ts +1 -1
- package/src/domain/error/error.ts +28 -84
- package/src/domain/error/error.types.ts +10 -2
- package/src/domain/error/trackRuntimeError.ts +29 -32
- package/src/domain/eventRateLimiter/createEventRateLimiter.ts +5 -2
- package/src/domain/extension/extensionUtils.ts +28 -0
- package/src/domain/intakeSites.ts +18 -0
- package/src/domain/report/reportObservable.ts +35 -30
- package/src/domain/resourceUtils.ts +20 -16
- package/src/domain/session/README.md +193 -0
- package/src/domain/session/oldCookiesMigration.ts +2 -2
- package/src/domain/session/sessionConstants.ts +16 -1
- package/src/domain/session/sessionManager.ts +179 -15
- package/src/domain/session/sessionState.ts +49 -17
- package/src/domain/session/sessionStateValidation.ts +9 -0
- package/src/domain/session/sessionStore.ts +118 -55
- package/src/domain/session/sessionStoreOperations.ts +47 -20
- package/src/domain/session/storeStrategies/sessionInCookie.ts +105 -26
- package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +10 -8
- package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +5 -2
- package/src/domain/synthetics/syntheticsWorkerValues.ts +13 -2
- package/src/domain/tags.ts +76 -0
- package/src/domain/telemetry/index.ts +12 -4
- package/src/domain/telemetry/rawTelemetryEvent.types.ts +6 -3
- package/src/domain/telemetry/telemetry.ts +235 -106
- package/src/domain/telemetry/telemetryEvent.types.ts +514 -5
- package/src/domain/trackingConsent.ts +34 -0
- package/src/index.ts +90 -59
- package/src/tools/abstractHooks.ts +72 -0
- package/src/tools/abstractLifeCycle.ts +1 -0
- package/src/tools/boundedBuffer.ts +36 -8
- package/src/tools/display.ts +4 -0
- package/src/tools/encoder.ts +3 -2
- package/src/tools/experimentalFeatures.ts +18 -7
- package/src/tools/getZoneJsOriginalValue.ts +1 -1
- package/src/tools/{getGlobalObject.ts → globalObject.ts} +20 -0
- package/src/tools/instrumentMethod.ts +58 -41
- package/src/tools/matchOption.ts +1 -2
- package/src/tools/monitor.ts +11 -7
- package/src/tools/observable.ts +78 -12
- package/src/tools/queueMicrotask.ts +13 -0
- package/src/tools/readBytesFromStream.ts +24 -64
- package/src/tools/requestIdleCallback.ts +40 -0
- package/src/tools/sendToExtension.ts +3 -1
- package/src/tools/serialisation/context.ts +4 -1
- package/src/tools/serialisation/sanitize.ts +32 -14
- package/src/{domain/error → tools/stackTrace}/computeStackTrace.ts +72 -8
- package/src/tools/stackTrace/handlingStack.ts +48 -0
- package/src/tools/taskQueue.ts +63 -0
- package/src/tools/timer.ts +1 -1
- package/src/tools/utils/arrayUtils.ts +11 -3
- package/src/tools/utils/browserDetection.ts +0 -9
- package/src/tools/utils/byteUtils.ts +13 -2
- package/src/tools/utils/functionUtils.ts +0 -2
- package/src/tools/utils/numberUtils.ts +2 -1
- package/src/tools/utils/objectUtils.ts +1 -3
- package/src/tools/utils/polyfills.ts +6 -107
- package/src/tools/utils/responseUtils.ts +1 -1
- package/src/tools/utils/stringUtils.ts +34 -2
- package/src/tools/utils/timeUtils.ts +18 -13
- package/src/tools/utils/timezone.ts +9 -0
- package/src/tools/utils/urlPolyfill.ts +29 -59
- package/src/tools/valueHistory.ts +66 -35
- package/src/transport/batch.ts +77 -80
- package/src/transport/eventBridge.ts +24 -5
- package/src/transport/flushController.ts +27 -21
- package/src/transport/httpRequest.ts +92 -71
- package/src/transport/index.ts +7 -4
- package/src/transport/sendWithRetryStrategy.ts +55 -36
- package/cjs/boot/init.d.ts +0 -5
- package/cjs/boot/init.js +0 -36
- package/cjs/boot/init.js.map +0 -1
- package/cjs/browser/addEventListener.d.ts +0 -84
- package/cjs/browser/addEventListener.js +0 -94
- package/cjs/browser/addEventListener.js.map +0 -1
- package/cjs/browser/cookie.d.ts +0 -17
- package/cjs/browser/cookie.js +0 -86
- package/cjs/browser/cookie.js.map +0 -1
- package/cjs/browser/fetchObservable.d.ts +0 -23
- package/cjs/browser/fetchObservable.js +0 -69
- package/cjs/browser/fetchObservable.js.map +0 -1
- package/cjs/browser/pageExitObservable.d.ts +0 -14
- package/cjs/browser/pageExitObservable.js +0 -57
- package/cjs/browser/pageExitObservable.js.map +0 -1
- package/cjs/browser/runOnReadyState.d.ts +0 -2
- package/cjs/browser/runOnReadyState.js +0 -15
- package/cjs/browser/runOnReadyState.js.map +0 -1
- package/cjs/browser/types.d.ts +0 -19
- package/cjs/browser/types.js +0 -6
- package/cjs/browser/types.js.map +0 -1
- package/cjs/browser/xhrObservable.d.ts +0 -21
- package/cjs/browser/xhrObservable.js +0 -85
- package/cjs/browser/xhrObservable.js.map +0 -1
- package/cjs/domain/configuration/configuration.d.ts +0 -72
- package/cjs/domain/configuration/configuration.js +0 -94
- package/cjs/domain/configuration/configuration.js.map +0 -1
- package/cjs/domain/configuration/endpointBuilder.d.ts +0 -10
- package/cjs/domain/configuration/endpointBuilder.js +0 -84
- package/cjs/domain/configuration/endpointBuilder.js.map +0 -1
- package/cjs/domain/configuration/index.d.ts +0 -4
- package/cjs/domain/configuration/index.js +0 -27
- package/cjs/domain/configuration/index.js.map +0 -1
- package/cjs/domain/configuration/intakeSites.d.ts +0 -5
- package/cjs/domain/configuration/intakeSites.js +0 -9
- package/cjs/domain/configuration/intakeSites.js.map +0 -1
- package/cjs/domain/configuration/tags.d.ts +0 -4
- package/cjs/domain/configuration/tags.js +0 -39
- package/cjs/domain/configuration/tags.js.map +0 -1
- package/cjs/domain/configuration/transportConfiguration.d.ts +0 -16
- package/cjs/domain/configuration/transportConfiguration.js +0 -42
- package/cjs/domain/configuration/transportConfiguration.js.map +0 -1
- package/cjs/domain/connectivity/connectivity.d.ts +0 -13
- package/cjs/domain/connectivity/connectivity.js +0 -14
- package/cjs/domain/connectivity/connectivity.js.map +0 -1
- package/cjs/domain/connectivity/index.d.ts +0 -1
- package/cjs/domain/connectivity/index.js +0 -18
- package/cjs/domain/connectivity/index.js.map +0 -1
- package/cjs/domain/console/consoleObservable.d.ts +0 -11
- package/cjs/domain/console/consoleObservable.js +0 -72
- package/cjs/domain/console/consoleObservable.js.map +0 -1
- package/cjs/domain/context/contextConstants.d.ts +0 -5
- package/cjs/domain/context/contextConstants.js +0 -3
- package/cjs/domain/context/contextConstants.js.map +0 -1
- package/cjs/domain/context/contextManager.d.ts +0 -12
- package/cjs/domain/context/contextManager.js +0 -43
- package/cjs/domain/context/contextManager.js.map +0 -1
- package/cjs/domain/context/customerDataTracker.d.ts +0 -45
- package/cjs/domain/context/customerDataTracker.js +0 -107
- package/cjs/domain/context/customerDataTracker.js.map +0 -1
- package/cjs/domain/context/storeContextManager.d.ts +0 -6
- package/cjs/domain/context/storeContextManager.js +0 -38
- package/cjs/domain/context/storeContextManager.js.map +0 -1
- package/cjs/domain/deflate/types.d.ts +0 -0
- package/cjs/domain/deflate/types.js +0 -3
- package/cjs/domain/deflate/types.js.map +0 -1
- package/cjs/domain/error/computeStackTrace.d.ts +0 -33
- package/cjs/domain/error/computeStackTrace.js +0 -142
- package/cjs/domain/error/computeStackTrace.js.map +0 -1
- package/cjs/domain/error/error.d.ts +0 -28
- package/cjs/domain/error/error.js +0 -131
- package/cjs/domain/error/error.js.map +0 -1
- package/cjs/domain/error/error.types.d.ts +0 -40
- package/cjs/domain/error/error.types.js +0 -13
- package/cjs/domain/error/error.types.js.map +0 -1
- package/cjs/domain/error/trackRuntimeError.d.ts +0 -13
- package/cjs/domain/error/trackRuntimeError.js +0 -54
- package/cjs/domain/error/trackRuntimeError.js.map +0 -1
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.d.ts +0 -5
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +0 -40
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +0 -1
- package/cjs/domain/report/browser.types.d.ts +0 -34
- package/cjs/domain/report/browser.types.js +0 -3
- package/cjs/domain/report/browser.types.js.map +0 -1
- package/cjs/domain/report/reportObservable.d.ts +0 -17
- package/cjs/domain/report/reportObservable.js +0 -94
- package/cjs/domain/report/reportObservable.js.map +0 -1
- package/cjs/domain/resourceUtils.d.ts +0 -16
- package/cjs/domain/resourceUtils.js +0 -3
- package/cjs/domain/resourceUtils.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/sessionConstants.d.ts +0 -2
- package/cjs/domain/session/sessionConstants.js +0 -7
- package/cjs/domain/session/sessionConstants.js.map +0 -1
- package/cjs/domain/session/sessionManager.d.ts +0 -20
- package/cjs/domain/session/sessionManager.js +0 -65
- package/cjs/domain/session/sessionManager.js.map +0 -1
- package/cjs/domain/session/sessionState.d.ts +0 -11
- package/cjs/domain/session/sessionState.js +0 -45
- package/cjs/domain/session/sessionState.js.map +0 -1
- package/cjs/domain/session/sessionStore.d.ts +0 -34
- package/cjs/domain/session/sessionStore.js +0 -144
- package/cjs/domain/session/sessionStore.js.map +0 -1
- package/cjs/domain/session/sessionStoreOperations.d.ts +0 -10
- package/cjs/domain/session/sessionStoreOperations.js +0 -96
- package/cjs/domain/session/sessionStoreOperations.js.map +0 -1
- package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +0 -6
- package/cjs/domain/session/storeStrategies/sessionInCookie.js +0 -59
- package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +0 -1
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +0 -3
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +0 -41
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -15
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +0 -5
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +0 -1
- package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +0 -11
- package/cjs/domain/synthetics/syntheticsWorkerValues.js +0 -22
- package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +0 -1
- package/cjs/domain/telemetry/index.d.ts +0 -3
- package/cjs/domain/telemetry/index.js +0 -28
- package/cjs/domain/telemetry/index.js.map +0 -1
- package/cjs/domain/telemetry/rawTelemetryEvent.types.d.ts +0 -15
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js +0 -8
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +0 -1
- package/cjs/domain/telemetry/telemetry.d.ts +0 -116
- package/cjs/domain/telemetry/telemetry.js +0 -157
- package/cjs/domain/telemetry/telemetry.js.map +0 -1
- package/cjs/domain/telemetry/telemetryEvent.types.d.ts +0 -391
- package/cjs/domain/telemetry/telemetryEvent.types.js +0 -7
- package/cjs/domain/telemetry/telemetryEvent.types.js.map +0 -1
- package/cjs/domain/user/index.d.ts +0 -2
- package/cjs/domain/user/index.js +0 -19
- package/cjs/domain/user/index.js.map +0 -1
- package/cjs/domain/user/user.d.ts +0 -12
- package/cjs/domain/user/user.js +0 -35
- package/cjs/domain/user/user.js.map +0 -1
- package/cjs/domain/user/user.types.d.ts +0 -6
- package/cjs/domain/user/user.types.js +0 -3
- package/cjs/domain/user/user.types.js.map +0 -1
- package/cjs/tools/abstractLifeCycle.d.ts +0 -23
- package/cjs/tools/abstractLifeCycle.js +0 -29
- package/cjs/tools/abstractLifeCycle.js.map +0 -1
- package/cjs/tools/boundedBuffer.d.ts +0 -5
- package/cjs/tools/boundedBuffer.js +0 -22
- package/cjs/tools/boundedBuffer.js.map +0 -1
- package/cjs/tools/catchUserErrors.d.ts +0 -1
- package/cjs/tools/catchUserErrors.js +0 -20
- package/cjs/tools/catchUserErrors.js.map +0 -1
- package/cjs/tools/display.d.ts +0 -35
- package/cjs/tools/display.js +0 -41
- package/cjs/tools/display.js.map +0 -1
- package/cjs/tools/encoder.d.ts +0 -53
- package/cjs/tools/encoder.js +0 -41
- package/cjs/tools/encoder.js.map +0 -1
- package/cjs/tools/experimentalFeatures.d.ts +0 -22
- package/cjs/tools/experimentalFeatures.js +0 -45
- package/cjs/tools/experimentalFeatures.js.map +0 -1
- package/cjs/tools/getGlobalObject.d.ts +0 -4
- package/cjs/tools/getGlobalObject.js +0 -37
- package/cjs/tools/getGlobalObject.js.map +0 -1
- package/cjs/tools/getZoneJsOriginalValue.d.ts +0 -19
- package/cjs/tools/getZoneJsOriginalValue.js +0 -30
- package/cjs/tools/getZoneJsOriginalValue.js.map +0 -1
- package/cjs/tools/instrumentMethod.d.ts +0 -59
- package/cjs/tools/instrumentMethod.js +0 -106
- package/cjs/tools/instrumentMethod.js.map +0 -1
- package/cjs/tools/matchOption.d.ts +0 -8
- package/cjs/tools/matchOption.js +0 -38
- package/cjs/tools/matchOption.js.map +0 -1
- package/cjs/tools/mergeInto.d.ts +0 -25
- package/cjs/tools/mergeInto.js +0 -105
- package/cjs/tools/mergeInto.js.map +0 -1
- package/cjs/tools/monitor.d.ts +0 -8
- package/cjs/tools/monitor.js +0 -76
- package/cjs/tools/monitor.js.map +0 -1
- package/cjs/tools/observable.d.ts +0 -12
- package/cjs/tools/observable.js +0 -43
- package/cjs/tools/observable.js.map +0 -1
- package/cjs/tools/readBytesFromStream.d.ts +0 -11
- package/cjs/tools/readBytesFromStream.js +0 -64
- package/cjs/tools/readBytesFromStream.js.map +0 -1
- package/cjs/tools/sendToExtension.d.ts +0 -3
- package/cjs/tools/sendToExtension.js +0 -11
- package/cjs/tools/sendToExtension.js.map +0 -1
- package/cjs/tools/serialisation/context.d.ts +0 -6
- package/cjs/tools/serialisation/context.js +0 -3
- package/cjs/tools/serialisation/context.js.map +0 -1
- package/cjs/tools/serialisation/jsonStringify.d.ts +0 -13
- package/cjs/tools/serialisation/jsonStringify.js +0 -49
- package/cjs/tools/serialisation/jsonStringify.js.map +0 -1
- package/cjs/tools/serialisation/sanitize.d.ts +0 -18
- package/cjs/tools/serialisation/sanitize.js +0 -185
- package/cjs/tools/serialisation/sanitize.js.map +0 -1
- package/cjs/tools/timer.d.ts +0 -5
- package/cjs/tools/timer.js +0 -23
- package/cjs/tools/timer.js.map +0 -1
- package/cjs/tools/utils/arrayUtils.d.ts +0 -1
- package/cjs/tools/utils/arrayUtils.js +0 -11
- package/cjs/tools/utils/arrayUtils.js.map +0 -1
- package/cjs/tools/utils/browserDetection.d.ts +0 -10
- package/cjs/tools/utils/browserDetection.js +0 -42
- package/cjs/tools/utils/browserDetection.js.map +0 -1
- package/cjs/tools/utils/byteUtils.d.ts +0 -4
- package/cjs/tools/utils/byteUtils.js +0 -31
- package/cjs/tools/utils/byteUtils.js.map +0 -1
- package/cjs/tools/utils/functionUtils.d.ts +0 -9
- package/cjs/tools/utils/functionUtils.js +0 -48
- package/cjs/tools/utils/functionUtils.js.map +0 -1
- package/cjs/tools/utils/numberUtils.d.ts +0 -8
- package/cjs/tools/utils/numberUtils.js +0 -24
- package/cjs/tools/utils/numberUtils.js.map +0 -1
- package/cjs/tools/utils/objectUtils.d.ts +0 -10
- package/cjs/tools/utils/objectUtils.js +0 -26
- package/cjs/tools/utils/objectUtils.js.map +0 -1
- package/cjs/tools/utils/polyfills.d.ts +0 -24
- package/cjs/tools/utils/polyfills.js +0 -110
- package/cjs/tools/utils/polyfills.js.map +0 -1
- package/cjs/tools/utils/responseUtils.d.ts +0 -2
- package/cjs/tools/utils/responseUtils.js +0 -18
- package/cjs/tools/utils/responseUtils.js.map +0 -1
- package/cjs/tools/utils/stringUtils.d.ts +0 -8
- package/cjs/tools/utils/stringUtils.js +0 -59
- package/cjs/tools/utils/stringUtils.js.map +0 -1
- package/cjs/tools/utils/timeUtils.d.ts +0 -57
- package/cjs/tools/utils/timeUtils.js +0 -99
- 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 -17
- package/cjs/tools/utils/typeUtils.js.map +0 -1
- package/cjs/tools/utils/urlPolyfill.d.ts +0 -14
- package/cjs/tools/utils/urlPolyfill.js +0 -92
- package/cjs/tools/utils/urlPolyfill.js.map +0 -1
- package/cjs/tools/valueHistory.d.ts +0 -50
- package/cjs/tools/valueHistory.js +0 -106
- package/cjs/tools/valueHistory.js.map +0 -1
- package/cjs/transport/batch.d.ts +0 -21
- package/cjs/transport/batch.js +0 -123
- package/cjs/transport/batch.js.map +0 -1
- package/cjs/transport/eventBridge.d.ts +0 -12
- package/cjs/transport/eventBridge.js +0 -34
- package/cjs/transport/eventBridge.js.map +0 -1
- package/cjs/transport/flushController.d.ts +0 -58
- package/cjs/transport/flushController.js +0 -112
- package/cjs/transport/flushController.js.map +0 -1
- package/cjs/transport/httpRequest.d.ts +0 -38
- package/cjs/transport/httpRequest.js +0 -95
- package/cjs/transport/httpRequest.js.map +0 -1
- package/cjs/transport/index.d.ts +0 -4
- package/cjs/transport/index.js +0 -13
- package/cjs/transport/index.js.map +0 -1
- package/cjs/transport/sendWithRetryStrategy.d.ts +0 -39
- package/cjs/transport/sendWithRetryStrategy.js +0 -151
- package/cjs/transport/sendWithRetryStrategy.js.map +0 -1
- package/cjs/transport/startBatchWithReplica.d.ts +0 -20
- package/cjs/transport/startBatchWithReplica.js +0 -42
- package/cjs/transport/startBatchWithReplica.js.map +0 -1
- package/esm/boot/init.d.ts +0 -5
- package/esm/boot/init.js +0 -31
- package/esm/boot/init.js.map +0 -1
- package/esm/browser/addEventListener.d.ts +0 -84
- package/esm/browser/addEventListener.js +0 -89
- package/esm/browser/addEventListener.js.map +0 -1
- package/esm/browser/cookie.d.ts +0 -17
- package/esm/browser/cookie.js +0 -76
- package/esm/browser/cookie.js.map +0 -1
- package/esm/browser/fetchObservable.d.ts +0 -23
- package/esm/browser/fetchObservable.js +0 -65
- package/esm/browser/fetchObservable.js.map +0 -1
- package/esm/browser/pageExitObservable.d.ts +0 -14
- package/esm/browser/pageExitObservable.js +0 -52
- package/esm/browser/pageExitObservable.js.map +0 -1
- package/esm/browser/runOnReadyState.d.ts +0 -2
- package/esm/browser/runOnReadyState.js +0 -11
- package/esm/browser/runOnReadyState.js.map +0 -1
- package/esm/browser/types.d.ts +0 -19
- package/esm/browser/types.js +0 -5
- package/esm/browser/types.js.map +0 -1
- package/esm/browser/xhrObservable.d.ts +0 -21
- package/esm/browser/xhrObservable.js +0 -81
- package/esm/browser/xhrObservable.js.map +0 -1
- package/esm/domain/configuration/configuration.d.ts +0 -72
- package/esm/domain/configuration/configuration.js +0 -89
- package/esm/domain/configuration/configuration.js.map +0 -1
- package/esm/domain/configuration/endpointBuilder.d.ts +0 -10
- package/esm/domain/configuration/endpointBuilder.js +0 -80
- package/esm/domain/configuration/endpointBuilder.js.map +0 -1
- package/esm/domain/configuration/index.d.ts +0 -4
- package/esm/domain/configuration/index.js +0 -5
- package/esm/domain/configuration/index.js.map +0 -1
- package/esm/domain/configuration/intakeSites.d.ts +0 -5
- package/esm/domain/configuration/intakeSites.js +0 -6
- package/esm/domain/configuration/intakeSites.js.map +0 -1
- package/esm/domain/configuration/tags.d.ts +0 -4
- package/esm/domain/configuration/tags.js +0 -34
- package/esm/domain/configuration/tags.js.map +0 -1
- package/esm/domain/configuration/transportConfiguration.d.ts +0 -16
- package/esm/domain/configuration/transportConfiguration.js +0 -38
- package/esm/domain/configuration/transportConfiguration.js.map +0 -1
- package/esm/domain/connectivity/connectivity.d.ts +0 -13
- package/esm/domain/connectivity/connectivity.js +0 -10
- 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 -11
- package/esm/domain/console/consoleObservable.js +0 -67
- package/esm/domain/console/consoleObservable.js.map +0 -1
- package/esm/domain/context/contextConstants.d.ts +0 -5
- package/esm/domain/context/contextConstants.js +0 -2
- package/esm/domain/context/contextConstants.js.map +0 -1
- package/esm/domain/context/contextManager.d.ts +0 -12
- package/esm/domain/context/contextManager.js +0 -39
- package/esm/domain/context/contextManager.js.map +0 -1
- package/esm/domain/context/customerDataTracker.d.ts +0 -45
- package/esm/domain/context/customerDataTracker.js +0 -102
- package/esm/domain/context/customerDataTracker.js.map +0 -1
- package/esm/domain/context/storeContextManager.d.ts +0 -6
- package/esm/domain/context/storeContextManager.js +0 -32
- package/esm/domain/context/storeContextManager.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/deflate/types.d.ts +0 -38
- package/esm/domain/deflate/types.js +0 -2
- package/esm/domain/deflate/types.js.map +0 -1
- package/esm/domain/error/computeStackTrace.d.ts +0 -33
- package/esm/domain/error/computeStackTrace.js +0 -137
- package/esm/domain/error/computeStackTrace.js.map +0 -1
- package/esm/domain/error/error.d.ts +0 -28
- package/esm/domain/error/error.js +0 -121
- package/esm/domain/error/error.js.map +0 -1
- package/esm/domain/error/error.types.d.ts +0 -40
- 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 -13
- package/esm/domain/error/trackRuntimeError.js +0 -48
- 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 -36
- package/esm/domain/eventRateLimiter/createEventRateLimiter.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 -17
- package/esm/domain/report/reportObservable.js +0 -90
- package/esm/domain/report/reportObservable.js.map +0 -1
- package/esm/domain/resourceUtils.d.ts +0 -16
- package/esm/domain/resourceUtils.js +0 -2
- 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 -2
- package/esm/domain/session/sessionConstants.js +0 -4
- package/esm/domain/session/sessionConstants.js.map +0 -1
- package/esm/domain/session/sessionManager.d.ts +0 -20
- package/esm/domain/session/sessionManager.js +0 -60
- package/esm/domain/session/sessionManager.js.map +0 -1
- package/esm/domain/session/sessionState.d.ts +0 -11
- package/esm/domain/session/sessionState.js +0 -38
- package/esm/domain/session/sessionState.js.map +0 -1
- package/esm/domain/session/sessionStore.d.ts +0 -34
- package/esm/domain/session/sessionStore.js +0 -139
- package/esm/domain/session/sessionStore.js.map +0 -1
- package/esm/domain/session/sessionStoreOperations.d.ts +0 -10
- package/esm/domain/session/sessionStoreOperations.js +0 -92
- package/esm/domain/session/sessionStoreOperations.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +0 -6
- package/esm/domain/session/storeStrategies/sessionInCookie.js +0 -53
- package/esm/domain/session/storeStrategies/sessionInCookie.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +0 -3
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +0 -36
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -15
- 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 -11
- package/esm/domain/synthetics/syntheticsWorkerValues.js +0 -16
- package/esm/domain/synthetics/syntheticsWorkerValues.js.map +0 -1
- package/esm/domain/telemetry/index.d.ts +0 -3
- package/esm/domain/telemetry/index.js +0 -4
- package/esm/domain/telemetry/index.js.map +0 -1
- package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +0 -15
- package/esm/domain/telemetry/rawTelemetryEvent.types.js +0 -5
- package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +0 -1
- package/esm/domain/telemetry/telemetry.d.ts +0 -116
- package/esm/domain/telemetry/telemetry.js +0 -145
- package/esm/domain/telemetry/telemetry.js.map +0 -1
- package/esm/domain/telemetry/telemetryEvent.types.d.ts +0 -391
- package/esm/domain/telemetry/telemetryEvent.types.js +0 -6
- package/esm/domain/telemetry/telemetryEvent.types.js.map +0 -1
- package/esm/domain/user/index.d.ts +0 -2
- package/esm/domain/user/index.js +0 -3
- package/esm/domain/user/index.js.map +0 -1
- package/esm/domain/user/user.d.ts +0 -12
- package/esm/domain/user/user.js +0 -30
- package/esm/domain/user/user.js.map +0 -1
- package/esm/domain/user/user.types.d.ts +0 -6
- package/esm/domain/user/user.types.js +0 -2
- package/esm/domain/user/user.types.js.map +0 -1
- package/esm/index.d.ts +0 -67
- package/esm/index.js +0 -64
- package/esm/index.js.map +0 -1
- package/esm/tools/abstractLifeCycle.d.ts +0 -23
- package/esm/tools/abstractLifeCycle.js +0 -26
- package/esm/tools/abstractLifeCycle.js.map +0 -1
- package/esm/tools/boundedBuffer.d.ts +0 -5
- package/esm/tools/boundedBuffer.js +0 -19
- package/esm/tools/boundedBuffer.js.map +0 -1
- package/esm/tools/catchUserErrors.d.ts +0 -1
- package/esm/tools/catchUserErrors.js +0 -16
- package/esm/tools/catchUserErrors.js.map +0 -1
- package/esm/tools/display.d.ts +0 -35
- package/esm/tools/display.js +0 -38
- package/esm/tools/display.js.map +0 -1
- package/esm/tools/encoder.d.ts +0 -53
- package/esm/tools/encoder.js +0 -37
- package/esm/tools/encoder.js.map +0 -1
- package/esm/tools/experimentalFeatures.d.ts +0 -22
- package/esm/tools/experimentalFeatures.js +0 -38
- package/esm/tools/experimentalFeatures.js.map +0 -1
- package/esm/tools/getGlobalObject.d.ts +0 -4
- package/esm/tools/getGlobalObject.js +0 -33
- package/esm/tools/getGlobalObject.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/instrumentMethod.d.ts +0 -59
- package/esm/tools/instrumentMethod.js +0 -101
- package/esm/tools/instrumentMethod.js.map +0 -1
- package/esm/tools/matchOption.d.ts +0 -8
- package/esm/tools/matchOption.js +0 -33
- package/esm/tools/matchOption.js.map +0 -1
- package/esm/tools/mergeInto.d.ts +0 -25
- package/esm/tools/mergeInto.js +0 -99
- package/esm/tools/mergeInto.js.map +0 -1
- package/esm/tools/monitor.d.ts +0 -8
- package/esm/tools/monitor.js +0 -66
- package/esm/tools/monitor.js.map +0 -1
- package/esm/tools/observable.d.ts +0 -12
- package/esm/tools/observable.js +0 -39
- package/esm/tools/observable.js.map +0 -1
- package/esm/tools/readBytesFromStream.d.ts +0 -11
- package/esm/tools/readBytesFromStream.js +0 -60
- package/esm/tools/readBytesFromStream.js.map +0 -1
- package/esm/tools/sendToExtension.d.ts +0 -3
- package/esm/tools/sendToExtension.js +0 -7
- package/esm/tools/sendToExtension.js.map +0 -1
- package/esm/tools/serialisation/context.d.ts +0 -6
- 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 -181
- package/esm/tools/serialisation/sanitize.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 -1
- package/esm/tools/utils/arrayUtils.js +0 -7
- package/esm/tools/utils/arrayUtils.js.map +0 -1
- package/esm/tools/utils/browserDetection.d.ts +0 -10
- package/esm/tools/utils/browserDetection.js +0 -35
- package/esm/tools/utils/browserDetection.js.map +0 -1
- package/esm/tools/utils/byteUtils.d.ts +0 -4
- package/esm/tools/utils/byteUtils.js +0 -26
- package/esm/tools/utils/byteUtils.js.map +0 -1
- package/esm/tools/utils/functionUtils.d.ts +0 -9
- package/esm/tools/utils/functionUtils.js +0 -43
- package/esm/tools/utils/functionUtils.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 -19
- package/esm/tools/utils/objectUtils.js.map +0 -1
- package/esm/tools/utils/polyfills.d.ts +0 -24
- package/esm/tools/utils/polyfills.js +0 -95
- 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 -8
- package/esm/tools/utils/stringUtils.js +0 -52
- package/esm/tools/utils/stringUtils.js.map +0 -1
- package/esm/tools/utils/timeUtils.d.ts +0 -57
- package/esm/tools/utils/timeUtils.js +0 -82
- package/esm/tools/utils/timeUtils.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 -14
- package/esm/tools/utils/urlPolyfill.js +0 -80
- package/esm/tools/utils/urlPolyfill.js.map +0 -1
- package/esm/tools/valueHistory.d.ts +0 -50
- package/esm/tools/valueHistory.js +0 -103
- package/esm/tools/valueHistory.js.map +0 -1
- package/esm/transport/batch.d.ts +0 -21
- package/esm/transport/batch.js +0 -120
- package/esm/transport/batch.js.map +0 -1
- package/esm/transport/eventBridge.d.ts +0 -12
- package/esm/transport/eventBridge.js +0 -29
- package/esm/transport/eventBridge.js.map +0 -1
- package/esm/transport/flushController.d.ts +0 -58
- package/esm/transport/flushController.js +0 -108
- package/esm/transport/flushController.js.map +0 -1
- package/esm/transport/httpRequest.d.ts +0 -38
- package/esm/transport/httpRequest.js +0 -89
- package/esm/transport/httpRequest.js.map +0 -1
- package/esm/transport/index.d.ts +0 -4
- package/esm/transport/index.js +0 -5
- package/esm/transport/index.js.map +0 -1
- package/esm/transport/sendWithRetryStrategy.d.ts +0 -39
- package/esm/transport/sendWithRetryStrategy.js +0 -146
- package/esm/transport/sendWithRetryStrategy.js.map +0 -1
- package/esm/transport/startBatchWithReplica.d.ts +0 -20
- package/esm/transport/startBatchWithReplica.js +0 -38
- package/esm/transport/startBatchWithReplica.js.map +0 -1
- package/src/domain/configuration/intakeSites.ts +0 -5
- package/src/domain/configuration/tags.ts +0 -43
- package/src/domain/context/customerDataTracker.ts +0 -134
- package/src/domain/user/index.ts +0 -2
- package/src/domain/user/user.ts +0 -33
- package/src/domain/user/user.types.ts +0 -6
- package/src/transport/startBatchWithReplica.ts +0 -68
package/src/transport/batch.ts
CHANGED
|
@@ -1,59 +1,97 @@
|
|
|
1
|
-
import { display } from '../tools/display'
|
|
1
|
+
import { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../tools/display'
|
|
2
2
|
import type { Context } from '../tools/serialisation/context'
|
|
3
3
|
import { objectValues } from '../tools/utils/polyfills'
|
|
4
|
-
import { isPageExitReason } from '../browser/
|
|
4
|
+
import { isPageExitReason } from '../browser/pageMayExitObservable'
|
|
5
5
|
import { jsonStringify } from '../tools/serialisation/jsonStringify'
|
|
6
|
-
import type { Subscription } from '../tools/observable'
|
|
7
6
|
import type { Encoder, EncoderResult } from '../tools/encoder'
|
|
8
|
-
import { computeBytesCount } from '../tools/utils/byteUtils'
|
|
7
|
+
import { computeBytesCount, ONE_KIBI_BYTE } from '../tools/utils/byteUtils'
|
|
9
8
|
import type { HttpRequest, Payload } from './httpRequest'
|
|
10
9
|
import type { FlushController, FlushEvent } from './flushController'
|
|
11
10
|
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
export const MESSAGE_BYTES_LIMIT = 256 * ONE_KIBI_BYTE
|
|
12
|
+
|
|
13
|
+
export interface Batch {
|
|
14
|
+
flushController: FlushController
|
|
15
|
+
add: (message: Context) => void
|
|
16
|
+
upsert: (message: Context, key: string) => void
|
|
17
|
+
stop: () => void
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function createBatch({
|
|
21
|
+
encoder,
|
|
22
|
+
request,
|
|
23
|
+
flushController,
|
|
24
|
+
}: {
|
|
25
|
+
encoder: Encoder
|
|
26
|
+
request: HttpRequest
|
|
27
|
+
flushController: FlushController
|
|
28
|
+
}): Batch {
|
|
29
|
+
let upsertBuffer: { [key: string]: string } = {}
|
|
30
|
+
const flushSubscription = flushController.flushObservable.subscribe((event) => flush(event))
|
|
31
|
+
|
|
32
|
+
function push(serializedMessage: string, estimatedMessageBytesCount: number, key?: string) {
|
|
33
|
+
flushController.notifyBeforeAddMessage(estimatedMessageBytesCount)
|
|
34
|
+
|
|
35
|
+
if (key !== undefined) {
|
|
36
|
+
upsertBuffer[key] = serializedMessage
|
|
37
|
+
flushController.notifyAfterAddMessage()
|
|
38
|
+
} else {
|
|
39
|
+
encoder.write(encoder.isEmpty ? serializedMessage : `\n${serializedMessage}`, (realMessageBytesCount) => {
|
|
40
|
+
flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount)
|
|
41
|
+
})
|
|
42
|
+
}
|
|
23
43
|
}
|
|
24
44
|
|
|
25
|
-
|
|
26
|
-
|
|
45
|
+
function hasMessageFor(key?: string): key is string {
|
|
46
|
+
return key !== undefined && upsertBuffer[key] !== undefined
|
|
27
47
|
}
|
|
28
48
|
|
|
29
|
-
|
|
30
|
-
|
|
49
|
+
function remove(key: string) {
|
|
50
|
+
const removedMessage = upsertBuffer[key]
|
|
51
|
+
delete upsertBuffer[key]
|
|
52
|
+
const messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage)
|
|
53
|
+
flushController.notifyAfterRemoveMessage(messageBytesCount)
|
|
31
54
|
}
|
|
32
55
|
|
|
33
|
-
|
|
34
|
-
|
|
56
|
+
function addOrUpdate(message: Context, key?: string) {
|
|
57
|
+
const serializedMessage = jsonStringify(message)!
|
|
58
|
+
|
|
59
|
+
const estimatedMessageBytesCount = encoder.estimateEncodedBytesCount(serializedMessage)
|
|
60
|
+
|
|
61
|
+
if (estimatedMessageBytesCount >= MESSAGE_BYTES_LIMIT) {
|
|
62
|
+
display.warn(
|
|
63
|
+
`Discarded a message whose size was bigger than the maximum allowed size ${MESSAGE_BYTES_LIMIT / ONE_KIBI_BYTE}KiB. ${MORE_DETAILS} ${DOCS_TROUBLESHOOTING}/#technical-limitations`
|
|
64
|
+
)
|
|
65
|
+
return
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (hasMessageFor(key)) {
|
|
69
|
+
remove(key)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
push(serializedMessage, estimatedMessageBytesCount, key)
|
|
35
73
|
}
|
|
36
74
|
|
|
37
|
-
|
|
38
|
-
const upsertMessages = objectValues(
|
|
39
|
-
|
|
75
|
+
function flush(event: FlushEvent) {
|
|
76
|
+
const upsertMessages = objectValues(upsertBuffer).join('\n')
|
|
77
|
+
upsertBuffer = {}
|
|
40
78
|
|
|
41
|
-
const
|
|
42
|
-
const send =
|
|
79
|
+
const pageMightExit = isPageExitReason(event.reason)
|
|
80
|
+
const send = pageMightExit ? request.sendOnExit : request.send
|
|
43
81
|
|
|
44
82
|
if (
|
|
45
|
-
|
|
83
|
+
pageMightExit &&
|
|
46
84
|
// Note: checking that the encoder is async is not strictly needed, but it's an optimization:
|
|
47
85
|
// if the encoder is async we need to send two requests in some cases (one for encoded data
|
|
48
86
|
// and the other for non-encoded data). But if it's not async, we don't have to worry about
|
|
49
87
|
// it and always send a single request.
|
|
50
|
-
|
|
88
|
+
encoder.isAsync
|
|
51
89
|
) {
|
|
52
|
-
const encoderResult =
|
|
90
|
+
const encoderResult = encoder.finishSync()
|
|
53
91
|
|
|
54
92
|
// Send encoded messages
|
|
55
93
|
if (encoderResult.outputBytesCount) {
|
|
56
|
-
send(formatPayloadFromEncoder(encoderResult
|
|
94
|
+
send(formatPayloadFromEncoder(encoderResult))
|
|
57
95
|
}
|
|
58
96
|
|
|
59
97
|
// Send messages that are not yet encoded at this point
|
|
@@ -62,67 +100,27 @@ export class Batch {
|
|
|
62
100
|
send({
|
|
63
101
|
data: pendingMessages,
|
|
64
102
|
bytesCount: computeBytesCount(pendingMessages),
|
|
65
|
-
flushReason: event.reason,
|
|
66
103
|
})
|
|
67
104
|
}
|
|
68
105
|
} else {
|
|
69
106
|
if (upsertMessages) {
|
|
70
|
-
|
|
107
|
+
encoder.write(encoder.isEmpty ? upsertMessages : `\n${upsertMessages}`)
|
|
71
108
|
}
|
|
72
|
-
|
|
73
|
-
send(formatPayloadFromEncoder(encoderResult
|
|
109
|
+
encoder.finish((encoderResult) => {
|
|
110
|
+
send(formatPayloadFromEncoder(encoderResult))
|
|
74
111
|
})
|
|
75
112
|
}
|
|
76
113
|
}
|
|
77
114
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
if (estimatedMessageBytesCount >= this.messageBytesLimit) {
|
|
84
|
-
display.warn(
|
|
85
|
-
`Discarded a message whose size was bigger than the maximum allowed size ${this.messageBytesLimit}KB.`
|
|
86
|
-
)
|
|
87
|
-
return
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (this.hasMessageFor(key)) {
|
|
91
|
-
this.remove(key)
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
this.push(serializedMessage, estimatedMessageBytesCount, key)
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
private push(serializedMessage: string, estimatedMessageBytesCount: number, key?: string) {
|
|
98
|
-
this.flushController.notifyBeforeAddMessage(estimatedMessageBytesCount)
|
|
99
|
-
|
|
100
|
-
if (key !== undefined) {
|
|
101
|
-
this.upsertBuffer[key] = serializedMessage
|
|
102
|
-
this.flushController.notifyAfterAddMessage()
|
|
103
|
-
} else {
|
|
104
|
-
this.encoder.write(
|
|
105
|
-
this.encoder.isEmpty ? serializedMessage : `\n${serializedMessage}`,
|
|
106
|
-
(realMessageBytesCount) => {
|
|
107
|
-
this.flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount)
|
|
108
|
-
}
|
|
109
|
-
)
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
private remove(key: string) {
|
|
114
|
-
const removedMessage = this.upsertBuffer[key]
|
|
115
|
-
delete this.upsertBuffer[key]
|
|
116
|
-
const messageBytesCount = this.encoder.estimateEncodedBytesCount(removedMessage)
|
|
117
|
-
this.flushController.notifyAfterRemoveMessage(messageBytesCount)
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
private hasMessageFor(key?: string): key is string {
|
|
121
|
-
return key !== undefined && this.upsertBuffer[key] !== undefined
|
|
115
|
+
return {
|
|
116
|
+
flushController,
|
|
117
|
+
add: addOrUpdate,
|
|
118
|
+
upsert: addOrUpdate,
|
|
119
|
+
stop: flushSubscription.unsubscribe,
|
|
122
120
|
}
|
|
123
121
|
}
|
|
124
122
|
|
|
125
|
-
function formatPayloadFromEncoder(encoderResult: EncoderResult
|
|
123
|
+
function formatPayloadFromEncoder(encoderResult: EncoderResult): Payload {
|
|
126
124
|
let data: string | Blob
|
|
127
125
|
if (typeof encoderResult.output === 'string') {
|
|
128
126
|
data = encoderResult.output
|
|
@@ -142,6 +140,5 @@ function formatPayloadFromEncoder(encoderResult: EncoderResult, flushEvent: Flus
|
|
|
142
140
|
data,
|
|
143
141
|
bytesCount: encoderResult.outputBytesCount,
|
|
144
142
|
encoding: encoderResult.encoding,
|
|
145
|
-
flushReason: flushEvent.reason,
|
|
146
143
|
}
|
|
147
144
|
}
|
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { getGlobalObject } from '../tools/globalObject'
|
|
2
|
+
import type { DefaultPrivacyLevel } from '../domain/configuration'
|
|
3
3
|
|
|
4
4
|
export interface BrowserWindowWithEventBridge extends Window {
|
|
5
5
|
DatadogEventBridge?: DatadogEventBridge
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
export interface DatadogEventBridge {
|
|
9
|
+
getCapabilities?(): string
|
|
10
|
+
getPrivacyLevel?(): DefaultPrivacyLevel
|
|
9
11
|
getAllowedWebViewHosts(): string
|
|
10
12
|
send(msg: string): void
|
|
11
13
|
}
|
|
12
14
|
|
|
15
|
+
export const enum BridgeCapability {
|
|
16
|
+
RECORDS = 'records',
|
|
17
|
+
}
|
|
18
|
+
|
|
13
19
|
export function getEventBridge<T, E>() {
|
|
14
20
|
const eventBridgeGlobal = getEventBridgeGlobal()
|
|
15
21
|
|
|
@@ -18,22 +24,35 @@ export function getEventBridge<T, E>() {
|
|
|
18
24
|
}
|
|
19
25
|
|
|
20
26
|
return {
|
|
27
|
+
getCapabilities() {
|
|
28
|
+
return JSON.parse(eventBridgeGlobal.getCapabilities?.() || '[]') as BridgeCapability[]
|
|
29
|
+
},
|
|
30
|
+
getPrivacyLevel() {
|
|
31
|
+
return eventBridgeGlobal.getPrivacyLevel?.()
|
|
32
|
+
},
|
|
21
33
|
getAllowedWebViewHosts() {
|
|
22
34
|
return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts()) as string[]
|
|
23
35
|
},
|
|
24
|
-
send(eventType: T, event: E) {
|
|
25
|
-
|
|
36
|
+
send(eventType: T, event: E, viewId?: string) {
|
|
37
|
+
const view = viewId ? { id: viewId } : undefined
|
|
38
|
+
eventBridgeGlobal.send(JSON.stringify({ eventType, event, view }))
|
|
26
39
|
},
|
|
27
40
|
}
|
|
28
41
|
}
|
|
29
42
|
|
|
43
|
+
export function bridgeSupports(capability: BridgeCapability): boolean {
|
|
44
|
+
const bridge = getEventBridge()
|
|
45
|
+
return !!bridge && bridge.getCapabilities().includes(capability)
|
|
46
|
+
}
|
|
47
|
+
|
|
30
48
|
export function canUseEventBridge(currentHost = getGlobalObject<Window>().location?.hostname): boolean {
|
|
31
49
|
const bridge = getEventBridge()
|
|
50
|
+
|
|
32
51
|
return (
|
|
33
52
|
!!bridge &&
|
|
34
53
|
bridge
|
|
35
54
|
.getAllowedWebViewHosts()
|
|
36
|
-
.some((allowedHost) => currentHost === allowedHost || endsWith(
|
|
55
|
+
.some((allowedHost) => currentHost === allowedHost || currentHost.endsWith(`.${allowedHost}`))
|
|
37
56
|
)
|
|
38
57
|
}
|
|
39
58
|
|
|
@@ -1,11 +1,26 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PageMayExitEvent, PageExitReason } from '../browser/pageMayExitObservable'
|
|
2
|
+
import { isWorkerEnvironment } from '../tools/globalObject'
|
|
2
3
|
import { Observable } from '../tools/observable'
|
|
3
4
|
import type { TimeoutId } from '../tools/timer'
|
|
4
5
|
import { clearTimeout, setTimeout } from '../tools/timer'
|
|
6
|
+
import { ONE_SECOND } from '../tools/utils/timeUtils'
|
|
5
7
|
import type { Duration } from '../tools/utils/timeUtils'
|
|
8
|
+
import { RECOMMENDED_REQUEST_BYTES_LIMIT } from './httpRequest'
|
|
6
9
|
|
|
7
10
|
export type FlushReason = PageExitReason | 'duration_limit' | 'bytes_limit' | 'messages_limit' | 'session_expire'
|
|
8
11
|
|
|
12
|
+
/**
|
|
13
|
+
* flush automatically, aim to be lower than ALB connection timeout
|
|
14
|
+
* to maximize connection reuse.
|
|
15
|
+
*/
|
|
16
|
+
export const FLUSH_DURATION_LIMIT = (30 * ONE_SECOND) as Duration
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* When using the SDK in a Worker Environment, we limit the batch size to 1 to ensure it can be sent
|
|
20
|
+
* in a single event.
|
|
21
|
+
*/
|
|
22
|
+
export const MESSAGES_LIMIT = isWorkerEnvironment ? 1 : 50
|
|
23
|
+
|
|
9
24
|
export type FlushController = ReturnType<typeof createFlushController>
|
|
10
25
|
export interface FlushEvent {
|
|
11
26
|
reason: FlushReason
|
|
@@ -14,10 +29,7 @@ export interface FlushEvent {
|
|
|
14
29
|
}
|
|
15
30
|
|
|
16
31
|
interface FlushControllerOptions {
|
|
17
|
-
|
|
18
|
-
bytesLimit: number
|
|
19
|
-
durationLimit: Duration
|
|
20
|
-
pageExitObservable: Observable<PageExitEvent>
|
|
32
|
+
pageMayExitObservable: Observable<PageMayExitEvent>
|
|
21
33
|
sessionExpireObservable: Observable<void>
|
|
22
34
|
}
|
|
23
35
|
|
|
@@ -26,18 +38,12 @@ interface FlushControllerOptions {
|
|
|
26
38
|
* to happen. The implementation is designed to support both synchronous and asynchronous usages,
|
|
27
39
|
* but relies on invariants described in each method documentation to keep a coherent state.
|
|
28
40
|
*/
|
|
29
|
-
export function createFlushController({
|
|
30
|
-
|
|
31
|
-
bytesLimit,
|
|
32
|
-
durationLimit,
|
|
33
|
-
pageExitObservable,
|
|
34
|
-
sessionExpireObservable,
|
|
35
|
-
}: FlushControllerOptions) {
|
|
36
|
-
const pageExitSubscription = pageExitObservable.subscribe((event) => flush(event.reason))
|
|
41
|
+
export function createFlushController({ pageMayExitObservable, sessionExpireObservable }: FlushControllerOptions) {
|
|
42
|
+
const pageMayExitSubscription = pageMayExitObservable.subscribe((event) => flush(event.reason))
|
|
37
43
|
const sessionExpireSubscription = sessionExpireObservable.subscribe(() => flush('session_expire'))
|
|
38
44
|
|
|
39
45
|
const flushObservable = new Observable<FlushEvent>(() => () => {
|
|
40
|
-
|
|
46
|
+
pageMayExitSubscription.unsubscribe()
|
|
41
47
|
sessionExpireSubscription.unsubscribe()
|
|
42
48
|
})
|
|
43
49
|
|
|
@@ -68,7 +74,7 @@ export function createFlushController({
|
|
|
68
74
|
if (durationLimitTimeoutId === undefined) {
|
|
69
75
|
durationLimitTimeoutId = setTimeout(() => {
|
|
70
76
|
flush('duration_limit')
|
|
71
|
-
},
|
|
77
|
+
}, FLUSH_DURATION_LIMIT)
|
|
72
78
|
}
|
|
73
79
|
}
|
|
74
80
|
|
|
@@ -89,11 +95,11 @@ export function createFlushController({
|
|
|
89
95
|
* This function needs to be called synchronously, right before adding the message, so no flush
|
|
90
96
|
* event can happen after `notifyBeforeAddMessage` and before adding the message.
|
|
91
97
|
*
|
|
92
|
-
* @param estimatedMessageBytesCount
|
|
98
|
+
* @param estimatedMessageBytesCount - an estimation of the message bytes count once it is
|
|
93
99
|
* actually added.
|
|
94
100
|
*/
|
|
95
101
|
notifyBeforeAddMessage(estimatedMessageBytesCount: number) {
|
|
96
|
-
if (currentBytesCount + estimatedMessageBytesCount >=
|
|
102
|
+
if (currentBytesCount + estimatedMessageBytesCount >= RECOMMENDED_REQUEST_BYTES_LIMIT) {
|
|
97
103
|
flush('bytes_limit')
|
|
98
104
|
}
|
|
99
105
|
// Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no
|
|
@@ -110,15 +116,15 @@ export function createFlushController({
|
|
|
110
116
|
* This function can be called asynchronously after the message was added, but in this case it
|
|
111
117
|
* should not be called if a flush event occurred in between.
|
|
112
118
|
*
|
|
113
|
-
* @param messageBytesCountDiff
|
|
119
|
+
* @param messageBytesCountDiff - the difference between the estimated message bytes count and
|
|
114
120
|
* its actual bytes count once added to the pool.
|
|
115
121
|
*/
|
|
116
122
|
notifyAfterAddMessage(messageBytesCountDiff = 0) {
|
|
117
123
|
currentBytesCount += messageBytesCountDiff
|
|
118
124
|
|
|
119
|
-
if (currentMessagesCount >=
|
|
125
|
+
if (currentMessagesCount >= MESSAGES_LIMIT) {
|
|
120
126
|
flush('messages_limit')
|
|
121
|
-
} else if (currentBytesCount >=
|
|
127
|
+
} else if (currentBytesCount >= RECOMMENDED_REQUEST_BYTES_LIMIT) {
|
|
122
128
|
flush('bytes_limit')
|
|
123
129
|
}
|
|
124
130
|
},
|
|
@@ -129,7 +135,7 @@ export function createFlushController({
|
|
|
129
135
|
* This function needs to be called synchronously, right after removing the message, so no flush
|
|
130
136
|
* event can happen after removing the message and before `notifyAfterRemoveMessage`.
|
|
131
137
|
*
|
|
132
|
-
* @param messageBytesCount
|
|
138
|
+
* @param messageBytesCount - the message bytes count that was added to the pool. Should
|
|
133
139
|
* correspond to the sum of bytes counts passed to `notifyBeforeAddMessage` and
|
|
134
140
|
* `notifyAfterAddMessage`.
|
|
135
141
|
*/
|
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
import type { EndpointBuilder
|
|
2
|
-
import { addTelemetryError } from '../domain/telemetry'
|
|
1
|
+
import type { EndpointBuilder } from '../domain/configuration'
|
|
3
2
|
import type { Context } from '../tools/serialisation/context'
|
|
4
|
-
import { monitor } from '../tools/monitor'
|
|
5
|
-
import { addEventListener } from '../browser/addEventListener'
|
|
3
|
+
import { monitor, monitorError } from '../tools/monitor'
|
|
6
4
|
import type { RawError } from '../domain/error/error.types'
|
|
5
|
+
import { isExperimentalFeatureEnabled, ExperimentalFeature } from '../tools/experimentalFeatures'
|
|
6
|
+
import { Observable } from '../tools/observable'
|
|
7
|
+
import { ONE_KIBI_BYTE } from '../tools/utils/byteUtils'
|
|
7
8
|
import { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'
|
|
8
|
-
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* beacon payload max queue size implementation is 64kb
|
|
12
|
+
* ensure that we leave room for logs, rum and potential other users
|
|
13
|
+
*/
|
|
14
|
+
export const RECOMMENDED_REQUEST_BYTES_LIMIT = 16 * ONE_KIBI_BYTE
|
|
9
15
|
|
|
10
16
|
/**
|
|
11
17
|
* Use POST request without content type to:
|
|
@@ -16,18 +22,46 @@ import type { FlushReason } from './flushController'
|
|
|
16
22
|
* to be parsed correctly without content type header
|
|
17
23
|
*/
|
|
18
24
|
|
|
19
|
-
export
|
|
25
|
+
export interface HttpRequest<Body extends Payload = Payload> {
|
|
26
|
+
observable: Observable<HttpRequestEvent<Body>>
|
|
27
|
+
send(this: void, payload: Body): void
|
|
28
|
+
sendOnExit(this: void, payload: Body): void
|
|
29
|
+
}
|
|
20
30
|
|
|
21
31
|
export interface HttpResponse extends Context {
|
|
22
32
|
status: number
|
|
23
33
|
type?: ResponseType
|
|
24
34
|
}
|
|
25
35
|
|
|
36
|
+
export interface BandwidthStats {
|
|
37
|
+
ongoingByteCount: number
|
|
38
|
+
ongoingRequestCount: number
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export type HttpRequestEvent<Body extends Payload = Payload> =
|
|
42
|
+
| {
|
|
43
|
+
// A request to send the given payload failed. (We may retry.)
|
|
44
|
+
type: 'failure'
|
|
45
|
+
bandwidth: BandwidthStats
|
|
46
|
+
payload: Body
|
|
47
|
+
}
|
|
48
|
+
| {
|
|
49
|
+
// The given payload was discarded because the request queue is full.
|
|
50
|
+
type: 'queue-full'
|
|
51
|
+
bandwidth: BandwidthStats
|
|
52
|
+
payload: Body
|
|
53
|
+
}
|
|
54
|
+
| {
|
|
55
|
+
// A request to send the given payload succeeded.
|
|
56
|
+
type: 'success'
|
|
57
|
+
bandwidth: BandwidthStats
|
|
58
|
+
payload: Body
|
|
59
|
+
}
|
|
60
|
+
|
|
26
61
|
export interface Payload {
|
|
27
62
|
data: string | FormData | Blob
|
|
28
63
|
bytesCount: number
|
|
29
64
|
retry?: RetryInfo
|
|
30
|
-
flushReason?: FlushReason
|
|
31
65
|
encoding?: 'deflate'
|
|
32
66
|
}
|
|
33
67
|
|
|
@@ -36,36 +70,47 @@ export interface RetryInfo {
|
|
|
36
70
|
lastFailureStatus: number
|
|
37
71
|
}
|
|
38
72
|
|
|
39
|
-
export function createHttpRequest(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
bytesLimit: number
|
|
43
|
-
|
|
44
|
-
)
|
|
45
|
-
const retryState = newRetryState()
|
|
46
|
-
const sendStrategyForRetry = (payload: Payload, onResponse: (r: HttpResponse) => void) =>
|
|
47
|
-
fetchKeepAliveStrategy(configuration, endpointBuilder, bytesLimit, payload, onResponse)
|
|
73
|
+
export function createHttpRequest<Body extends Payload = Payload>(
|
|
74
|
+
endpointBuilders: EndpointBuilder[],
|
|
75
|
+
reportError: (error: RawError) => void,
|
|
76
|
+
bytesLimit: number = RECOMMENDED_REQUEST_BYTES_LIMIT
|
|
77
|
+
): HttpRequest<Body> {
|
|
78
|
+
const observable = new Observable<HttpRequestEvent<Body>>()
|
|
79
|
+
const retryState = newRetryState<Body>()
|
|
48
80
|
|
|
49
81
|
return {
|
|
50
|
-
|
|
51
|
-
|
|
82
|
+
observable,
|
|
83
|
+
send: (payload: Body) => {
|
|
84
|
+
for (const endpointBuilder of endpointBuilders) {
|
|
85
|
+
sendWithRetryStrategy(
|
|
86
|
+
payload,
|
|
87
|
+
retryState,
|
|
88
|
+
(payload, onResponse) => {
|
|
89
|
+
if (isExperimentalFeatureEnabled(ExperimentalFeature.AVOID_FETCH_KEEPALIVE)) {
|
|
90
|
+
fetchStrategy(endpointBuilder, payload, onResponse)
|
|
91
|
+
} else {
|
|
92
|
+
fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse)
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
endpointBuilder.trackType,
|
|
96
|
+
reportError,
|
|
97
|
+
observable
|
|
98
|
+
)
|
|
99
|
+
}
|
|
52
100
|
},
|
|
53
101
|
/**
|
|
54
102
|
* Since fetch keepalive behaves like regular fetch on Firefox,
|
|
55
103
|
* keep using sendBeaconStrategy on exit
|
|
56
104
|
*/
|
|
57
|
-
sendOnExit: (payload:
|
|
58
|
-
|
|
105
|
+
sendOnExit: (payload: Body) => {
|
|
106
|
+
for (const endpointBuilder of endpointBuilders) {
|
|
107
|
+
sendBeaconStrategy(endpointBuilder, bytesLimit, payload)
|
|
108
|
+
}
|
|
59
109
|
},
|
|
60
110
|
}
|
|
61
111
|
}
|
|
62
112
|
|
|
63
|
-
function sendBeaconStrategy(
|
|
64
|
-
configuration: Configuration,
|
|
65
|
-
endpointBuilder: EndpointBuilder,
|
|
66
|
-
bytesLimit: number,
|
|
67
|
-
payload: Payload
|
|
68
|
-
) {
|
|
113
|
+
function sendBeaconStrategy(endpointBuilder: EndpointBuilder, bytesLimit: number, payload: Payload) {
|
|
69
114
|
const canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit
|
|
70
115
|
if (canUseBeacon) {
|
|
71
116
|
try {
|
|
@@ -80,8 +125,7 @@ function sendBeaconStrategy(
|
|
|
80
125
|
}
|
|
81
126
|
}
|
|
82
127
|
|
|
83
|
-
|
|
84
|
-
sendXHR(configuration, xhrUrl, payload.data)
|
|
128
|
+
fetchStrategy(endpointBuilder, payload)
|
|
85
129
|
}
|
|
86
130
|
|
|
87
131
|
let hasReportedBeaconError = false
|
|
@@ -89,34 +133,41 @@ let hasReportedBeaconError = false
|
|
|
89
133
|
function reportBeaconError(e: unknown) {
|
|
90
134
|
if (!hasReportedBeaconError) {
|
|
91
135
|
hasReportedBeaconError = true
|
|
92
|
-
|
|
136
|
+
monitorError(e)
|
|
93
137
|
}
|
|
94
138
|
}
|
|
95
139
|
|
|
96
140
|
export function fetchKeepAliveStrategy(
|
|
97
|
-
configuration: Configuration,
|
|
98
141
|
endpointBuilder: EndpointBuilder,
|
|
99
142
|
bytesLimit: number,
|
|
100
143
|
payload: Payload,
|
|
101
144
|
onResponse?: (r: HttpResponse) => void
|
|
102
145
|
) {
|
|
103
146
|
const canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit
|
|
147
|
+
|
|
104
148
|
if (canUseKeepAlive) {
|
|
105
|
-
const fetchUrl = endpointBuilder.build('fetch', payload)
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
monitor(() => {
|
|
109
|
-
|
|
110
|
-
// failed to queue the request
|
|
111
|
-
sendXHR(configuration, xhrUrl, payload.data, onResponse)
|
|
112
|
-
})
|
|
113
|
-
)
|
|
149
|
+
const fetchUrl = endpointBuilder.build('fetch-keepalive', payload)
|
|
150
|
+
|
|
151
|
+
fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' })
|
|
152
|
+
.then(monitor((response: Response) => onResponse?.({ status: response.status, type: response.type })))
|
|
153
|
+
.catch(monitor(() => fetchStrategy(endpointBuilder, payload, onResponse)))
|
|
114
154
|
} else {
|
|
115
|
-
|
|
116
|
-
sendXHR(configuration, xhrUrl, payload.data, onResponse)
|
|
155
|
+
fetchStrategy(endpointBuilder, payload, onResponse)
|
|
117
156
|
}
|
|
118
157
|
}
|
|
119
158
|
|
|
159
|
+
export function fetchStrategy(
|
|
160
|
+
endpointBuilder: EndpointBuilder,
|
|
161
|
+
payload: Payload,
|
|
162
|
+
onResponse?: (r: HttpResponse) => void
|
|
163
|
+
) {
|
|
164
|
+
const fetchUrl = endpointBuilder.build('fetch', payload)
|
|
165
|
+
|
|
166
|
+
fetch(fetchUrl, { method: 'POST', body: payload.data, mode: 'cors' })
|
|
167
|
+
.then(monitor((response: Response) => onResponse?.({ status: response.status, type: response.type })))
|
|
168
|
+
.catch(monitor(() => onResponse?.({ status: 0 })))
|
|
169
|
+
}
|
|
170
|
+
|
|
120
171
|
function isKeepAliveSupported() {
|
|
121
172
|
// Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors
|
|
122
173
|
try {
|
|
@@ -125,33 +176,3 @@ function isKeepAliveSupported() {
|
|
|
125
176
|
return false
|
|
126
177
|
}
|
|
127
178
|
}
|
|
128
|
-
|
|
129
|
-
export function sendXHR(
|
|
130
|
-
configuration: Configuration,
|
|
131
|
-
url: string,
|
|
132
|
-
data: Payload['data'],
|
|
133
|
-
onResponse?: (r: HttpResponse) => void
|
|
134
|
-
) {
|
|
135
|
-
const request = new XMLHttpRequest()
|
|
136
|
-
request.open('POST', url, true)
|
|
137
|
-
if (data instanceof Blob) {
|
|
138
|
-
// When using a Blob instance, IE does not use its 'type' to define the 'Content-Type' header
|
|
139
|
-
// automatically, so the intake request ends up being rejected with an HTTP status 415
|
|
140
|
-
// Defining the header manually fixes this issue.
|
|
141
|
-
request.setRequestHeader('Content-Type', data.type)
|
|
142
|
-
}
|
|
143
|
-
addEventListener(
|
|
144
|
-
configuration,
|
|
145
|
-
request,
|
|
146
|
-
'loadend',
|
|
147
|
-
() => {
|
|
148
|
-
onResponse?.({ status: request.status })
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
// prevent multiple onResponse callbacks
|
|
152
|
-
// if the xhr instance is reused by a third party
|
|
153
|
-
once: true,
|
|
154
|
-
}
|
|
155
|
-
)
|
|
156
|
-
request.send(data)
|
|
157
|
-
}
|
package/src/transport/index.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
export { HttpRequest,
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
1
|
+
export type { BandwidthStats, HttpRequest, HttpRequestEvent, Payload, RetryInfo } from './httpRequest'
|
|
2
|
+
export { createHttpRequest } from './httpRequest'
|
|
3
|
+
export type { BrowserWindowWithEventBridge, DatadogEventBridge } from './eventBridge'
|
|
4
|
+
export { canUseEventBridge, bridgeSupports, getEventBridge, BridgeCapability } from './eventBridge'
|
|
5
|
+
export { createBatch } from './batch'
|
|
6
|
+
export type { FlushController, FlushEvent, FlushReason } from './flushController'
|
|
7
|
+
export { createFlushController, FLUSH_DURATION_LIMIT } from './flushController'
|