@openobserve/browser-core 0.2.11 → 0.2.12-beta.13
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 +44 -35
- package/src/browser/{types.ts → browser.types.ts} +42 -0
- package/src/browser/cookie.ts +69 -15
- package/src/browser/fetchObservable.ts +97 -42
- package/src/browser/{pageExitObservable.ts → pageMayExitObservable.ts} +11 -24
- package/src/browser/runOnReadyState.ts +14 -4
- package/src/browser/xhrObservable.ts +45 -38
- package/src/domain/allowedTrackingOrigins.ts +30 -0
- package/src/domain/bufferedData.ts +32 -0
- package/src/domain/configuration/configuration.ts +366 -95
- package/src/domain/configuration/endpointBuilder.ts +48 -64
- package/src/domain/configuration/index.ts +6 -4
- package/src/domain/configuration/transportConfiguration.ts +42 -35
- package/src/domain/connectivity/connectivity.ts +31 -0
- package/src/domain/connectivity/index.ts +1 -0
- package/src/domain/console/consoleObservable.ts +59 -27
- package/src/domain/context/contextConstants.ts +27 -0
- package/src/domain/context/contextManager.ts +85 -0
- package/src/domain/context/contextUtils.ts +14 -0
- package/src/domain/context/defineContextMethod.ts +31 -0
- package/src/domain/context/storeContextManager.ts +55 -0
- 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} +18 -2
- package/src/domain/deflate/index.ts +1 -1
- package/src/domain/error/error.ts +28 -84
- package/src/domain/error/error.types.ts +21 -4
- package/src/domain/error/trackRuntimeError.ts +37 -8
- 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/browser.types.ts +12 -0
- package/src/domain/report/reportObservable.ts +37 -30
- package/src/domain/resourceUtils.ts +20 -16
- package/src/domain/session/README.md +193 -0
- package/src/domain/session/oldCookiesMigration.ts +7 -7
- 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 +51 -32
- package/src/domain/session/storeStrategies/sessionInCookie.ts +113 -23
- package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +11 -8
- package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +6 -2
- package/src/domain/synthetics/syntheticsWorkerValues.ts +15 -4
- package/src/domain/tags.ts +76 -0
- package/src/domain/telemetry/index.ts +12 -4
- package/src/domain/telemetry/rawTelemetryEvent.types.ts +11 -3
- package/src/domain/telemetry/telemetry.ts +242 -98
- package/src/domain/telemetry/telemetryEvent.types.ts +530 -5
- package/src/domain/trackingConsent.ts +34 -0
- package/src/index.ts +92 -55
- 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 +18 -13
- package/src/tools/encoder.ts +103 -0
- package/src/tools/experimentalFeatures.ts +18 -9
- package/src/tools/getZoneJsOriginalValue.ts +1 -1
- package/src/tools/{getGlobalObject.ts → globalObject.ts} +20 -0
- package/src/tools/instrumentMethod.ts +127 -66
- package/src/tools/matchOption.ts +1 -2
- package/src/tools/mergeInto.ts +16 -16
- package/src/tools/monitor.ts +14 -10
- package/src/tools/observable.ts +79 -15
- 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/tools/stackTrace/computeStackTrace.ts +250 -0
- 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 +35 -3
- 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 -110
- package/src/tools/utils/responseUtils.ts +1 -1
- package/src/tools/utils/stringUtils.ts +62 -4
- 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 +113 -61
- package/src/transport/eventBridge.ts +24 -5
- package/src/transport/flushController.ts +44 -23
- package/src/transport/httpRequest.ts +99 -71
- package/src/transport/index.ts +7 -4
- package/src/transport/sendWithRetryStrategy.ts +60 -41
- 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 -76
- package/cjs/browser/addEventListener.js +0 -52
- package/cjs/browser/addEventListener.js.map +0 -1
- package/cjs/browser/cookie.d.ts +0 -10
- package/cjs/browser/cookie.js +0 -69
- package/cjs/browser/cookie.js.map +0 -1
- package/cjs/browser/fetchObservable.d.ts +0 -23
- package/cjs/browser/fetchObservable.js +0 -74
- package/cjs/browser/fetchObservable.js.map +0 -1
- package/cjs/browser/pageExitObservable.d.ts +0 -14
- package/cjs/browser/pageExitObservable.js +0 -58
- 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 -22
- package/cjs/browser/xhrObservable.js +0 -93
- package/cjs/browser/xhrObservable.js.map +0 -1
- package/cjs/domain/configuration/configuration.d.ts +0 -67
- package/cjs/domain/configuration/configuration.js +0 -95
- package/cjs/domain/configuration/configuration.js.map +0 -1
- package/cjs/domain/configuration/endpointBuilder.d.ts +0 -14
- package/cjs/domain/configuration/endpointBuilder.js +0 -94
- package/cjs/domain/configuration/endpointBuilder.js.map +0 -1
- package/cjs/domain/configuration/index.d.ts +0 -3
- package/cjs/domain/configuration/index.js +0 -25
- 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/console/consoleObservable.d.ts +0 -11
- package/cjs/domain/console/consoleObservable.js +0 -75
- package/cjs/domain/console/consoleObservable.js.map +0 -1
- package/cjs/domain/deflate/index.d.ts +0 -1
- package/cjs/domain/deflate/index.js +0 -18
- package/cjs/domain/deflate/index.js.map +0 -1
- package/cjs/domain/deflate/types.d.ts +0 -26
- package/cjs/domain/deflate/types.js +0 -3
- package/cjs/domain/deflate/types.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 -5
- package/cjs/domain/error/trackRuntimeError.js +0 -21
- 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 -24
- 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 -15
- 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 -15
- package/cjs/domain/session/sessionStoreOperations.js +0 -104
- 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 -48
- 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 -40
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -14
- 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 -11
- 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 -112
- package/cjs/domain/telemetry/telemetry.js +0 -146
- package/cjs/domain/telemetry/telemetry.js.map +0 -1
- package/cjs/domain/telemetry/telemetryEvent.types.d.ts +0 -375
- package/cjs/domain/telemetry/telemetryEvent.types.js +0 -7
- package/cjs/domain/telemetry/telemetryEvent.types.js.map +0 -1
- package/cjs/domain/tracekit/computeStackTrace.d.ts +0 -5
- package/cjs/domain/tracekit/computeStackTrace.js +0 -118
- package/cjs/domain/tracekit/computeStackTrace.js.map +0 -1
- package/cjs/domain/tracekit/index.d.ts +0 -3
- package/cjs/domain/tracekit/index.js +0 -8
- package/cjs/domain/tracekit/index.js.map +0 -1
- package/cjs/domain/tracekit/tracekit.d.ts +0 -35
- package/cjs/domain/tracekit/tracekit.js +0 -95
- package/cjs/domain/tracekit/tracekit.js.map +0 -1
- package/cjs/domain/tracekit/types.d.ts +0 -44
- package/cjs/domain/tracekit/types.js +0 -3
- package/cjs/domain/tracekit/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/index.d.ts +0 -63
- package/cjs/index.js +0 -155
- package/cjs/index.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 -45
- package/cjs/tools/display.js.map +0 -1
- package/cjs/tools/experimentalFeatures.d.ts +0 -24
- package/cjs/tools/experimentalFeatures.js +0 -47
- 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 -19
- package/cjs/tools/instrumentMethod.js +0 -83
- 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 -9
- 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 -44
- 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/contextManager.d.ts +0 -21
- package/cjs/tools/serialisation/contextManager.js +0 -70
- package/cjs/tools/serialisation/contextManager.js.map +0 -1
- package/cjs/tools/serialisation/heavyCustomerDataWarning.d.ts +0 -8
- package/cjs/tools/serialisation/heavyCustomerDataWarning.js +0 -18
- package/cjs/tools/serialisation/heavyCustomerDataWarning.js.map +0 -1
- package/cjs/tools/serialisation/jsonStringify.d.ts +0 -14
- 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 -2
- package/cjs/tools/utils/browserDetection.js +0 -12
- 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 -7
- package/cjs/tools/utils/stringUtils.js +0 -32
- 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 -19
- package/cjs/transport/batch.js +0 -79
- 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 -48
- package/cjs/transport/flushController.js +0 -97
- package/cjs/transport/flushController.js.map +0 -1
- package/cjs/transport/httpRequest.d.ts +0 -37
- package/cjs/transport/httpRequest.js +0 -91
- 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 -15
- package/cjs/transport/startBatchWithReplica.js +0 -37
- 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 -76
- package/esm/browser/addEventListener.js +0 -47
- package/esm/browser/addEventListener.js.map +0 -1
- package/esm/browser/cookie.d.ts +0 -10
- package/esm/browser/cookie.js +0 -61
- package/esm/browser/cookie.js.map +0 -1
- package/esm/browser/fetchObservable.d.ts +0 -23
- package/esm/browser/fetchObservable.js +0 -70
- package/esm/browser/fetchObservable.js.map +0 -1
- package/esm/browser/pageExitObservable.d.ts +0 -14
- package/esm/browser/pageExitObservable.js +0 -53
- 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 -22
- package/esm/browser/xhrObservable.js +0 -89
- package/esm/browser/xhrObservable.js.map +0 -1
- package/esm/domain/configuration/configuration.d.ts +0 -67
- package/esm/domain/configuration/configuration.js +0 -90
- package/esm/domain/configuration/configuration.js.map +0 -1
- package/esm/domain/configuration/endpointBuilder.d.ts +0 -14
- package/esm/domain/configuration/endpointBuilder.js +0 -90
- package/esm/domain/configuration/endpointBuilder.js.map +0 -1
- package/esm/domain/configuration/index.d.ts +0 -3
- package/esm/domain/configuration/index.js +0 -4
- 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/console/consoleObservable.d.ts +0 -11
- package/esm/domain/console/consoleObservable.js +0 -70
- package/esm/domain/console/consoleObservable.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 -26
- package/esm/domain/deflate/types.js +0 -2
- package/esm/domain/deflate/types.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 -5
- package/esm/domain/error/trackRuntimeError.js +0 -17
- 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 -24
- 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 -15
- 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 -15
- package/esm/domain/session/sessionStoreOperations.js +0 -99
- 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 -42
- 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 -35
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -14
- 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 -11
- 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 -112
- package/esm/domain/telemetry/telemetry.js +0 -134
- package/esm/domain/telemetry/telemetry.js.map +0 -1
- package/esm/domain/telemetry/telemetryEvent.types.d.ts +0 -375
- package/esm/domain/telemetry/telemetryEvent.types.js +0 -6
- package/esm/domain/telemetry/telemetryEvent.types.js.map +0 -1
- package/esm/domain/tracekit/computeStackTrace.d.ts +0 -5
- package/esm/domain/tracekit/computeStackTrace.js +0 -114
- package/esm/domain/tracekit/computeStackTrace.js.map +0 -1
- package/esm/domain/tracekit/index.d.ts +0 -3
- package/esm/domain/tracekit/index.js +0 -3
- package/esm/domain/tracekit/index.js.map +0 -1
- package/esm/domain/tracekit/tracekit.d.ts +0 -35
- package/esm/domain/tracekit/tracekit.js +0 -91
- package/esm/domain/tracekit/tracekit.js.map +0 -1
- package/esm/domain/tracekit/types.d.ts +0 -44
- package/esm/domain/tracekit/types.js +0 -2
- package/esm/domain/tracekit/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 -63
- package/esm/index.js +0 -61
- 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 -41
- package/esm/tools/display.js.map +0 -1
- package/esm/tools/experimentalFeatures.d.ts +0 -24
- package/esm/tools/experimentalFeatures.js +0 -40
- 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 -19
- package/esm/tools/instrumentMethod.js +0 -77
- 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 -9
- 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 -40
- 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/contextManager.d.ts +0 -21
- package/esm/tools/serialisation/contextManager.js +0 -66
- package/esm/tools/serialisation/contextManager.js.map +0 -1
- package/esm/tools/serialisation/heavyCustomerDataWarning.d.ts +0 -8
- package/esm/tools/serialisation/heavyCustomerDataWarning.js +0 -14
- package/esm/tools/serialisation/heavyCustomerDataWarning.js.map +0 -1
- package/esm/tools/serialisation/jsonStringify.d.ts +0 -14
- 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 -2
- package/esm/tools/utils/browserDetection.js +0 -7
- 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 -7
- package/esm/tools/utils/stringUtils.js +0 -26
- 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 -19
- package/esm/transport/batch.js +0 -76
- 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 -48
- package/esm/transport/flushController.js +0 -93
- package/esm/transport/flushController.js.map +0 -1
- package/esm/transport/httpRequest.d.ts +0 -37
- package/esm/transport/httpRequest.js +0 -85
- 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 -15
- package/esm/transport/startBatchWithReplica.js +0 -33
- 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/tracekit/computeStackTrace.ts +0 -141
- package/src/domain/tracekit/index.ts +0 -3
- package/src/domain/tracekit/tracekit.ts +0 -96
- package/src/domain/tracekit/types.ts +0 -47
- 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/tools/serialisation/contextManager.ts +0 -79
- package/src/tools/serialisation/heavyCustomerDataWarning.ts +0 -26
- package/src/transport/startBatchWithReplica.ts +0 -52
package/package.json
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openobserve/browser-core",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.12-beta.13",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"module": "esm/index.js",
|
|
7
7
|
"types": "cjs/index.d.ts",
|
|
8
8
|
"sideEffects": false,
|
|
9
9
|
"scripts": {
|
|
10
|
-
"build": "
|
|
11
|
-
"build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json && yarn replace-build-env cjs",
|
|
12
|
-
"build:esm": "rm -rf esm && tsc -p tsconfig.esm.json && yarn replace-build-env esm",
|
|
13
|
-
"replace-build-env": "node ../../scripts/build/replace-build-env.js"
|
|
10
|
+
"build": "node ../../scripts/build/build-package.ts --modules"
|
|
14
11
|
},
|
|
15
12
|
"repository": {
|
|
16
13
|
"type": "git",
|
|
17
14
|
"url": "https://github.com/openobserve/browser-sdk.git",
|
|
18
15
|
"directory": "packages/core"
|
|
19
16
|
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@types/pako": "2.0.4",
|
|
19
|
+
"pako": "2.1.0"
|
|
20
|
+
},
|
|
20
21
|
"volta": {
|
|
21
22
|
"extends": "../../package.json"
|
|
22
23
|
},
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { InitConfiguration } from '../domain/configuration'
|
|
2
|
+
import { display } from '../tools/display'
|
|
3
|
+
|
|
4
|
+
export function displayAlreadyInitializedError(sdkName: 'DD_RUM' | 'DD_LOGS', initConfiguration: InitConfiguration) {
|
|
5
|
+
if (!initConfiguration.silentMultipleInit) {
|
|
6
|
+
display.error(`${sdkName} is already initialized.`)
|
|
7
|
+
}
|
|
8
|
+
}
|
package/src/boot/init.ts
CHANGED
|
@@ -1,24 +1,35 @@
|
|
|
1
1
|
import { catchUserErrors } from '../tools/catchUserErrors'
|
|
2
2
|
import { setDebugMode } from '../tools/monitor'
|
|
3
|
-
import {
|
|
3
|
+
import { display } from '../tools/display'
|
|
4
4
|
|
|
5
5
|
// replaced at build time
|
|
6
6
|
declare const __BUILD_ENV__SDK_VERSION__: string
|
|
7
7
|
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
export interface PublicApi {
|
|
9
|
+
/**
|
|
10
|
+
* Version of the Logs browser SDK
|
|
11
|
+
*/
|
|
12
|
+
version: string
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
/**
|
|
15
|
+
* For CDN async setup: Early RUM API calls must be wrapped in the `window.DD_RUM.onReady()` callback. This ensures the code only gets executed once the SDK is properly loaded.
|
|
16
|
+
*
|
|
17
|
+
* See [CDN async setup](https://docs.datadoghq.com/real_user_monitoring/browser/#cdn-async) for further information.
|
|
18
|
+
*/
|
|
19
|
+
onReady: (callback: () => void) => void
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function makePublicApi<T extends PublicApi>(stub: Omit<T, keyof PublicApi>): T {
|
|
23
|
+
const publicApi = {
|
|
24
|
+
version: __BUILD_ENV__SDK_VERSION__,
|
|
25
|
+
// This API method is intentionally not monitored, since the only thing executed is the
|
|
26
|
+
// user-provided 'callback'. All SDK usages executed in the callback should be monitored, and
|
|
27
|
+
// we don't want to interfere with the user uncaught exceptions.
|
|
28
|
+
onReady(callback: () => void) {
|
|
29
|
+
callback()
|
|
19
30
|
},
|
|
20
|
-
stub
|
|
21
|
-
|
|
31
|
+
...stub,
|
|
32
|
+
}
|
|
22
33
|
|
|
23
34
|
// Add a "hidden" property to set debug mode. We define it that way to hide it
|
|
24
35
|
// as much as possible but of course it's not a real protection.
|
|
@@ -29,11 +40,14 @@ export function makePublicApi<T>(stub: T): T & { onReady(callback: () => void):
|
|
|
29
40
|
enumerable: false,
|
|
30
41
|
})
|
|
31
42
|
|
|
32
|
-
return publicApi
|
|
43
|
+
return publicApi as T
|
|
33
44
|
}
|
|
34
45
|
|
|
35
46
|
export function defineGlobal<Global, Name extends keyof Global>(global: Global, name: Name, api: Global[Name]) {
|
|
36
|
-
const existingGlobalVariable = global[name] as { q?: Array<() => void
|
|
47
|
+
const existingGlobalVariable = global[name] as { q?: Array<() => void>; version?: string } | undefined
|
|
48
|
+
if (existingGlobalVariable && !existingGlobalVariable.q && existingGlobalVariable.version) {
|
|
49
|
+
display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.')
|
|
50
|
+
}
|
|
37
51
|
global[name] = api
|
|
38
52
|
if (existingGlobalVariable && existingGlobalVariable.q) {
|
|
39
53
|
existingGlobalVariable.q.forEach((fn) => catchUserErrors(fn, 'onReady callback threw an error:')())
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { monitor } from '../tools/monitor'
|
|
2
2
|
import { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue'
|
|
3
|
-
import type {
|
|
4
|
-
|
|
3
|
+
import type { CookieStore, CookieStoreEventMap, VisualViewport, VisualViewportEventMap } from './browser.types'
|
|
4
|
+
|
|
5
|
+
export type TrustableEvent<E extends Event = Event> = E & { __ddIsTrusted?: boolean }
|
|
5
6
|
|
|
6
7
|
export const enum DOM_EVENT {
|
|
7
8
|
BEFORE_UNLOAD = 'beforeunload',
|
|
@@ -37,6 +38,7 @@ export const enum DOM_EVENT {
|
|
|
37
38
|
PAUSE = 'pause',
|
|
38
39
|
SECURITY_POLICY_VIOLATION = 'securitypolicyviolation',
|
|
39
40
|
SELECTION_CHANGE = 'selectionchange',
|
|
41
|
+
STORAGE = 'storage',
|
|
40
42
|
}
|
|
41
43
|
|
|
42
44
|
interface AddEventListenerOptions {
|
|
@@ -54,23 +56,25 @@ type EventMapFor<T> = T extends Window
|
|
|
54
56
|
visibilitychange: Event
|
|
55
57
|
}
|
|
56
58
|
: T extends Document
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
59
|
+
? DocumentEventMap
|
|
60
|
+
: T extends HTMLElement
|
|
61
|
+
? HTMLElementEventMap
|
|
62
|
+
: T extends VisualViewport
|
|
63
|
+
? VisualViewportEventMap
|
|
64
|
+
: T extends ShadowRoot
|
|
65
|
+
? // ShadowRootEventMap is not yet defined in our supported TS version. Instead, use
|
|
66
|
+
// GlobalEventHandlersEventMap which is more than enough as we only need to listen for events bubbling
|
|
67
|
+
// through the ShadowRoot like "change" or "input"
|
|
68
|
+
GlobalEventHandlersEventMap
|
|
69
|
+
: T extends XMLHttpRequest
|
|
70
|
+
? XMLHttpRequestEventMap
|
|
71
|
+
: T extends Performance
|
|
72
|
+
? PerformanceEventMap
|
|
73
|
+
: T extends Worker
|
|
74
|
+
? WorkerEventMap
|
|
75
|
+
: T extends CookieStore
|
|
76
|
+
? CookieStoreEventMap
|
|
77
|
+
: Record<never, never>
|
|
74
78
|
|
|
75
79
|
/**
|
|
76
80
|
* Add an event listener to an event target object (Window, Element, mock object...). This provides
|
|
@@ -83,10 +87,10 @@ type EventMapFor<T> = T extends Window
|
|
|
83
87
|
* * returns a `stop` function to remove the listener
|
|
84
88
|
*/
|
|
85
89
|
export function addEventListener<Target extends EventTarget, EventName extends keyof EventMapFor<Target> & string>(
|
|
86
|
-
configuration:
|
|
90
|
+
configuration: { allowUntrustedEvents?: boolean | undefined },
|
|
87
91
|
eventTarget: Target,
|
|
88
92
|
eventName: EventName,
|
|
89
|
-
listener: (event: EventMapFor<Target>[EventName]) => void,
|
|
93
|
+
listener: (event: EventMapFor<Target>[EventName] & { type: EventName }) => void,
|
|
90
94
|
options?: AddEventListenerOptions
|
|
91
95
|
) {
|
|
92
96
|
return addEventListeners(configuration, eventTarget, [eventName], listener, options)
|
|
@@ -105,29 +109,34 @@ export function addEventListener<Target extends EventTarget, EventName extends k
|
|
|
105
109
|
* * with `once: true`, the listener will be called at most once, even if different events are listened
|
|
106
110
|
*/
|
|
107
111
|
export function addEventListeners<Target extends EventTarget, EventName extends keyof EventMapFor<Target> & string>(
|
|
108
|
-
|
|
112
|
+
configuration: { allowUntrustedEvents?: boolean | undefined },
|
|
109
113
|
eventTarget: Target,
|
|
110
114
|
eventNames: EventName[],
|
|
111
|
-
listener: (event: EventMapFor<Target>[EventName]) => void,
|
|
115
|
+
listener: (event: EventMapFor<Target>[EventName] & { type: EventName }) => void,
|
|
112
116
|
{ once, capture, passive }: AddEventListenerOptions = {}
|
|
113
117
|
) {
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
const listenerWithMonitor = monitor((event: TrustableEvent) => {
|
|
119
|
+
if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {
|
|
120
|
+
return
|
|
121
|
+
}
|
|
122
|
+
if (once) {
|
|
123
|
+
stop()
|
|
124
|
+
}
|
|
125
|
+
listener(event as unknown as EventMapFor<Target>[EventName] & { type: EventName })
|
|
126
|
+
})
|
|
122
127
|
|
|
123
128
|
const options = passive ? { capture, passive } : capture
|
|
124
129
|
|
|
125
|
-
|
|
126
|
-
|
|
130
|
+
// Use the window.EventTarget.prototype when possible to avoid wrong overrides (e.g: https://github.com/salesforce/lwc/issues/1824)
|
|
131
|
+
const listenerTarget =
|
|
132
|
+
window.EventTarget && eventTarget instanceof EventTarget ? window.EventTarget.prototype : eventTarget
|
|
133
|
+
|
|
134
|
+
const add = getZoneJsOriginalValue(listenerTarget, 'addEventListener')
|
|
135
|
+
eventNames.forEach((eventName) => add.call(eventTarget, eventName, listenerWithMonitor, options))
|
|
127
136
|
|
|
128
137
|
function stop() {
|
|
129
|
-
const remove = getZoneJsOriginalValue(
|
|
130
|
-
eventNames.forEach((eventName) => remove.call(eventTarget, eventName,
|
|
138
|
+
const remove = getZoneJsOriginalValue(listenerTarget, 'removeEventListener')
|
|
139
|
+
eventNames.forEach((eventName) => remove.call(eventTarget, eventName, listenerWithMonitor, options))
|
|
131
140
|
}
|
|
132
141
|
|
|
133
142
|
return {
|
|
@@ -38,3 +38,45 @@ export interface VisualViewport extends EventTarget {
|
|
|
38
38
|
options?: boolean | EventListenerOptions
|
|
39
39
|
): void
|
|
40
40
|
}
|
|
41
|
+
|
|
42
|
+
export interface WeakRef<T extends object> {
|
|
43
|
+
readonly [Symbol.toStringTag]: 'WeakRef'
|
|
44
|
+
|
|
45
|
+
deref(): T | undefined
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface WeakRefConstructor {
|
|
49
|
+
readonly prototype: WeakRef<any>
|
|
50
|
+
|
|
51
|
+
new <T extends object>(target: T): WeakRef<T>
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface CookieStore extends EventTarget {
|
|
55
|
+
get(name: string): Promise<unknown>
|
|
56
|
+
getAll(name?: string): Promise<
|
|
57
|
+
Array<{
|
|
58
|
+
name: string
|
|
59
|
+
value: string
|
|
60
|
+
domain?: string
|
|
61
|
+
path?: string
|
|
62
|
+
expires?: number
|
|
63
|
+
secure?: boolean
|
|
64
|
+
sameSite?: 'strict' | 'lax' | 'none'
|
|
65
|
+
partitioned?: boolean
|
|
66
|
+
}>
|
|
67
|
+
>
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface CookieStoreEventMap {
|
|
71
|
+
change: CookieChangeEvent
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface CookieChangeItem {
|
|
75
|
+
name: string
|
|
76
|
+
value: string | undefined
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export type CookieChangeEvent = Event & {
|
|
80
|
+
changed: CookieChangeItem[]
|
|
81
|
+
deleted: CookieChangeItem[]
|
|
82
|
+
}
|
package/src/browser/cookie.ts
CHANGED
|
@@ -1,27 +1,65 @@
|
|
|
1
1
|
import { display } from '../tools/display'
|
|
2
2
|
import { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils'
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
findAllCommaSeparatedValues,
|
|
5
|
+
findCommaSeparatedValue,
|
|
6
|
+
findCommaSeparatedValues,
|
|
7
|
+
generateUUID,
|
|
8
|
+
} from '../tools/utils/stringUtils'
|
|
9
|
+
import { buildUrl } from '../tools/utils/urlPolyfill'
|
|
4
10
|
|
|
5
11
|
export interface CookieOptions {
|
|
6
12
|
secure?: boolean
|
|
7
13
|
crossSite?: boolean
|
|
14
|
+
partitioned?: boolean
|
|
8
15
|
domain?: string
|
|
9
16
|
}
|
|
10
17
|
|
|
11
|
-
export function setCookie(name: string, value: string, expireDelay: number, options?: CookieOptions) {
|
|
18
|
+
export function setCookie(name: string, value: string, expireDelay: number = 0, options?: CookieOptions) {
|
|
12
19
|
const date = new Date()
|
|
13
20
|
date.setTime(date.getTime() + expireDelay)
|
|
14
21
|
const expires = `expires=${date.toUTCString()}`
|
|
15
22
|
const sameSite = options && options.crossSite ? 'none' : 'strict'
|
|
16
23
|
const domain = options && options.domain ? `;domain=${options.domain}` : ''
|
|
17
24
|
const secure = options && options.secure ? ';secure' : ''
|
|
18
|
-
|
|
25
|
+
const partitioned = options && options.partitioned ? ';partitioned' : ''
|
|
26
|
+
document.cookie = `${name}=${value};${expires};path=/;samesite=${sameSite}${domain}${secure}${partitioned}`
|
|
19
27
|
}
|
|
20
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Returns the value of the cookie with the given name
|
|
31
|
+
* If there are multiple cookies with the same name, returns the first one
|
|
32
|
+
*/
|
|
21
33
|
export function getCookie(name: string) {
|
|
22
34
|
return findCommaSeparatedValue(document.cookie, name)
|
|
23
35
|
}
|
|
24
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Returns all the values of the cookies with the given name
|
|
39
|
+
*/
|
|
40
|
+
export function getCookies(name: string): string[] {
|
|
41
|
+
return findAllCommaSeparatedValues(document.cookie).get(name) || []
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
let initCookieParsed: Map<string, string> | undefined
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Returns a cached value of the cookie. Use this during SDK initialization (and whenever possible)
|
|
48
|
+
* to avoid accessing document.cookie multiple times.
|
|
49
|
+
*
|
|
50
|
+
* ⚠️ If there are multiple cookies with the same name, returns the LAST one (unlike `getCookie()`)
|
|
51
|
+
*/
|
|
52
|
+
export function getInitCookie(name: string) {
|
|
53
|
+
if (!initCookieParsed) {
|
|
54
|
+
initCookieParsed = findCommaSeparatedValues(document.cookie)
|
|
55
|
+
}
|
|
56
|
+
return initCookieParsed.get(name)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function resetInitCookies() {
|
|
60
|
+
initCookieParsed = undefined
|
|
61
|
+
}
|
|
62
|
+
|
|
25
63
|
export function deleteCookie(name: string, options?: CookieOptions) {
|
|
26
64
|
setCookie(name, '', 0, options)
|
|
27
65
|
}
|
|
@@ -51,21 +89,37 @@ export function areCookiesAuthorized(options: CookieOptions): boolean {
|
|
|
51
89
|
* https://web.dev/same-site-same-origin/#site
|
|
52
90
|
*/
|
|
53
91
|
let getCurrentSiteCache: string | undefined
|
|
54
|
-
export function getCurrentSite() {
|
|
92
|
+
export function getCurrentSite(hostname = location.hostname, referrer = document.referrer): string | undefined {
|
|
55
93
|
if (getCurrentSiteCache === undefined) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
94
|
+
const defaultHostName = getCookieDefaultHostName(hostname, referrer)
|
|
95
|
+
if (defaultHostName) {
|
|
96
|
+
// Use a unique cookie name to avoid issues when the SDK is initialized multiple times during
|
|
97
|
+
// the test cookie lifetime
|
|
98
|
+
const testCookieName = `oo_site_test_${generateUUID()}`
|
|
99
|
+
const testCookieValue = 'test'
|
|
60
100
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
101
|
+
const domainLevels = defaultHostName.split('.')
|
|
102
|
+
let candidateDomain = domainLevels.pop()!
|
|
103
|
+
while (domainLevels.length && !getCookie(testCookieName)) {
|
|
104
|
+
candidateDomain = `${domainLevels.pop()!}.${candidateDomain}`
|
|
105
|
+
setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain })
|
|
106
|
+
}
|
|
107
|
+
deleteCookie(testCookieName, { domain: candidateDomain })
|
|
108
|
+
getCurrentSiteCache = candidateDomain
|
|
66
109
|
}
|
|
67
|
-
deleteCookie(testCookieName, { domain: candidateDomain })
|
|
68
|
-
getCurrentSiteCache = candidateDomain
|
|
69
110
|
}
|
|
111
|
+
|
|
70
112
|
return getCurrentSiteCache
|
|
71
113
|
}
|
|
114
|
+
|
|
115
|
+
function getCookieDefaultHostName(hostname: string, referrer: string) {
|
|
116
|
+
try {
|
|
117
|
+
return hostname || buildUrl(referrer).hostname
|
|
118
|
+
} catch {
|
|
119
|
+
// Ignore
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export function resetGetCurrentSite() {
|
|
124
|
+
getCurrentSiteCache = undefined
|
|
125
|
+
}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
+
import type { InstrumentedMethodCall } from '../tools/instrumentMethod'
|
|
1
2
|
import { instrumentMethod } from '../tools/instrumentMethod'
|
|
2
|
-
import {
|
|
3
|
+
import { monitorError } from '../tools/monitor'
|
|
3
4
|
import { Observable } from '../tools/observable'
|
|
4
5
|
import type { ClocksState } from '../tools/utils/timeUtils'
|
|
5
6
|
import { clocksNow } from '../tools/utils/timeUtils'
|
|
6
7
|
import { normalizeUrl } from '../tools/utils/urlPolyfill'
|
|
8
|
+
import type { GlobalObject } from '../tools/globalObject'
|
|
9
|
+
import { globalObject } from '../tools/globalObject'
|
|
10
|
+
import { readBytesFromStream } from '../tools/readBytesFromStream'
|
|
11
|
+
import { tryToClone } from '../tools/utils/responseUtils'
|
|
7
12
|
|
|
8
13
|
interface FetchContextBase {
|
|
9
14
|
method: string
|
|
@@ -11,6 +16,7 @@ interface FetchContextBase {
|
|
|
11
16
|
input: unknown
|
|
12
17
|
init?: RequestInit
|
|
13
18
|
url: string
|
|
19
|
+
handlingStack?: string
|
|
14
20
|
}
|
|
15
21
|
|
|
16
22
|
export interface FetchStartContext extends FetchContextBase {
|
|
@@ -21,6 +27,7 @@ export interface FetchResolveContext extends FetchContextBase {
|
|
|
21
27
|
state: 'resolve'
|
|
22
28
|
status: number
|
|
23
29
|
response?: Response
|
|
30
|
+
responseBody?: string
|
|
24
31
|
responseType?: string
|
|
25
32
|
isAborted: boolean
|
|
26
33
|
error?: Error
|
|
@@ -28,48 +35,64 @@ export interface FetchResolveContext extends FetchContextBase {
|
|
|
28
35
|
|
|
29
36
|
export type FetchContext = FetchStartContext | FetchResolveContext
|
|
30
37
|
|
|
38
|
+
type ResponseBodyActionGetter = (context: FetchResolveContext) => ResponseBodyAction
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Action to take with the response body of a fetch request.
|
|
42
|
+
* Values are ordered by priority: higher values take precedence when multiple actions are requested.
|
|
43
|
+
*/
|
|
44
|
+
export const enum ResponseBodyAction {
|
|
45
|
+
IGNORE = 0,
|
|
46
|
+
// TODO(next-major): Remove the "WAIT" action when `trackEarlyRequests` is removed, as the
|
|
47
|
+
// duration of fetch requests will always come from PerformanceResourceTiming
|
|
48
|
+
WAIT = 1,
|
|
49
|
+
COLLECT = 2,
|
|
50
|
+
}
|
|
51
|
+
|
|
31
52
|
let fetchObservable: Observable<FetchContext> | undefined
|
|
53
|
+
const responseBodyActionGetters: ResponseBodyActionGetter[] = []
|
|
32
54
|
|
|
33
|
-
export function initFetchObservable() {
|
|
55
|
+
export function initFetchObservable({ responseBodyAction }: { responseBodyAction?: ResponseBodyActionGetter } = {}) {
|
|
56
|
+
if (responseBodyAction) {
|
|
57
|
+
responseBodyActionGetters.push(responseBodyAction)
|
|
58
|
+
}
|
|
34
59
|
if (!fetchObservable) {
|
|
35
60
|
fetchObservable = createFetchObservable()
|
|
36
61
|
}
|
|
37
62
|
return fetchObservable
|
|
38
63
|
}
|
|
39
64
|
|
|
65
|
+
export function resetFetchObservable() {
|
|
66
|
+
fetchObservable = undefined
|
|
67
|
+
responseBodyActionGetters.length = 0
|
|
68
|
+
}
|
|
69
|
+
|
|
40
70
|
function createFetchObservable() {
|
|
41
|
-
|
|
42
|
-
if (!
|
|
71
|
+
return new Observable<FetchContext>((observable) => {
|
|
72
|
+
if (!globalObject.fetch) {
|
|
43
73
|
return
|
|
44
74
|
}
|
|
45
75
|
|
|
46
|
-
const { stop } = instrumentMethod(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
(originalFetch) =>
|
|
50
|
-
function (input, init) {
|
|
51
|
-
let responsePromise: Promise<Response>
|
|
52
|
-
|
|
53
|
-
const context = callMonitored(beforeSend, null, [observable, input, init])
|
|
54
|
-
if (context) {
|
|
55
|
-
responsePromise = originalFetch.call(this, context.input as RequestInfo, context.init)
|
|
56
|
-
callMonitored(afterSend, null, [observable, responsePromise, context])
|
|
57
|
-
} else {
|
|
58
|
-
responsePromise = originalFetch.call(this, input, init)
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return responsePromise
|
|
62
|
-
}
|
|
63
|
-
)
|
|
76
|
+
const { stop } = instrumentMethod(globalObject, 'fetch', (call) => beforeSend(call, observable), {
|
|
77
|
+
computeHandlingStack: true,
|
|
78
|
+
})
|
|
64
79
|
|
|
65
80
|
return stop
|
|
66
81
|
})
|
|
67
|
-
|
|
68
|
-
return observable
|
|
69
82
|
}
|
|
70
83
|
|
|
71
|
-
function beforeSend(
|
|
72
|
-
|
|
84
|
+
function beforeSend(
|
|
85
|
+
{ parameters, onPostCall, handlingStack }: InstrumentedMethodCall<GlobalObject, 'fetch'>,
|
|
86
|
+
observable: Observable<FetchContext>
|
|
87
|
+
) {
|
|
88
|
+
const [input, init] = parameters
|
|
89
|
+
let methodFromParams = init && init.method
|
|
90
|
+
|
|
91
|
+
if (methodFromParams === undefined && input instanceof Request) {
|
|
92
|
+
methodFromParams = input.method
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const method = methodFromParams !== undefined ? String(methodFromParams).toUpperCase() : 'GET'
|
|
73
96
|
const url = input instanceof Request ? input.url : normalizeUrl(String(input))
|
|
74
97
|
const startClocks = clocksNow()
|
|
75
98
|
|
|
@@ -80,33 +103,65 @@ function beforeSend(observable: Observable<FetchContext>, input: unknown, init?:
|
|
|
80
103
|
method,
|
|
81
104
|
startClocks,
|
|
82
105
|
url,
|
|
106
|
+
handlingStack,
|
|
83
107
|
}
|
|
84
108
|
|
|
85
109
|
observable.notify(context)
|
|
86
110
|
|
|
87
|
-
|
|
111
|
+
// Those properties can be changed by observable subscribers
|
|
112
|
+
parameters[0] = context.input as RequestInfo | URL
|
|
113
|
+
parameters[1] = context.init
|
|
114
|
+
|
|
115
|
+
onPostCall((responsePromise) => {
|
|
116
|
+
afterSend(observable, responsePromise, context).catch(monitorError)
|
|
117
|
+
})
|
|
88
118
|
}
|
|
89
119
|
|
|
90
|
-
function afterSend(
|
|
120
|
+
async function afterSend(
|
|
91
121
|
observable: Observable<FetchContext>,
|
|
92
122
|
responsePromise: Promise<Response>,
|
|
93
123
|
startContext: FetchStartContext
|
|
94
124
|
) {
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
context.
|
|
106
|
-
|
|
107
|
-
}
|
|
125
|
+
const context = startContext as unknown as FetchResolveContext
|
|
126
|
+
context.state = 'resolve'
|
|
127
|
+
|
|
128
|
+
let response: Response
|
|
129
|
+
|
|
130
|
+
try {
|
|
131
|
+
response = await responsePromise
|
|
132
|
+
} catch (error) {
|
|
133
|
+
context.status = 0
|
|
134
|
+
context.isAborted =
|
|
135
|
+
context.init?.signal?.aborted || (error instanceof DOMException && error.code === DOMException.ABORT_ERR)
|
|
136
|
+
context.error = error as Error
|
|
108
137
|
observable.notify(context)
|
|
138
|
+
return
|
|
109
139
|
}
|
|
110
140
|
|
|
111
|
-
|
|
141
|
+
context.response = response
|
|
142
|
+
context.status = response.status
|
|
143
|
+
context.responseType = response.type
|
|
144
|
+
context.isAborted = false
|
|
145
|
+
|
|
146
|
+
const responseBodyCondition = responseBodyActionGetters.reduce(
|
|
147
|
+
(action, getter) => Math.max(action, getter(context)),
|
|
148
|
+
ResponseBodyAction.IGNORE
|
|
149
|
+
) as ResponseBodyAction
|
|
150
|
+
|
|
151
|
+
if (responseBodyCondition !== ResponseBodyAction.IGNORE) {
|
|
152
|
+
const clonedResponse = tryToClone(response)
|
|
153
|
+
if (clonedResponse && clonedResponse.body) {
|
|
154
|
+
try {
|
|
155
|
+
const bytes = await readBytesFromStream(clonedResponse.body, {
|
|
156
|
+
collectStreamBody: responseBodyCondition === ResponseBodyAction.COLLECT,
|
|
157
|
+
})
|
|
158
|
+
context.responseBody = bytes && new TextDecoder().decode(bytes)
|
|
159
|
+
} catch {
|
|
160
|
+
// Ignore errors when reading the response body (e.g., stream aborted, network errors)
|
|
161
|
+
// This is not critical and should not be reported as an SDK error
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
observable.notify(context)
|
|
112
167
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { isExperimentalFeatureEnabled, ExperimentalFeature } from '../tools/experimentalFeatures'
|
|
2
1
|
import { Observable } from '../tools/observable'
|
|
3
|
-
import { objectValues
|
|
4
|
-
import { noop } from '../tools/utils/functionUtils'
|
|
2
|
+
import { objectValues } from '../tools/utils/polyfills'
|
|
5
3
|
import type { Configuration } from '../domain/configuration'
|
|
6
4
|
import { addEventListeners, addEventListener, DOM_EVENT } from './addEventListener'
|
|
7
5
|
|
|
@@ -14,24 +12,18 @@ export const PageExitReason = {
|
|
|
14
12
|
|
|
15
13
|
export type PageExitReason = (typeof PageExitReason)[keyof typeof PageExitReason]
|
|
16
14
|
|
|
17
|
-
export interface
|
|
15
|
+
export interface PageMayExitEvent {
|
|
18
16
|
reason: PageExitReason
|
|
19
17
|
}
|
|
20
18
|
|
|
21
|
-
export function
|
|
22
|
-
|
|
23
|
-
const pagehideEnabled = isExperimentalFeatureEnabled(ExperimentalFeature.PAGEHIDE)
|
|
19
|
+
export function createPageMayExitObservable(configuration: Configuration): Observable<PageMayExitEvent> {
|
|
20
|
+
return new Observable<PageMayExitEvent>((observable) => {
|
|
24
21
|
const { stop: stopListeners } = addEventListeners(
|
|
25
22
|
configuration,
|
|
26
23
|
window,
|
|
27
|
-
[DOM_EVENT.VISIBILITY_CHANGE, DOM_EVENT.FREEZE
|
|
24
|
+
[DOM_EVENT.VISIBILITY_CHANGE, DOM_EVENT.FREEZE],
|
|
28
25
|
(event) => {
|
|
29
|
-
if (event.type === DOM_EVENT.
|
|
30
|
-
/**
|
|
31
|
-
* Only event that detect page unload events while being compatible with the back/forward cache (bfcache)
|
|
32
|
-
*/
|
|
33
|
-
observable.notify({ reason: PageExitReason.PAGEHIDE })
|
|
34
|
-
} else if (event.type === DOM_EVENT.VISIBILITY_CHANGE && document.visibilityState === 'hidden') {
|
|
26
|
+
if (event.type === DOM_EVENT.VISIBILITY_CHANGE && document.visibilityState === 'hidden') {
|
|
35
27
|
/**
|
|
36
28
|
* Only event that guarantee to fire on mobile devices when the page transitions to background state
|
|
37
29
|
* (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.
|
|
@@ -48,22 +40,17 @@ export function createPageExitObservable(configuration: Configuration): Observab
|
|
|
48
40
|
{ capture: true }
|
|
49
41
|
)
|
|
50
42
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
observable.notify({ reason: PageExitReason.UNLOADING })
|
|
55
|
-
}).stop
|
|
56
|
-
}
|
|
43
|
+
const stopBeforeUnloadListener = addEventListener(configuration, window, DOM_EVENT.BEFORE_UNLOAD, () => {
|
|
44
|
+
observable.notify({ reason: PageExitReason.UNLOADING })
|
|
45
|
+
}).stop
|
|
57
46
|
|
|
58
47
|
return () => {
|
|
59
48
|
stopListeners()
|
|
60
49
|
stopBeforeUnloadListener()
|
|
61
50
|
}
|
|
62
51
|
})
|
|
63
|
-
|
|
64
|
-
return observable
|
|
65
52
|
}
|
|
66
53
|
|
|
67
|
-
export function isPageExitReason(reason: string
|
|
68
|
-
return
|
|
54
|
+
export function isPageExitReason(reason: string): reason is PageExitReason {
|
|
55
|
+
return objectValues(PageExitReason).includes(reason as PageExitReason)
|
|
69
56
|
}
|