@openobserve/browser-core 0.3.4 → 0.4.0-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/README.md +1 -1
- package/cjs/boot/displayAlreadyInitializedError.js +6 -7
- package/cjs/boot/displayAlreadyInitializedError.js.map +1 -1
- package/cjs/boot/init.js +26 -34
- package/cjs/boot/init.js.map +1 -1
- package/cjs/browser/addEventListener.d.ts +10 -8
- package/cjs/browser/addEventListener.js +107 -50
- package/cjs/browser/addEventListener.js.map +1 -1
- package/cjs/browser/browser.types.d.ts +91 -4
- package/cjs/browser/cookie.d.ts +0 -1
- package/cjs/browser/cookie.js +65 -92
- package/cjs/browser/cookie.js.map +1 -1
- package/cjs/browser/cookieAccess.d.ts +16 -0
- package/cjs/browser/cookieAccess.js +114 -0
- package/cjs/browser/cookieAccess.js.map +1 -0
- package/cjs/browser/fetch.d.ts +9 -0
- package/cjs/browser/fetch.js +18 -0
- package/cjs/browser/fetch.js.map +1 -0
- package/cjs/browser/fetchObservable.d.ts +3 -3
- package/cjs/browser/fetchObservable.js +80 -92
- package/cjs/browser/fetchObservable.js.map +1 -1
- package/cjs/browser/pageMayExitObservable.d.ts +1 -2
- package/cjs/browser/pageMayExitObservable.js +41 -40
- package/cjs/browser/pageMayExitObservable.js.map +1 -1
- package/cjs/browser/runOnReadyState.d.ts +2 -3
- package/cjs/browser/runOnReadyState.js +18 -17
- package/cjs/browser/runOnReadyState.js.map +1 -1
- package/cjs/browser/xhrObservable.d.ts +8 -3
- package/cjs/browser/xhrObservable.js +65 -77
- package/cjs/browser/xhrObservable.js.map +1 -1
- package/cjs/domain/allowedTrackingOrigins.d.ts +1 -1
- package/cjs/domain/allowedTrackingOrigins.js +25 -23
- package/cjs/domain/allowedTrackingOrigins.js.map +1 -1
- package/cjs/domain/bufferedData.d.ts +20 -6
- package/cjs/domain/bufferedData.js +41 -19
- package/cjs/domain/bufferedData.js.map +1 -1
- package/cjs/domain/configuration/configuration.d.ts +44 -43
- package/cjs/domain/configuration/configuration.js +122 -125
- package/cjs/domain/configuration/configuration.js.map +1 -1
- package/cjs/domain/configuration/endpointBuilder.d.ts +42 -7
- package/cjs/domain/configuration/endpointBuilder.js +67 -74
- package/cjs/domain/configuration/endpointBuilder.js.map +1 -1
- package/cjs/domain/configuration/index.d.ts +2 -3
- package/cjs/domain/connectivity/connectivity.d.ts +1 -7
- package/cjs/domain/connectivity/connectivity.js +11 -11
- package/cjs/domain/connectivity/connectivity.js.map +1 -1
- package/cjs/domain/console/consoleObservable.d.ts +1 -1
- package/cjs/domain/console/consoleObservable.js +59 -74
- package/cjs/domain/console/consoleObservable.js.map +1 -1
- package/cjs/domain/context/contextConstants.js +24 -15
- package/cjs/domain/context/contextConstants.js.map +1 -1
- package/cjs/domain/context/contextManager.js +49 -54
- package/cjs/domain/context/contextManager.js.map +1 -1
- package/cjs/domain/context/contextUtils.js +11 -12
- package/cjs/domain/context/contextUtils.js.map +1 -1
- package/cjs/domain/context/defineContextMethod.d.ts +2 -2
- package/cjs/domain/context/defineContextMethod.js +15 -16
- package/cjs/domain/context/defineContextMethod.js.map +1 -1
- package/cjs/domain/context/storeContextManager.d.ts +1 -2
- package/cjs/domain/context/storeContextManager.js +30 -33
- package/cjs/domain/context/storeContextManager.js.map +1 -1
- package/cjs/domain/contexts/accountContext.d.ts +2 -2
- package/cjs/domain/contexts/accountContext.js +26 -29
- package/cjs/domain/contexts/accountContext.js.map +1 -1
- package/cjs/domain/contexts/globalContext.d.ts +2 -2
- package/cjs/domain/contexts/globalContext.js +17 -17
- package/cjs/domain/contexts/globalContext.js.map +1 -1
- package/cjs/domain/contexts/tabContext.d.ts +4 -0
- package/cjs/domain/contexts/tabContext.js +27 -0
- package/cjs/domain/contexts/tabContext.js.map +1 -0
- package/cjs/domain/contexts/telemetrySessionContext.d.ts +4 -0
- package/cjs/domain/contexts/telemetrySessionContext.js +17 -0
- package/cjs/domain/contexts/telemetrySessionContext.js.map +1 -0
- package/cjs/domain/contexts/userContext.d.ts +8 -3
- package/cjs/domain/contexts/userContext.js +29 -41
- package/cjs/domain/contexts/userContext.js.map +1 -1
- package/cjs/domain/deflate/deflate.types.js +11 -2
- package/cjs/domain/deflate/deflate.types.js.map +1 -1
- package/cjs/domain/error/error.d.ts +1 -1
- package/cjs/domain/error/error.js +62 -60
- package/cjs/domain/error/error.js.map +1 -1
- package/cjs/domain/error/error.types.d.ts +1 -1
- package/cjs/domain/error/error.types.js +24 -11
- package/cjs/domain/error/error.types.js.map +1 -1
- package/cjs/domain/error/trackRuntimeError.d.ts +3 -2
- package/cjs/domain/error/trackRuntimeError.js +41 -41
- package/cjs/domain/error/trackRuntimeError.js.map +1 -1
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +33 -38
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -1
- package/cjs/domain/extension/extensionUtils.js +18 -25
- package/cjs/domain/extension/extensionUtils.js.map +1 -1
- package/cjs/domain/intakeSites.d.ts +3 -3
- package/cjs/domain/intakeSites.js +23 -10
- package/cjs/domain/intakeSites.js.map +1 -1
- package/cjs/domain/report/reportObservable.d.ts +1 -2
- package/cjs/domain/report/reportObservable.js +73 -85
- package/cjs/domain/report/reportObservable.js.map +1 -1
- package/cjs/domain/resourceUtils.js +19 -17
- package/cjs/domain/resourceUtils.js.map +1 -1
- package/cjs/domain/sampler.d.ts +11 -0
- package/cjs/domain/sampler.js +40 -0
- package/cjs/domain/sampler.js.map +1 -0
- package/cjs/domain/session/sessionConstants.d.ts +1 -0
- package/cjs/domain/session/sessionConstants.js +19 -13
- package/cjs/domain/session/sessionConstants.js.map +1 -1
- package/cjs/domain/session/sessionManager.d.ts +13 -13
- package/cjs/domain/session/sessionManager.js +219 -193
- package/cjs/domain/session/sessionManager.js.map +1 -1
- package/cjs/domain/session/sessionState.d.ts +10 -1
- package/cjs/domain/session/sessionState.js +70 -55
- package/cjs/domain/session/sessionState.js.map +1 -1
- package/cjs/domain/session/sessionStateValidation.js +7 -8
- package/cjs/domain/session/sessionStateValidation.js.map +1 -1
- package/cjs/domain/session/sessionStore.d.ts +4 -33
- package/cjs/domain/session/sessionStore.js +42 -180
- package/cjs/domain/session/sessionStore.js.map +1 -1
- package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +7 -11
- package/cjs/domain/session/storeStrategies/sessionInCookie.js +89 -95
- package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +1 -1
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +1 -4
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +39 -38
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -1
- package/cjs/domain/session/storeStrategies/sessionInMemory.d.ts +12 -0
- package/cjs/domain/session/storeStrategies/sessionInMemory.js +35 -0
- package/cjs/domain/session/storeStrategies/sessionInMemory.js.map +1 -0
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -7
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +7 -4
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -1
- package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +9 -3
- package/cjs/domain/synthetics/syntheticsWorkerValues.js +33 -25
- package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +1 -1
- package/cjs/domain/tags.d.ts +0 -1
- package/cjs/domain/tags.js +22 -58
- package/cjs/domain/tags.js.map +1 -1
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js +8 -7
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +1 -1
- package/cjs/domain/telemetry/telemetry.d.ts +8 -8
- package/cjs/domain/telemetry/telemetry.js +196 -211
- package/cjs/domain/telemetry/telemetry.js.map +1 -1
- package/cjs/domain/telemetry/telemetryEvent.types.d.ts +97 -17
- package/cjs/domain/trackingConsent.d.ts +1 -0
- package/cjs/domain/trackingConsent.js +35 -24
- package/cjs/domain/trackingConsent.js.map +1 -1
- package/cjs/index.d.ts +25 -22
- package/cjs/index.js +281 -194
- package/cjs/tools/abstractLifeCycle.js +19 -26
- package/cjs/tools/abstractLifeCycle.js.map +1 -1
- package/cjs/tools/catchUserErrors.js +12 -12
- package/cjs/tools/catchUserErrors.js.map +1 -1
- package/cjs/tools/display.d.ts +1 -35
- package/cjs/tools/display.js +11 -43
- package/cjs/tools/display.js.map +1 -1
- package/cjs/tools/encoder.js +36 -37
- package/cjs/tools/encoder.js.map +1 -1
- package/cjs/tools/experimentalFeatures.d.ts +1 -4
- package/cjs/tools/experimentalFeatures.js +29 -40
- package/cjs/tools/experimentalFeatures.js.map +1 -1
- package/cjs/tools/getZoneJsOriginalValue.d.ts +1 -1
- package/cjs/tools/getZoneJsOriginalValue.js +22 -25
- package/cjs/tools/getZoneJsOriginalValue.js.map +1 -1
- package/cjs/tools/globalObject.d.ts +16 -15
- package/cjs/tools/globalObject.js +7 -43
- package/cjs/tools/globalObject.js.map +1 -1
- package/cjs/tools/instrumentMethod.d.ts +58 -1
- package/cjs/tools/instrumentMethod.js +174 -112
- package/cjs/tools/instrumentMethod.js.map +1 -1
- package/cjs/tools/matchOption.js +25 -29
- package/cjs/tools/matchOption.js.map +1 -1
- package/cjs/tools/mockable.d.ts +22 -0
- package/cjs/tools/mockable.js +28 -0
- package/cjs/tools/mockable.js.map +1 -0
- package/cjs/tools/monitor.d.ts +5 -7
- package/cjs/tools/monitor.js +13 -58
- package/cjs/tools/monitor.js.map +1 -1
- package/cjs/tools/observable.d.ts +3 -1
- package/cjs/tools/observable.js +75 -85
- package/cjs/tools/observable.js.map +1 -1
- package/cjs/tools/queueMicrotask.js +9 -14
- package/cjs/tools/queueMicrotask.js.map +1 -1
- package/cjs/tools/readBytesFromStream.d.ts +1 -6
- package/cjs/tools/readBytesFromStream.js +18 -25
- package/cjs/tools/readBytesFromStream.js.map +1 -1
- package/cjs/tools/requestIdleCallback.js +22 -29
- package/cjs/tools/requestIdleCallback.js.map +1 -1
- package/cjs/tools/sendToExtension.js +10 -8
- package/cjs/tools/sendToExtension.js.map +1 -1
- package/cjs/tools/serialisation/jsonStringify.js +37 -42
- package/cjs/tools/serialisation/jsonStringify.js.map +1 -1
- package/cjs/tools/serialisation/sanitize.d.ts +1 -0
- package/cjs/tools/serialisation/sanitize.js +111 -167
- package/cjs/tools/serialisation/sanitize.js.map +1 -1
- package/cjs/tools/serialisation/stringify.d.ts +2 -0
- package/cjs/tools/serialisation/stringify.js +18 -0
- package/cjs/tools/serialisation/stringify.js.map +1 -0
- package/cjs/tools/stackTrace/computeStackTrace.js +121 -159
- package/cjs/tools/stackTrace/computeStackTrace.js.map +1 -1
- package/cjs/tools/stackTrace/handlingStack.d.ts +1 -1
- package/cjs/tools/stackTrace/handlingStack.js +39 -38
- package/cjs/tools/stackTrace/handlingStack.js.map +1 -1
- package/cjs/tools/taskQueue.js +40 -49
- package/cjs/tools/taskQueue.js.map +1 -1
- package/cjs/tools/timer.d.ts +2 -1
- package/cjs/tools/timer.js +14 -13
- package/cjs/tools/timer.js.map +1 -1
- package/cjs/tools/utils/arrayUtils.d.ts +1 -0
- package/cjs/tools/utils/arrayUtils.js +17 -13
- package/cjs/tools/utils/arrayUtils.js.map +1 -1
- package/cjs/tools/utils/browserDetection.d.ts +1 -0
- package/cjs/tools/utils/browserDetection.js +25 -23
- package/cjs/tools/utils/browserDetection.js.map +1 -1
- package/cjs/tools/utils/byteUtils.js +20 -28
- package/cjs/tools/utils/byteUtils.js.map +1 -1
- package/cjs/tools/utils/functionUtils.js +33 -40
- package/cjs/tools/utils/functionUtils.js.map +1 -1
- package/cjs/tools/utils/numberUtils.js +15 -14
- package/cjs/tools/utils/numberUtils.js.map +1 -1
- package/cjs/tools/utils/objectUtils.d.ts +2 -0
- package/cjs/tools/utils/objectUtils.js +27 -14
- package/cjs/tools/utils/objectUtils.js.map +1 -1
- package/cjs/tools/utils/polyfills.js +12 -16
- package/cjs/tools/utils/polyfills.js.map +1 -1
- package/cjs/tools/utils/responseUtils.js +11 -12
- package/cjs/tools/utils/responseUtils.js.map +1 -1
- package/cjs/tools/utils/stringUtils.js +56 -77
- package/cjs/tools/utils/stringUtils.js.map +1 -1
- package/cjs/tools/utils/timezone.js +9 -10
- package/cjs/tools/utils/timezone.js.map +1 -1
- package/cjs/tools/utils/urlPolyfill.js +42 -46
- package/cjs/tools/utils/urlPolyfill.js.map +1 -1
- package/cjs/tools/valueHistory.d.ts +9 -1
- package/cjs/tools/valueHistory.js +110 -99
- package/cjs/tools/valueHistory.js.map +1 -1
- package/cjs/transport/batch.js +73 -106
- package/cjs/transport/batch.js.map +1 -1
- package/cjs/transport/eventBridge.d.ts +6 -2
- package/cjs/transport/eventBridge.js +53 -38
- package/cjs/transport/eventBridge.js.map +1 -1
- package/cjs/transport/flushController.d.ts +2 -12
- package/cjs/transport/flushController.js +98 -117
- package/cjs/transport/flushController.js.map +1 -1
- package/cjs/transport/httpRequest.d.ts +0 -1
- package/cjs/transport/httpRequest.js +51 -85
- package/cjs/transport/httpRequest.js.map +1 -1
- package/cjs/transport/index.d.ts +1 -0
- package/cjs/transport/sendWithRetryStrategy.js +133 -146
- package/cjs/transport/sendWithRetryStrategy.js.map +1 -1
- package/esm/boot/displayAlreadyInitializedError.mjs +9 -0
- package/esm/boot/displayAlreadyInitializedError.mjs.map +1 -0
- package/esm/boot/init.mjs +30 -0
- package/esm/boot/init.mjs.map +1 -0
- package/esm/browser/addEventListener.mjs +107 -0
- package/esm/browser/addEventListener.mjs.map +1 -0
- package/esm/browser/cookie.mjs +81 -0
- package/esm/browser/cookie.mjs.map +1 -0
- package/esm/browser/cookieAccess.mjs +111 -0
- package/esm/browser/cookieAccess.mjs.map +1 -0
- package/esm/browser/fetch.mjs +18 -0
- package/esm/browser/fetch.mjs.map +1 -0
- package/esm/browser/fetchObservable.mjs +90 -0
- package/esm/browser/fetchObservable.mjs.map +1 -0
- package/esm/browser/pageMayExitObservable.mjs +44 -0
- package/esm/browser/pageMayExitObservable.mjs.map +1 -0
- package/esm/browser/runOnReadyState.mjs +19 -0
- package/esm/browser/runOnReadyState.mjs.map +1 -0
- package/esm/browser/xhrObservable.mjs +74 -0
- package/esm/browser/xhrObservable.mjs.map +1 -0
- package/esm/domain/allowedTrackingOrigins.mjs +27 -0
- package/esm/domain/allowedTrackingOrigins.mjs.map +1 -0
- package/esm/domain/bufferedData.mjs +43 -0
- package/esm/domain/bufferedData.mjs.map +1 -0
- package/esm/domain/configuration/configuration.mjs +131 -0
- package/esm/domain/configuration/configuration.mjs.map +1 -0
- package/esm/domain/configuration/endpointBuilder.mjs +72 -0
- package/esm/domain/configuration/endpointBuilder.mjs.map +1 -0
- package/esm/domain/connectivity/connectivity.mjs +14 -0
- package/esm/domain/connectivity/connectivity.mjs.map +1 -0
- package/esm/domain/console/consoleObservable.mjs +69 -0
- package/esm/domain/console/consoleObservable.mjs.map +1 -0
- package/esm/domain/context/contextConstants.mjs +25 -0
- package/esm/domain/context/contextConstants.mjs.map +1 -0
- package/esm/domain/context/contextManager.mjs +55 -0
- package/esm/domain/context/contextManager.mjs.map +1 -0
- package/esm/domain/context/contextUtils.mjs +15 -0
- package/esm/domain/context/contextUtils.mjs.map +1 -0
- package/esm/domain/context/defineContextMethod.mjs +19 -0
- package/esm/domain/context/defineContextMethod.mjs.map +1 -0
- package/esm/domain/context/storeContextManager.mjs +36 -0
- package/esm/domain/context/storeContextManager.mjs.map +1 -0
- package/esm/domain/contexts/accountContext.mjs +29 -0
- package/esm/domain/contexts/accountContext.mjs.map +1 -0
- package/esm/domain/contexts/globalContext.mjs +20 -0
- package/esm/domain/contexts/globalContext.mjs.map +1 -0
- package/esm/domain/contexts/tabContext.mjs +27 -0
- package/esm/domain/contexts/tabContext.mjs.map +1 -0
- package/esm/domain/contexts/telemetrySessionContext.mjs +17 -0
- package/esm/domain/contexts/telemetrySessionContext.mjs.map +1 -0
- package/esm/domain/contexts/userContext.mjs +32 -0
- package/esm/domain/contexts/userContext.mjs.map +1 -0
- package/esm/domain/deflate/deflate.types.mjs +12 -0
- package/esm/domain/deflate/deflate.types.mjs.map +1 -0
- package/esm/domain/error/error.mjs +73 -0
- package/esm/domain/error/error.mjs.map +1 -0
- package/esm/domain/error/error.types.mjs +24 -0
- package/esm/domain/error/error.types.mjs.map +1 -0
- package/esm/domain/error/trackRuntimeError.mjs +48 -0
- package/esm/domain/error/trackRuntimeError.mjs.map +1 -0
- package/esm/domain/eventRateLimiter/createEventRateLimiter.mjs +36 -0
- package/esm/domain/eventRateLimiter/createEventRateLimiter.mjs.map +1 -0
- package/esm/domain/extension/extensionUtils.mjs +23 -0
- package/esm/domain/extension/extensionUtils.mjs.map +1 -0
- package/esm/domain/intakeSites.mjs +18 -0
- package/esm/domain/intakeSites.mjs.map +1 -0
- package/esm/domain/report/reportObservable.mjs +86 -0
- package/esm/domain/report/reportObservable.mjs.map +1 -0
- package/esm/domain/resourceUtils.mjs +21 -0
- package/esm/domain/resourceUtils.mjs.map +1 -0
- package/esm/domain/sampler.mjs +37 -0
- package/esm/domain/sampler.mjs.map +1 -0
- package/esm/domain/session/sessionConstants.mjs +18 -0
- package/esm/domain/session/sessionConstants.mjs.map +1 -0
- package/esm/domain/session/sessionManager.mjs +225 -0
- package/esm/domain/session/sessionManager.mjs.map +1 -0
- package/esm/domain/session/sessionState.mjs +76 -0
- package/esm/domain/session/sessionState.mjs.map +1 -0
- package/esm/domain/session/sessionStateValidation.mjs +9 -0
- package/esm/domain/session/sessionStateValidation.mjs.map +1 -0
- package/esm/domain/session/sessionStore.mjs +46 -0
- package/esm/domain/session/sessionStore.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInCookie.mjs +97 -0
- package/esm/domain/session/storeStrategies/sessionInCookie.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.mjs +42 -0
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInMemory.mjs +33 -0
- package/esm/domain/session/storeStrategies/sessionInMemory.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.mjs +7 -0
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.mjs.map +1 -0
- package/esm/domain/synthetics/syntheticsWorkerValues.mjs +37 -0
- package/esm/domain/synthetics/syntheticsWorkerValues.mjs.map +1 -0
- package/esm/domain/tags.mjs +28 -0
- package/esm/domain/tags.mjs.map +1 -0
- package/esm/domain/telemetry/rawTelemetryEvent.types.mjs +10 -0
- package/esm/domain/telemetry/rawTelemetryEvent.types.mjs.map +1 -0
- package/esm/domain/telemetry/telemetry.mjs +219 -0
- package/esm/domain/telemetry/telemetry.mjs.map +1 -0
- package/esm/domain/trackingConsent.mjs +38 -0
- package/esm/domain/trackingConsent.mjs.map +1 -0
- package/esm/index.mjs +81 -0
- package/esm/tools/abstractLifeCycle.mjs +21 -0
- package/esm/tools/abstractLifeCycle.mjs.map +1 -0
- package/esm/tools/catchUserErrors.mjs +15 -0
- package/esm/tools/catchUserErrors.mjs.map +1 -0
- package/esm/tools/display.mjs +10 -0
- package/esm/tools/display.mjs.map +1 -0
- package/esm/tools/encoder.mjs +39 -0
- package/esm/tools/encoder.mjs.map +1 -0
- package/esm/tools/experimentalFeatures.mjs +35 -0
- package/esm/tools/experimentalFeatures.mjs.map +1 -0
- package/esm/tools/getZoneJsOriginalValue.mjs +26 -0
- package/esm/tools/getZoneJsOriginalValue.mjs.map +1 -0
- package/esm/tools/globalObject.mjs +7 -0
- package/esm/tools/globalObject.mjs.map +1 -0
- package/esm/tools/instrumentMethod.mjs +178 -0
- package/esm/tools/instrumentMethod.mjs.map +1 -0
- package/esm/tools/matchOption.mjs +30 -0
- package/esm/tools/matchOption.mjs.map +1 -0
- package/esm/tools/mockable.mjs +28 -0
- package/esm/tools/mockable.mjs.map +1 -0
- package/esm/tools/monitor.mjs +13 -0
- package/esm/tools/monitor.mjs.map +1 -0
- package/esm/tools/observable.mjs +77 -0
- package/esm/tools/observable.mjs.map +1 -0
- package/esm/tools/queueMicrotask.mjs +12 -0
- package/esm/tools/queueMicrotask.mjs.map +1 -0
- package/esm/tools/readBytesFromStream.mjs +21 -0
- package/esm/tools/readBytesFromStream.mjs.map +1 -0
- package/esm/tools/requestIdleCallback.mjs +28 -0
- package/esm/tools/requestIdleCallback.mjs.map +1 -0
- package/esm/tools/sendToExtension.mjs +13 -0
- package/esm/tools/sendToExtension.mjs.map +1 -0
- package/esm/tools/serialisation/jsonStringify.mjs +42 -0
- package/esm/tools/serialisation/jsonStringify.mjs.map +1 -0
- package/esm/tools/serialisation/sanitize.mjs +131 -0
- package/esm/tools/serialisation/sanitize.mjs.map +1 -0
- package/esm/tools/serialisation/stringify.mjs +17 -0
- package/esm/tools/serialisation/stringify.mjs.map +1 -0
- package/esm/tools/stackTrace/computeStackTrace.mjs +148 -0
- package/esm/tools/stackTrace/computeStackTrace.mjs.map +1 -0
- package/esm/tools/stackTrace/handlingStack.mjs +45 -0
- package/esm/tools/stackTrace/handlingStack.mjs.map +1 -0
- package/esm/tools/taskQueue.mjs +45 -0
- package/esm/tools/taskQueue.mjs.map +1 -0
- package/esm/tools/timer.mjs +20 -0
- package/esm/tools/timer.mjs.map +1 -0
- package/esm/tools/utils/arrayUtils.mjs +21 -0
- package/esm/tools/utils/arrayUtils.mjs.map +1 -0
- package/esm/tools/utils/browserDetection.mjs +31 -0
- package/esm/tools/utils/browserDetection.mjs.map +1 -0
- package/esm/tools/utils/byteUtils.mjs +23 -0
- package/esm/tools/utils/byteUtils.mjs.map +1 -0
- package/esm/tools/utils/functionUtils.mjs +35 -0
- package/esm/tools/utils/functionUtils.mjs.map +1 -0
- package/esm/tools/utils/numberUtils.mjs +22 -0
- package/esm/tools/utils/numberUtils.mjs.map +1 -0
- package/esm/tools/utils/objectUtils.mjs +31 -0
- package/esm/tools/utils/objectUtils.mjs.map +1 -0
- package/esm/tools/utils/polyfills.mjs +17 -0
- package/esm/tools/utils/polyfills.mjs.map +1 -0
- package/esm/tools/utils/responseUtils.mjs +15 -0
- package/esm/tools/utils/responseUtils.mjs.map +1 -0
- package/esm/tools/utils/stringUtils.mjs +66 -0
- package/esm/tools/utils/stringUtils.mjs.map +1 -0
- package/esm/tools/utils/timezone.mjs +12 -0
- package/esm/tools/utils/timezone.mjs.map +1 -0
- package/esm/tools/utils/urlPolyfill.mjs +51 -0
- package/esm/tools/utils/urlPolyfill.mjs.map +1 -0
- package/esm/tools/valueHistory.mjs +114 -0
- package/esm/tools/valueHistory.mjs.map +1 -0
- package/esm/transport/batch.mjs +77 -0
- package/esm/transport/batch.mjs.map +1 -0
- package/esm/transport/eventBridge.mjs +58 -0
- package/esm/transport/eventBridge.mjs.map +1 -0
- package/esm/transport/flushController.mjs +104 -0
- package/esm/transport/flushController.mjs.map +1 -0
- package/esm/transport/httpRequest.mjs +60 -0
- package/esm/transport/httpRequest.mjs.map +1 -0
- package/esm/transport/sendWithRetryStrategy.mjs +149 -0
- package/esm/transport/sendWithRetryStrategy.mjs.map +1 -0
- package/package.json +15 -4
- package/src/boot/init.ts +2 -2
- package/src/browser/addEventListener.ts +37 -5
- package/src/browser/browser.types.ts +127 -13
- package/src/browser/cookie.ts +21 -27
- package/src/browser/cookieAccess.ts +150 -0
- package/src/browser/fetch.ts +14 -0
- package/src/browser/fetchObservable.ts +22 -22
- package/src/browser/pageMayExitObservable.ts +7 -4
- package/src/browser/runOnReadyState.ts +3 -8
- package/src/browser/xhrObservable.ts +22 -12
- package/src/domain/allowedTrackingOrigins.ts +5 -5
- package/src/domain/bufferedData.ts +41 -14
- package/src/domain/configuration/configuration.ts +87 -72
- package/src/domain/configuration/endpointBuilder.ts +82 -52
- package/src/domain/configuration/index.ts +2 -2
- package/src/domain/connectivity/connectivity.ts +3 -15
- package/src/domain/console/consoleObservable.ts +3 -3
- package/src/domain/context/contextManager.ts +1 -1
- package/src/domain/context/contextUtils.ts +1 -1
- package/src/domain/context/defineContextMethod.ts +3 -3
- package/src/domain/context/storeContextManager.ts +9 -6
- package/src/domain/contexts/accountContext.ts +5 -5
- package/src/domain/contexts/globalContext.ts +4 -5
- package/src/domain/contexts/tabContext.ts +43 -0
- package/src/domain/contexts/telemetrySessionContext.ts +26 -0
- package/src/domain/contexts/userContext.ts +7 -11
- package/src/domain/error/error.ts +53 -23
- package/src/domain/error/error.types.ts +1 -1
- package/src/domain/error/trackRuntimeError.ts +11 -4
- package/src/domain/eventRateLimiter/createEventRateLimiter.ts +1 -1
- package/src/domain/intakeSites.ts +8 -3
- package/src/domain/report/reportObservable.ts +11 -7
- package/src/domain/sampler.ts +64 -0
- package/src/domain/session/sessionConstants.ts +2 -1
- package/src/domain/session/sessionManager.ts +281 -176
- package/src/domain/session/sessionState.ts +64 -8
- package/src/domain/session/sessionStore.ts +57 -223
- package/src/domain/session/storeStrategies/sessionInCookie.ts +121 -107
- package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +33 -21
- package/src/domain/session/storeStrategies/sessionInMemory.ts +55 -0
- package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +28 -6
- package/src/domain/synthetics/syntheticsWorkerValues.ts +44 -13
- package/src/domain/tags.ts +0 -16
- package/src/domain/telemetry/telemetry.ts +38 -34
- package/src/domain/telemetry/telemetryEvent.types.ts +116 -20
- package/src/domain/trackingConsent.ts +18 -3
- package/src/index.ts +51 -31
- package/src/tools/display.ts +2 -50
- package/src/tools/experimentalFeatures.ts +1 -4
- package/src/tools/getZoneJsOriginalValue.ts +3 -3
- package/src/tools/globalObject.ts +27 -41
- package/src/tools/instrumentMethod.ts +230 -20
- package/src/tools/matchOption.ts +3 -1
- package/src/tools/mockable.ts +32 -0
- package/src/tools/monitor.ts +14 -62
- package/src/tools/observable.ts +9 -1
- package/src/tools/queueMicrotask.ts +6 -1
- package/src/tools/readBytesFromStream.ts +3 -12
- package/src/tools/requestIdleCallback.ts +1 -1
- package/src/tools/serialisation/sanitize.ts +67 -65
- package/src/tools/serialisation/stringify.ts +18 -0
- package/src/tools/stackTrace/computeStackTrace.ts +15 -13
- package/src/tools/stackTrace/handlingStack.ts +14 -1
- package/src/tools/taskQueue.ts +5 -3
- package/src/tools/timer.ts +7 -6
- package/src/tools/utils/arrayUtils.ts +7 -0
- package/src/tools/utils/browserDetection.ts +8 -0
- package/src/tools/utils/byteUtils.ts +1 -5
- package/src/tools/utils/functionUtils.ts +2 -2
- package/src/tools/utils/objectUtils.ts +20 -0
- package/src/tools/utils/stringUtils.ts +4 -1
- package/src/tools/utils/urlPolyfill.ts +5 -4
- package/src/tools/valueHistory.ts +39 -6
- package/src/transport/batch.ts +9 -18
- package/src/transport/eventBridge.ts +23 -10
- package/src/transport/flushController.ts +17 -24
- package/src/transport/httpRequest.ts +4 -36
- package/src/transport/index.ts +1 -0
- package/src/transport/sendWithRetryStrategy.ts +1 -1
- package/cjs/browser/browser.types.js +0 -6
- package/cjs/browser/browser.types.js.map +0 -1
- package/cjs/domain/configuration/index.js +0 -16
- package/cjs/domain/configuration/index.js.map +0 -1
- package/cjs/domain/configuration/transportConfiguration.d.ts +0 -20
- package/cjs/domain/configuration/transportConfiguration.js +0 -54
- package/cjs/domain/configuration/transportConfiguration.js.map +0 -1
- package/cjs/domain/connectivity/index.js +0 -18
- package/cjs/domain/connectivity/index.js.map +0 -1
- package/cjs/domain/contexts/rumInternalContext.type.js +0 -3
- package/cjs/domain/contexts/rumInternalContext.type.js.map +0 -1
- package/cjs/domain/deflate/index.js +0 -18
- package/cjs/domain/deflate/index.js.map +0 -1
- package/cjs/domain/report/browser.types.js +0 -3
- package/cjs/domain/report/browser.types.js.map +0 -1
- package/cjs/domain/session/oldCookiesMigration.d.ts +0 -11
- package/cjs/domain/session/oldCookiesMigration.js +0 -40
- package/cjs/domain/session/oldCookiesMigration.js.map +0 -1
- package/cjs/domain/session/sessionStoreOperations.d.ts +0 -12
- package/cjs/domain/session/sessionStoreOperations.js +0 -119
- package/cjs/domain/session/sessionStoreOperations.js.map +0 -1
- package/cjs/domain/telemetry/index.js +0 -28
- package/cjs/domain/telemetry/index.js.map +0 -1
- package/cjs/domain/telemetry/telemetryEvent.types.js +0 -7
- package/cjs/domain/telemetry/telemetryEvent.types.js.map +0 -1
- package/cjs/index.js.map +0 -1
- package/cjs/tools/abstractHooks.d.ts +0 -24
- package/cjs/tools/abstractHooks.js +0 -41
- package/cjs/tools/abstractHooks.js.map +0 -1
- package/cjs/tools/boundedBuffer.d.ts +0 -16
- package/cjs/tools/boundedBuffer.js +0 -32
- package/cjs/tools/boundedBuffer.js.map +0 -1
- package/cjs/tools/mergeInto.d.ts +0 -25
- package/cjs/tools/mergeInto.js +0 -98
- package/cjs/tools/mergeInto.js.map +0 -1
- package/cjs/tools/serialisation/context.js +0 -3
- package/cjs/tools/serialisation/context.js.map +0 -1
- package/cjs/tools/utils/timeUtils.d.ts +0 -53
- package/cjs/tools/utils/timeUtils.js +0 -101
- package/cjs/tools/utils/timeUtils.js.map +0 -1
- package/cjs/tools/utils/typeUtils.d.ts +0 -4
- package/cjs/tools/utils/typeUtils.js +0 -16
- package/cjs/tools/utils/typeUtils.js.map +0 -1
- package/cjs/transport/index.js +0 -15
- package/cjs/transport/index.js.map +0 -1
- package/esm/boot/displayAlreadyInitializedError.d.ts +0 -2
- package/esm/boot/displayAlreadyInitializedError.js +0 -7
- package/esm/boot/displayAlreadyInitializedError.js.map +0 -1
- package/esm/boot/init.d.ts +0 -14
- package/esm/boot/init.js +0 -35
- package/esm/boot/init.js.map +0 -1
- package/esm/browser/addEventListener.d.ts +0 -87
- package/esm/browser/addEventListener.js +0 -51
- package/esm/browser/addEventListener.js.map +0 -1
- package/esm/browser/browser.types.d.ts +0 -51
- package/esm/browser/browser.types.js +0 -5
- package/esm/browser/browser.types.js.map +0 -1
- package/esm/browser/cookie.d.ts +0 -28
- package/esm/browser/cookie.js +0 -103
- package/esm/browser/cookie.js.map +0 -1
- package/esm/browser/fetchObservable.d.ts +0 -38
- package/esm/browser/fetchObservable.js +0 -99
- package/esm/browser/fetchObservable.js.map +0 -1
- package/esm/browser/pageMayExitObservable.d.ts +0 -14
- package/esm/browser/pageMayExitObservable.js +0 -40
- package/esm/browser/pageMayExitObservable.js.map +0 -1
- package/esm/browser/runOnReadyState.d.ts +0 -5
- package/esm/browser/runOnReadyState.js +0 -16
- package/esm/browser/runOnReadyState.js.map +0 -1
- package/esm/browser/xhrObservable.d.ts +0 -24
- package/esm/browser/xhrObservable.js +0 -83
- package/esm/browser/xhrObservable.js.map +0 -1
- package/esm/domain/allowedTrackingOrigins.d.ts +0 -4
- package/esm/domain/allowedTrackingOrigins.js +0 -21
- package/esm/domain/allowedTrackingOrigins.js.map +0 -1
- package/esm/domain/bufferedData.d.ts +0 -14
- package/esm/domain/bufferedData.js +0 -19
- package/esm/domain/bufferedData.js.map +0 -1
- package/esm/domain/configuration/configuration.d.ts +0 -312
- package/esm/domain/configuration/configuration.js +0 -132
- package/esm/domain/configuration/configuration.js.map +0 -1
- package/esm/domain/configuration/endpointBuilder.d.ts +0 -12
- package/esm/domain/configuration/endpointBuilder.js +0 -77
- package/esm/domain/configuration/endpointBuilder.js.map +0 -1
- package/esm/domain/configuration/index.d.ts +0 -5
- package/esm/domain/configuration/index.js +0 -4
- package/esm/domain/configuration/index.js.map +0 -1
- package/esm/domain/configuration/transportConfiguration.d.ts +0 -20
- package/esm/domain/configuration/transportConfiguration.js +0 -50
- package/esm/domain/configuration/transportConfiguration.js.map +0 -1
- package/esm/domain/connectivity/connectivity.d.ts +0 -14
- package/esm/domain/connectivity/connectivity.js +0 -11
- package/esm/domain/connectivity/connectivity.js.map +0 -1
- package/esm/domain/connectivity/index.d.ts +0 -1
- package/esm/domain/connectivity/index.js +0 -2
- package/esm/domain/connectivity/index.js.map +0 -1
- package/esm/domain/console/consoleObservable.d.ts +0 -21
- package/esm/domain/console/consoleObservable.js +0 -80
- package/esm/domain/console/consoleObservable.js.map +0 -1
- package/esm/domain/context/contextConstants.d.ts +0 -21
- package/esm/domain/context/contextConstants.js +0 -15
- package/esm/domain/context/contextConstants.js.map +0 -1
- package/esm/domain/context/contextManager.d.ts +0 -19
- package/esm/domain/context/contextManager.js +0 -57
- package/esm/domain/context/contextManager.js.map +0 -1
- package/esm/domain/context/contextUtils.d.ts +0 -5
- package/esm/domain/context/contextUtils.js +0 -13
- package/esm/domain/context/contextUtils.js.map +0 -1
- package/esm/domain/context/defineContextMethod.d.ts +0 -6
- package/esm/domain/context/defineContextMethod.js +0 -17
- package/esm/domain/context/defineContextMethod.js.map +0 -1
- package/esm/domain/context/storeContextManager.d.ts +0 -6
- package/esm/domain/context/storeContextManager.js +0 -35
- package/esm/domain/context/storeContextManager.js.map +0 -1
- package/esm/domain/contexts/accountContext.d.ts +0 -26
- package/esm/domain/contexts/accountContext.js +0 -29
- package/esm/domain/contexts/accountContext.js.map +0 -1
- package/esm/domain/contexts/globalContext.d.ts +0 -18
- package/esm/domain/contexts/globalContext.js +0 -17
- package/esm/domain/contexts/globalContext.js.map +0 -1
- package/esm/domain/contexts/rumInternalContext.type.d.ts +0 -14
- package/esm/domain/contexts/rumInternalContext.type.js +0 -2
- package/esm/domain/contexts/rumInternalContext.type.js.map +0 -1
- package/esm/domain/contexts/userContext.d.ts +0 -29
- package/esm/domain/contexts/userContext.js +0 -41
- package/esm/domain/contexts/userContext.js.map +0 -1
- package/esm/domain/deflate/deflate.types.d.ts +0 -40
- package/esm/domain/deflate/deflate.types.js +0 -2
- package/esm/domain/deflate/deflate.types.js.map +0 -1
- package/esm/domain/deflate/index.d.ts +0 -1
- package/esm/domain/deflate/index.js +0 -2
- package/esm/domain/deflate/index.js.map +0 -1
- package/esm/domain/error/error.d.ts +0 -23
- package/esm/domain/error/error.js +0 -65
- package/esm/domain/error/error.js.map +0 -1
- package/esm/domain/error/error.types.d.ts +0 -47
- package/esm/domain/error/error.types.js +0 -10
- package/esm/domain/error/error.types.js.map +0 -1
- package/esm/domain/error/trackRuntimeError.d.ts +0 -11
- package/esm/domain/error/trackRuntimeError.js +0 -43
- package/esm/domain/error/trackRuntimeError.js.map +0 -1
- package/esm/domain/eventRateLimiter/createEventRateLimiter.d.ts +0 -5
- package/esm/domain/eventRateLimiter/createEventRateLimiter.js +0 -38
- package/esm/domain/eventRateLimiter/createEventRateLimiter.js.map +0 -1
- package/esm/domain/extension/extensionUtils.d.ts +0 -10
- package/esm/domain/extension/extensionUtils.js +0 -25
- package/esm/domain/extension/extensionUtils.js.map +0 -1
- package/esm/domain/intakeSites.d.ts +0 -8
- package/esm/domain/intakeSites.js +0 -8
- package/esm/domain/intakeSites.js.map +0 -1
- package/esm/domain/report/browser.types.d.ts +0 -34
- package/esm/domain/report/browser.types.js +0 -2
- package/esm/domain/report/browser.types.js.map +0 -1
- package/esm/domain/report/reportObservable.d.ts +0 -14
- package/esm/domain/report/reportObservable.js +0 -95
- package/esm/domain/report/reportObservable.js.map +0 -1
- package/esm/domain/resourceUtils.d.ts +0 -18
- package/esm/domain/resourceUtils.js +0 -17
- package/esm/domain/resourceUtils.js.map +0 -1
- package/esm/domain/session/oldCookiesMigration.d.ts +0 -11
- package/esm/domain/session/oldCookiesMigration.js +0 -36
- package/esm/domain/session/oldCookiesMigration.js.map +0 -1
- package/esm/domain/session/sessionConstants.d.ts +0 -15
- package/esm/domain/session/sessionConstants.js +0 -13
- package/esm/domain/session/sessionConstants.js.map +0 -1
- package/esm/domain/session/sessionManager.d.ts +0 -28
- package/esm/domain/session/sessionManager.js +0 -196
- package/esm/domain/session/sessionManager.js.map +0 -1
- package/esm/domain/session/sessionState.d.ts +0 -16
- package/esm/domain/session/sessionState.js +0 -60
- package/esm/domain/session/sessionState.js.map +0 -1
- package/esm/domain/session/sessionStateValidation.d.ts +0 -3
- package/esm/domain/session/sessionStateValidation.js +0 -7
- package/esm/domain/session/sessionStateValidation.js.map +0 -1
- package/esm/domain/session/sessionStore.d.ts +0 -38
- package/esm/domain/session/sessionStore.js +0 -179
- package/esm/domain/session/sessionStore.js.map +0 -1
- package/esm/domain/session/sessionStoreOperations.d.ts +0 -12
- package/esm/domain/session/sessionStoreOperations.js +0 -114
- package/esm/domain/session/sessionStoreOperations.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +0 -12
- package/esm/domain/session/storeStrategies/sessionInCookie.js +0 -98
- package/esm/domain/session/storeStrategies/sessionInCookie.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +0 -6
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +0 -37
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -16
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.js +0 -2
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.js.map +0 -1
- package/esm/domain/synthetics/syntheticsWorkerValues.d.ts +0 -12
- package/esm/domain/synthetics/syntheticsWorkerValues.js +0 -24
- package/esm/domain/synthetics/syntheticsWorkerValues.js.map +0 -1
- package/esm/domain/tags.d.ts +0 -6
- package/esm/domain/tags.js +0 -60
- package/esm/domain/tags.js.map +0 -1
- package/esm/domain/telemetry/index.d.ts +0 -4
- package/esm/domain/telemetry/index.js +0 -3
- package/esm/domain/telemetry/index.js.map +0 -1
- package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +0 -18
- package/esm/domain/telemetry/rawTelemetryEvent.types.js +0 -6
- package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +0 -1
- package/esm/domain/telemetry/telemetry.d.ts +0 -56
- package/esm/domain/telemetry/telemetry.js +0 -228
- package/esm/domain/telemetry/telemetry.js.map +0 -1
- package/esm/domain/telemetry/telemetryEvent.types.d.ts +0 -866
- package/esm/domain/telemetry/telemetryEvent.types.js +0 -6
- package/esm/domain/telemetry/telemetryEvent.types.js.map +0 -1
- package/esm/domain/trackingConsent.d.ts +0 -13
- package/esm/domain/trackingConsent.js +0 -24
- package/esm/domain/trackingConsent.js.map +0 -1
- package/esm/index.d.ts +0 -100
- package/esm/index.js +0 -76
- package/esm/index.js.map +0 -1
- package/esm/tools/abstractHooks.d.ts +0 -24
- package/esm/tools/abstractHooks.js +0 -37
- package/esm/tools/abstractHooks.js.map +0 -1
- package/esm/tools/abstractLifeCycle.d.ts +0 -23
- package/esm/tools/abstractLifeCycle.js +0 -24
- package/esm/tools/abstractLifeCycle.js.map +0 -1
- package/esm/tools/boundedBuffer.d.ts +0 -16
- package/esm/tools/boundedBuffer.js +0 -29
- package/esm/tools/boundedBuffer.js.map +0 -1
- package/esm/tools/catchUserErrors.d.ts +0 -1
- package/esm/tools/catchUserErrors.js +0 -12
- package/esm/tools/catchUserErrors.js.map +0 -1
- package/esm/tools/display.d.ts +0 -38
- package/esm/tools/display.js +0 -41
- package/esm/tools/display.js.map +0 -1
- package/esm/tools/encoder.d.ts +0 -54
- package/esm/tools/encoder.js +0 -37
- package/esm/tools/encoder.js.map +0 -1
- package/esm/tools/experimentalFeatures.d.ts +0 -21
- package/esm/tools/experimentalFeatures.js +0 -42
- package/esm/tools/experimentalFeatures.js.map +0 -1
- package/esm/tools/getZoneJsOriginalValue.d.ts +0 -19
- package/esm/tools/getZoneJsOriginalValue.js +0 -26
- package/esm/tools/getZoneJsOriginalValue.js.map +0 -1
- package/esm/tools/globalObject.d.ts +0 -19
- package/esm/tools/globalObject.js +0 -40
- package/esm/tools/globalObject.js.map +0 -1
- package/esm/tools/instrumentMethod.d.ts +0 -75
- package/esm/tools/instrumentMethod.js +0 -114
- package/esm/tools/instrumentMethod.js.map +0 -1
- package/esm/tools/matchOption.d.ts +0 -8
- package/esm/tools/matchOption.js +0 -31
- package/esm/tools/matchOption.js.map +0 -1
- package/esm/tools/mergeInto.d.ts +0 -25
- package/esm/tools/mergeInto.js +0 -93
- package/esm/tools/mergeInto.js.map +0 -1
- package/esm/tools/monitor.d.ts +0 -9
- package/esm/tools/monitor.js +0 -52
- package/esm/tools/monitor.js.map +0 -1
- package/esm/tools/observable.d.ts +0 -30
- package/esm/tools/observable.js +0 -83
- package/esm/tools/observable.js.map +0 -1
- package/esm/tools/queueMicrotask.d.ts +0 -1
- package/esm/tools/queueMicrotask.js +0 -14
- package/esm/tools/queueMicrotask.js.map +0 -1
- package/esm/tools/readBytesFromStream.d.ts +0 -10
- package/esm/tools/readBytesFromStream.js +0 -25
- package/esm/tools/readBytesFromStream.js.map +0 -1
- package/esm/tools/requestIdleCallback.d.ts +0 -12
- package/esm/tools/requestIdleCallback.js +0 -30
- package/esm/tools/requestIdleCallback.js.map +0 -1
- package/esm/tools/sendToExtension.d.ts +0 -3
- package/esm/tools/sendToExtension.js +0 -8
- package/esm/tools/sendToExtension.js.map +0 -1
- package/esm/tools/serialisation/context.d.ts +0 -9
- package/esm/tools/serialisation/context.js +0 -2
- package/esm/tools/serialisation/context.js.map +0 -1
- package/esm/tools/serialisation/jsonStringify.d.ts +0 -13
- package/esm/tools/serialisation/jsonStringify.js +0 -44
- package/esm/tools/serialisation/jsonStringify.js.map +0 -1
- package/esm/tools/serialisation/sanitize.d.ts +0 -18
- package/esm/tools/serialisation/sanitize.js +0 -185
- package/esm/tools/serialisation/sanitize.js.map +0 -1
- package/esm/tools/stackTrace/computeStackTrace.d.ts +0 -25
- package/esm/tools/stackTrace/computeStackTrace.js +0 -183
- package/esm/tools/stackTrace/computeStackTrace.js.map +0 -1
- package/esm/tools/stackTrace/handlingStack.d.ts +0 -10
- package/esm/tools/stackTrace/handlingStack.js +0 -41
- package/esm/tools/stackTrace/handlingStack.js.map +0 -1
- package/esm/tools/taskQueue.d.ts +0 -15
- package/esm/tools/taskQueue.js +0 -50
- package/esm/tools/taskQueue.js.map +0 -1
- package/esm/tools/timer.d.ts +0 -5
- package/esm/tools/timer.js +0 -16
- package/esm/tools/timer.js.map +0 -1
- package/esm/tools/utils/arrayUtils.d.ts +0 -3
- package/esm/tools/utils/arrayUtils.js +0 -15
- package/esm/tools/utils/arrayUtils.js.map +0 -1
- package/esm/tools/utils/browserDetection.d.ts +0 -8
- package/esm/tools/utils/browserDetection.js +0 -28
- package/esm/tools/utils/browserDetection.js.map +0 -1
- package/esm/tools/utils/byteUtils.d.ts +0 -8
- package/esm/tools/utils/byteUtils.js +0 -29
- package/esm/tools/utils/byteUtils.js.map +0 -1
- package/esm/tools/utils/functionUtils.d.ts +0 -8
- package/esm/tools/utils/functionUtils.js +0 -39
- package/esm/tools/utils/functionUtils.js.map +0 -1
- package/esm/tools/utils/numberUtils.d.ts +0 -9
- package/esm/tools/utils/numberUtils.js +0 -18
- package/esm/tools/utils/numberUtils.js.map +0 -1
- package/esm/tools/utils/objectUtils.d.ts +0 -10
- package/esm/tools/utils/objectUtils.js +0 -17
- package/esm/tools/utils/objectUtils.js.map +0 -1
- package/esm/tools/utils/polyfills.d.ts +0 -7
- package/esm/tools/utils/polyfills.js +0 -18
- package/esm/tools/utils/polyfills.js.map +0 -1
- package/esm/tools/utils/responseUtils.d.ts +0 -2
- package/esm/tools/utils/responseUtils.js +0 -13
- package/esm/tools/utils/responseUtils.js.map +0 -1
- package/esm/tools/utils/stringUtils.d.ts +0 -23
- package/esm/tools/utils/stringUtils.js +0 -84
- package/esm/tools/utils/stringUtils.js.map +0 -1
- package/esm/tools/utils/timeUtils.d.ts +0 -53
- package/esm/tools/utils/timeUtils.js +0 -84
- package/esm/tools/utils/timeUtils.js.map +0 -1
- package/esm/tools/utils/timezone.d.ts +0 -1
- package/esm/tools/utils/timezone.js +0 -10
- package/esm/tools/utils/timezone.js.map +0 -1
- package/esm/tools/utils/typeUtils.d.ts +0 -4
- package/esm/tools/utils/typeUtils.js +0 -13
- package/esm/tools/utils/typeUtils.js.map +0 -1
- package/esm/tools/utils/urlPolyfill.d.ts +0 -5
- package/esm/tools/utils/urlPolyfill.js +0 -52
- package/esm/tools/utils/urlPolyfill.js.map +0 -1
- package/esm/tools/valueHistory.d.ts +0 -27
- package/esm/tools/valueHistory.js +0 -100
- package/esm/tools/valueHistory.js.map +0 -1
- package/esm/transport/batch.d.ts +0 -16
- package/esm/transport/batch.js +0 -106
- package/esm/transport/batch.js.map +0 -1
- package/esm/transport/eventBridge.d.ts +0 -21
- package/esm/transport/eventBridge.js +0 -41
- package/esm/transport/eventBridge.js.map +0 -1
- package/esm/transport/flushController.d.ts +0 -65
- package/esm/transport/flushController.js +0 -119
- package/esm/transport/flushController.js.map +0 -1
- package/esm/transport/httpRequest.d.ts +0 -56
- package/esm/transport/httpRequest.js +0 -89
- package/esm/transport/httpRequest.js.map +0 -1
- package/esm/transport/index.d.ts +0 -7
- package/esm/transport/index.js +0 -5
- package/esm/transport/index.js.map +0 -1
- package/esm/transport/sendWithRetryStrategy.d.ts +0 -41
- package/esm/transport/sendWithRetryStrategy.js +0 -158
- package/esm/transport/sendWithRetryStrategy.js.map +0 -1
- package/src/boot/displayAlreadyInitializedError.spec.ts +0 -18
- package/src/boot/init.spec.ts +0 -50
- package/src/browser/addEventListener.spec.ts +0 -141
- package/src/browser/cookie.spec.ts +0 -53
- package/src/browser/fetchObservable.spec.ts +0 -334
- package/src/browser/pageMayExitObservable.spec.ts +0 -56
- package/src/browser/xhrObservable.spec.ts +0 -405
- package/src/domain/allowedTrackingOrigins.spec.ts +0 -210
- package/src/domain/bufferedData.spec.ts +0 -34
- package/src/domain/configuration/configuration.spec.ts +0 -236
- package/src/domain/configuration/endpointBuilder.spec.ts +0 -173
- package/src/domain/configuration/transportConfiguration.spec.ts +0 -130
- package/src/domain/configuration/transportConfiguration.ts +0 -78
- package/src/domain/connectivity/connectivity.spec.ts +0 -50
- package/src/domain/console/consoleObservable.spec.ts +0 -151
- package/src/domain/context/contextManager.spec.ts +0 -152
- package/src/domain/context/contextUtils.spec.ts +0 -26
- package/src/domain/context/storeContextManager.spec.ts +0 -103
- package/src/domain/contexts/accountContext.spec.ts +0 -99
- package/src/domain/contexts/globalContext.spec.ts +0 -88
- package/src/domain/contexts/userContext.spec.ts +0 -156
- package/src/domain/error/error.spec.ts +0 -294
- package/src/domain/error/trackRuntimeError.spec.ts +0 -343
- package/src/domain/eventRateLimiter/createEventRateLimiter.spec.ts +0 -119
- package/src/domain/extension/extensionUtils.spec.ts +0 -47
- package/src/domain/report/reportObservable.spec.ts +0 -71
- package/src/domain/session/oldCookiesMigration.spec.ts +0 -76
- package/src/domain/session/oldCookiesMigration.ts +0 -42
- package/src/domain/session/sessionManager.spec.ts +0 -684
- package/src/domain/session/sessionState.spec.ts +0 -88
- package/src/domain/session/sessionStore.spec.ts +0 -647
- package/src/domain/session/sessionStoreOperations.spec.ts +0 -234
- package/src/domain/session/sessionStoreOperations.ts +0 -131
- package/src/domain/session/storeStrategies/sessionInCookie.spec.ts +0 -228
- package/src/domain/session/storeStrategies/sessionInLocalStorage.spec.ts +0 -75
- package/src/domain/synthetics/syntheticsWorkerValues.spec.ts +0 -82
- package/src/domain/tags.spec.ts +0 -74
- package/src/domain/telemetry/telemetry.spec.ts +0 -494
- package/src/domain/trackingConsent.spec.ts +0 -44
- package/src/tools/abstractHooks.spec.ts +0 -76
- package/src/tools/abstractHooks.ts +0 -72
- package/src/tools/abstractLifeCycle.spec.ts +0 -46
- package/src/tools/boundedBuffer.spec.ts +0 -40
- package/src/tools/boundedBuffer.ts +0 -45
- package/src/tools/catchUserErrors.spec.ts +0 -20
- package/src/tools/encoder.spec.ts +0 -112
- package/src/tools/experimentalFeatures.spec.ts +0 -60
- package/src/tools/getZoneJsOriginalValue.spec.ts +0 -36
- package/src/tools/instrumentMethod.spec.ts +0 -381
- package/src/tools/matchOption.spec.ts +0 -41
- package/src/tools/mergeInto.spec.ts +0 -198
- package/src/tools/mergeInto.ts +0 -177
- package/src/tools/monitor.spec.ts +0 -172
- package/src/tools/observable.spec.ts +0 -259
- package/src/tools/queueMicrotask.spec.ts +0 -24
- package/src/tools/readBytesFromStream.spec.ts +0 -62
- package/src/tools/requestIdleCallback.spec.ts +0 -65
- package/src/tools/serialisation/jsonStringify.spec.ts +0 -76
- package/src/tools/serialisation/sanitize.spec.ts +0 -284
- package/src/tools/stackTrace/capturedExceptions.specHelper.ts +0 -316
- package/src/tools/stackTrace/computeStackTrace.spec.ts +0 -1007
- package/src/tools/stackTrace/handlingStack.spec.ts +0 -20
- package/src/tools/taskQueue.spec.ts +0 -60
- package/src/tools/timer.spec.ts +0 -76
- package/src/tools/utils/browserDetection.spec.ts +0 -120
- package/src/tools/utils/byteUtils.spec.ts +0 -29
- package/src/tools/utils/functionUtils.spec.ts +0 -229
- package/src/tools/utils/numberUtils.spec.ts +0 -27
- package/src/tools/utils/stringUtils.spec.ts +0 -74
- package/src/tools/utils/timeUtils.ts +0 -117
- package/src/tools/utils/typeUtils.spec.ts +0 -25
- package/src/tools/utils/typeUtils.ts +0 -12
- package/src/tools/utils/urlPolyfill.spec.ts +0 -55
- package/src/tools/valueHistory.spec.ts +0 -180
- package/src/transport/batch.spec.ts +0 -261
- package/src/transport/eventBridge.spec.ts +0 -90
- package/src/transport/flushController.spec.ts +0 -267
- package/src/transport/httpRequest.spec.ts +0 -400
- package/src/transport/sendWithRetryStrategy.spec.ts +0 -393
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { isWorkerEnvironment } from "../tools/globalObject.mjs";
|
|
2
|
+
import { Observable } from "../tools/observable.mjs";
|
|
3
|
+
import { clearTimeout, setTimeout } from "../tools/timer.mjs";
|
|
4
|
+
import { RECOMMENDED_REQUEST_BYTES_LIMIT } from "./httpRequest.mjs";
|
|
5
|
+
import { ONE_SECOND } from "@openobserve/js-core/time";
|
|
6
|
+
//#region src/transport/flushController.ts
|
|
7
|
+
/**
|
|
8
|
+
* flush automatically, aim to be lower than ALB connection timeout
|
|
9
|
+
* to maximize connection reuse.
|
|
10
|
+
*/
|
|
11
|
+
const FLUSH_DURATION_LIMIT = 30 * ONE_SECOND;
|
|
12
|
+
/**
|
|
13
|
+
* When using the SDK in a Worker Environment, we limit the batch size to 1 to ensure it can be sent
|
|
14
|
+
* in a single event.
|
|
15
|
+
*/
|
|
16
|
+
const MESSAGES_LIMIT = isWorkerEnvironment ? 1 : 50;
|
|
17
|
+
/**
|
|
18
|
+
* Returns a "flush controller", responsible of notifying when flushing a pool of pending data needs
|
|
19
|
+
* to happen. The implementation is designed to support both synchronous and asynchronous usages,
|
|
20
|
+
* but relies on invariants described in each method documentation to keep a coherent state.
|
|
21
|
+
*/
|
|
22
|
+
function createFlushController({ pageMayExitObservable, sessionExpireObservable }) {
|
|
23
|
+
let forcedFlushReason;
|
|
24
|
+
const preparePageExitFlushObservable = new Observable();
|
|
25
|
+
const pageMayExitSubscription = pageMayExitObservable.subscribe((event) => {
|
|
26
|
+
forcedFlushReason = event.reason;
|
|
27
|
+
try {
|
|
28
|
+
preparePageExitFlushObservable.notify(event.reason);
|
|
29
|
+
} finally {
|
|
30
|
+
forcedFlushReason = void 0;
|
|
31
|
+
}
|
|
32
|
+
flush(event.reason);
|
|
33
|
+
});
|
|
34
|
+
const sessionExpireSubscription = sessionExpireObservable.subscribe(() => flush("session_expire"));
|
|
35
|
+
const flushObservable = new Observable(() => () => {
|
|
36
|
+
pageMayExitSubscription.unsubscribe();
|
|
37
|
+
sessionExpireSubscription.unsubscribe();
|
|
38
|
+
});
|
|
39
|
+
let currentBytesCount = 0;
|
|
40
|
+
let currentMessagesCount = 0;
|
|
41
|
+
function flush(flushReason) {
|
|
42
|
+
if (currentMessagesCount === 0) return;
|
|
43
|
+
const messagesCount = currentMessagesCount;
|
|
44
|
+
const bytesCount = currentBytesCount;
|
|
45
|
+
currentMessagesCount = 0;
|
|
46
|
+
currentBytesCount = 0;
|
|
47
|
+
cancelDurationLimitTimeout();
|
|
48
|
+
flushObservable.notify({
|
|
49
|
+
reason: flushReason,
|
|
50
|
+
messagesCount,
|
|
51
|
+
bytesCount
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
let durationLimitTimeoutId;
|
|
55
|
+
function scheduleDurationLimitTimeout() {
|
|
56
|
+
if (durationLimitTimeoutId === void 0) durationLimitTimeoutId = setTimeout(() => {
|
|
57
|
+
flush("duration_limit");
|
|
58
|
+
}, FLUSH_DURATION_LIMIT);
|
|
59
|
+
}
|
|
60
|
+
function cancelDurationLimitTimeout() {
|
|
61
|
+
clearTimeout(durationLimitTimeoutId);
|
|
62
|
+
durationLimitTimeoutId = void 0;
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
flushObservable,
|
|
66
|
+
preparePageExitFlushObservable,
|
|
67
|
+
get messagesCount() {
|
|
68
|
+
return currentMessagesCount;
|
|
69
|
+
},
|
|
70
|
+
/**
|
|
71
|
+
* Notifies that a message will be added to a pool of pending messages waiting to be flushed.
|
|
72
|
+
*
|
|
73
|
+
* This function needs to be called synchronously, right before adding the message, so no flush
|
|
74
|
+
* event can happen after `notifyBeforeAddMessage` and before adding the message.
|
|
75
|
+
*
|
|
76
|
+
* @param estimatedMessageBytesCount - an estimation of the message bytes count once it is
|
|
77
|
+
* actually added.
|
|
78
|
+
*/
|
|
79
|
+
notifyBeforeAddMessage(estimatedMessageBytesCount) {
|
|
80
|
+
if (currentBytesCount + estimatedMessageBytesCount >= RECOMMENDED_REQUEST_BYTES_LIMIT) flush(forcedFlushReason ?? "bytes_limit");
|
|
81
|
+
currentMessagesCount += 1;
|
|
82
|
+
currentBytesCount += estimatedMessageBytesCount;
|
|
83
|
+
scheduleDurationLimitTimeout();
|
|
84
|
+
},
|
|
85
|
+
/**
|
|
86
|
+
* Notifies that a message *was* added to a pool of pending messages waiting to be flushed.
|
|
87
|
+
*
|
|
88
|
+
* This function can be called asynchronously after the message was added, but in this case it
|
|
89
|
+
* should not be called if a flush event occurred in between.
|
|
90
|
+
*
|
|
91
|
+
* @param messageBytesCountDiff - the difference between the estimated message bytes count and
|
|
92
|
+
* its actual bytes count once added to the pool.
|
|
93
|
+
*/
|
|
94
|
+
notifyAfterAddMessage(messageBytesCountDiff = 0) {
|
|
95
|
+
currentBytesCount += messageBytesCountDiff;
|
|
96
|
+
if (currentMessagesCount >= MESSAGES_LIMIT) flush(forcedFlushReason ?? "messages_limit");
|
|
97
|
+
else if (currentBytesCount >= RECOMMENDED_REQUEST_BYTES_LIMIT) flush(forcedFlushReason ?? "bytes_limit");
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//#endregion
|
|
102
|
+
export { FLUSH_DURATION_LIMIT, createFlushController };
|
|
103
|
+
|
|
104
|
+
//# sourceMappingURL=flushController.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flushController.mjs","names":[],"sources":["../../src/transport/flushController.ts"],"sourcesContent":["import { ONE_SECOND } from '@openobserve/js-core/time'\nimport type { Duration } from '@openobserve/js-core/time'\nimport type { PageMayExitEvent, PageExitReason } from '../browser/pageMayExitObservable'\nimport { isWorkerEnvironment } from '../tools/globalObject'\nimport { Observable } from '../tools/observable'\nimport type { TimeoutId } from '../tools/timer'\nimport { clearTimeout, setTimeout } from '../tools/timer'\nimport { RECOMMENDED_REQUEST_BYTES_LIMIT } from './httpRequest'\n\nexport type FlushReason = PageExitReason | 'duration_limit' | 'bytes_limit' | 'messages_limit' | 'session_expire'\n\n/**\n * flush automatically, aim to be lower than ALB connection timeout\n * to maximize connection reuse.\n */\nexport const FLUSH_DURATION_LIMIT = (30 * ONE_SECOND) as Duration\n\n/**\n * When using the SDK in a Worker Environment, we limit the batch size to 1 to ensure it can be sent\n * in a single event.\n */\nexport const MESSAGES_LIMIT = isWorkerEnvironment ? 1 : 50\n\nexport type FlushController = ReturnType<typeof createFlushController>\nexport interface FlushEvent {\n reason: FlushReason\n bytesCount: number\n messagesCount: number\n}\n\ninterface FlushControllerOptions {\n pageMayExitObservable: Observable<PageMayExitEvent>\n sessionExpireObservable: Observable<void>\n}\n\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController({ pageMayExitObservable, sessionExpireObservable }: FlushControllerOptions) {\n let forcedFlushReason: FlushReason | undefined\n const preparePageExitFlushObservable = new Observable<PageExitReason>()\n const pageMayExitSubscription = pageMayExitObservable.subscribe((event) => {\n forcedFlushReason = event.reason\n try {\n preparePageExitFlushObservable.notify(event.reason)\n } finally {\n forcedFlushReason = undefined\n }\n flush(event.reason)\n })\n const sessionExpireSubscription = sessionExpireObservable.subscribe(() => flush('session_expire'))\n\n const flushObservable = new Observable<FlushEvent>(() => () => {\n pageMayExitSubscription.unsubscribe()\n sessionExpireSubscription.unsubscribe()\n })\n\n let currentBytesCount = 0\n let currentMessagesCount = 0\n\n function flush(flushReason: FlushReason) {\n if (currentMessagesCount === 0) {\n return\n }\n\n const messagesCount = currentMessagesCount\n const bytesCount = currentBytesCount\n\n currentMessagesCount = 0\n currentBytesCount = 0\n cancelDurationLimitTimeout()\n\n flushObservable.notify({\n reason: flushReason,\n messagesCount,\n bytesCount,\n })\n }\n\n let durationLimitTimeoutId: TimeoutId | undefined\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(() => {\n flush('duration_limit')\n }, FLUSH_DURATION_LIMIT)\n }\n }\n\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId)\n durationLimitTimeoutId = undefined\n }\n\n return {\n flushObservable,\n preparePageExitFlushObservable,\n get messagesCount() {\n return currentMessagesCount\n },\n\n /**\n * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right before adding the message, so no flush\n * event can happen after `notifyBeforeAddMessage` and before adding the message.\n *\n * @param estimatedMessageBytesCount - an estimation of the message bytes count once it is\n * actually added.\n */\n notifyBeforeAddMessage(estimatedMessageBytesCount: number) {\n if (currentBytesCount + estimatedMessageBytesCount >= RECOMMENDED_REQUEST_BYTES_LIMIT) {\n flush(forcedFlushReason ?? 'bytes_limit')\n }\n // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n // to notify when a flush is needed (for example on page exit).\n currentMessagesCount += 1\n currentBytesCount += estimatedMessageBytesCount\n scheduleDurationLimitTimeout()\n },\n\n /**\n * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n *\n * This function can be called asynchronously after the message was added, but in this case it\n * should not be called if a flush event occurred in between.\n *\n * @param messageBytesCountDiff - the difference between the estimated message bytes count and\n * its actual bytes count once added to the pool.\n */\n notifyAfterAddMessage(messageBytesCountDiff = 0) {\n currentBytesCount += messageBytesCountDiff\n\n if (currentMessagesCount >= MESSAGES_LIMIT) {\n flush(forcedFlushReason ?? 'messages_limit')\n } else if (currentBytesCount >= RECOMMENDED_REQUEST_BYTES_LIMIT) {\n flush(forcedFlushReason ?? 'bytes_limit')\n }\n },\n }\n}\n"],"mappings":";;;;;;;;;;AAeA,MAAa,uBAAwB,KAAK;;;;;AAM1C,MAAa,iBAAiB,sBAAsB,IAAI;;;;;;AAmBxD,SAAgB,sBAAsB,EAAE,uBAAuB,2BAAmD;CAChH,IAAI;CACJ,MAAM,iCAAiC,IAAI,WAA2B;CACtE,MAAM,0BAA0B,sBAAsB,WAAW,UAAU;EACzE,oBAAoB,MAAM;EAC1B,IAAI;GACF,+BAA+B,OAAO,MAAM,MAAM;EACpD,UAAU;GACR,oBAAoB,KAAA;EACtB;EACA,MAAM,MAAM,MAAM;CACpB,CAAC;CACD,MAAM,4BAA4B,wBAAwB,gBAAgB,MAAM,gBAAgB,CAAC;CAEjG,MAAM,kBAAkB,IAAI,uBAAmC;EAC7D,wBAAwB,YAAY;EACpC,0BAA0B,YAAY;CACxC,CAAC;CAED,IAAI,oBAAoB;CACxB,IAAI,uBAAuB;CAE3B,SAAS,MAAM,aAA0B;EACvC,IAAI,yBAAyB,GAC3B;EAGF,MAAM,gBAAgB;EACtB,MAAM,aAAa;EAEnB,uBAAuB;EACvB,oBAAoB;EACpB,2BAA2B;EAE3B,gBAAgB,OAAO;GACrB,QAAQ;GACR;GACA;EACF,CAAC;CACH;CAEA,IAAI;CACJ,SAAS,+BAA+B;EACtC,IAAI,2BAA2B,KAAA,GAC7B,yBAAyB,iBAAiB;GACxC,MAAM,gBAAgB;EACxB,GAAG,oBAAoB;CAE3B;CAEA,SAAS,6BAA6B;EACpC,aAAa,sBAAsB;EACnC,yBAAyB,KAAA;CAC3B;CAEA,OAAO;EACL;EACA;EACA,IAAI,gBAAgB;GAClB,OAAO;EACT;;;;;;;;;;EAWA,uBAAuB,4BAAoC;GACzD,IAAI,oBAAoB,8BAA8B,iCACpD,MAAM,qBAAqB,aAAa;GAK1C,wBAAwB;GACxB,qBAAqB;GACrB,6BAA6B;EAC/B;;;;;;;;;;EAWA,sBAAsB,wBAAwB,GAAG;GAC/C,qBAAqB;GAErB,IAAI,wBAAwB,gBAC1B,MAAM,qBAAqB,gBAAgB;QACtC,IAAI,qBAAqB,iCAC9B,MAAM,qBAAqB,aAAa;EAE5C;CACF;AACF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { monitor, monitorError } from "../tools/monitor.mjs";
|
|
2
|
+
import { Observable } from "../tools/observable.mjs";
|
|
3
|
+
import { ONE_KIBI_BYTE } from "../tools/utils/byteUtils.mjs";
|
|
4
|
+
import { fetch } from "../browser/fetch.mjs";
|
|
5
|
+
import { newRetryState, sendWithRetryStrategy } from "./sendWithRetryStrategy.mjs";
|
|
6
|
+
//#region src/transport/httpRequest.ts
|
|
7
|
+
/**
|
|
8
|
+
* beacon payload max queue size implementation is 64kb
|
|
9
|
+
* ensure that we leave room for logs, rum and potential other users
|
|
10
|
+
*/
|
|
11
|
+
const RECOMMENDED_REQUEST_BYTES_LIMIT = 16 * ONE_KIBI_BYTE;
|
|
12
|
+
function createHttpRequest(endpointBuilders, reportError, bytesLimit = RECOMMENDED_REQUEST_BYTES_LIMIT) {
|
|
13
|
+
const observable = new Observable();
|
|
14
|
+
const retryState = newRetryState();
|
|
15
|
+
return {
|
|
16
|
+
observable,
|
|
17
|
+
send: (payload) => {
|
|
18
|
+
for (const endpointBuilder of endpointBuilders) sendWithRetryStrategy(payload, retryState, (payload, onResponse) => {
|
|
19
|
+
fetchStrategy(endpointBuilder, payload, onResponse);
|
|
20
|
+
}, endpointBuilder.trackType, reportError, observable);
|
|
21
|
+
},
|
|
22
|
+
/**
|
|
23
|
+
* Since fetch keepalive behaves like regular fetch on Firefox,
|
|
24
|
+
* keep using sendBeaconStrategy on exit
|
|
25
|
+
*/
|
|
26
|
+
sendOnExit: (payload) => {
|
|
27
|
+
for (const endpointBuilder of endpointBuilders) sendBeaconStrategy(endpointBuilder, bytesLimit, payload);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function sendBeaconStrategy(endpointBuilder, bytesLimit, payload) {
|
|
32
|
+
if (payload.bytesCount < bytesLimit) try {
|
|
33
|
+
const beaconUrl = endpointBuilder.build("beacon", payload);
|
|
34
|
+
if (navigator.sendBeacon(beaconUrl, payload.data)) return;
|
|
35
|
+
} catch (e) {
|
|
36
|
+
reportBeaconError(e);
|
|
37
|
+
}
|
|
38
|
+
fetchStrategy(endpointBuilder, payload);
|
|
39
|
+
}
|
|
40
|
+
let hasReportedBeaconError = false;
|
|
41
|
+
function reportBeaconError(e) {
|
|
42
|
+
if (!hasReportedBeaconError) {
|
|
43
|
+
hasReportedBeaconError = true;
|
|
44
|
+
monitorError(e);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function fetchStrategy(endpointBuilder, payload, onResponse) {
|
|
48
|
+
fetch(endpointBuilder.build("fetch", payload), {
|
|
49
|
+
method: "POST",
|
|
50
|
+
body: payload.data,
|
|
51
|
+
mode: "cors"
|
|
52
|
+
}).then(monitor((response) => onResponse?.({
|
|
53
|
+
status: response.status,
|
|
54
|
+
type: response.type
|
|
55
|
+
}))).catch(monitor(() => onResponse?.({ status: 0 })));
|
|
56
|
+
}
|
|
57
|
+
//#endregion
|
|
58
|
+
export { RECOMMENDED_REQUEST_BYTES_LIMIT, createHttpRequest };
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=httpRequest.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpRequest.mjs","names":[],"sources":["../../src/transport/httpRequest.ts"],"sourcesContent":["import type { EndpointBuilder } from '../domain/configuration'\nimport type { Context } from '../tools/serialisation/context'\nimport { fetch } from '../browser/fetch'\nimport { monitor, monitorError } from '../tools/monitor'\nimport type { RawError } from '../domain/error/error.types'\nimport { Observable } from '../tools/observable'\nimport { ONE_KIBI_BYTE } from '../tools/utils/byteUtils'\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'\n\n/**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\nexport const RECOMMENDED_REQUEST_BYTES_LIMIT = 16 * ONE_KIBI_BYTE\n\n/**\n * Use POST request without content type to:\n * - avoid CORS preflight requests\n * - allow usage of sendBeacon\n *\n * multiple elements are sent separated by \\n in order\n * to be parsed correctly without content type header\n */\n\nexport interface HttpRequest<Body extends Payload = Payload> {\n observable: Observable<HttpRequestEvent<Body>>\n send(this: void, payload: Body): void\n sendOnExit(this: void, payload: Body): void\n}\n\nexport interface HttpResponse extends Context {\n status: number\n type?: ResponseType\n}\n\nexport interface BandwidthStats {\n ongoingByteCount: number\n ongoingRequestCount: number\n}\n\nexport type HttpRequestEvent<Body extends Payload = Payload> =\n | {\n // A request to send the given payload failed. (We may retry.)\n type: 'failure'\n bandwidth: BandwidthStats\n payload: Body\n }\n | {\n // The given payload was discarded because the request queue is full.\n type: 'queue-full'\n bandwidth: BandwidthStats\n payload: Body\n }\n | {\n // A request to send the given payload succeeded.\n type: 'success'\n bandwidth: BandwidthStats\n payload: Body\n }\n\nexport interface Payload {\n data: string | FormData | Blob\n bytesCount: number\n retry?: RetryInfo\n encoding?: 'deflate'\n}\n\nexport interface RetryInfo {\n count: number\n lastFailureStatus: number\n}\n\nexport function createHttpRequest<Body extends Payload = Payload>(\n endpointBuilders: EndpointBuilder[],\n reportError: (error: RawError) => void,\n bytesLimit: number = RECOMMENDED_REQUEST_BYTES_LIMIT\n): HttpRequest<Body> {\n const observable = new Observable<HttpRequestEvent<Body>>()\n const retryState = newRetryState<Body>()\n\n return {\n observable,\n send: (payload: Body) => {\n for (const endpointBuilder of endpointBuilders) {\n sendWithRetryStrategy(\n payload,\n retryState,\n (payload, onResponse) => {\n fetchStrategy(endpointBuilder, payload, onResponse)\n },\n endpointBuilder.trackType,\n reportError,\n observable\n )\n }\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: (payload: Body) => {\n for (const endpointBuilder of endpointBuilders) {\n sendBeaconStrategy(endpointBuilder, bytesLimit, payload)\n }\n },\n }\n}\n\nfunction sendBeaconStrategy(endpointBuilder: EndpointBuilder, bytesLimit: number, payload: Payload) {\n const canUseBeacon = payload.bytesCount < bytesLimit\n if (canUseBeacon) {\n try {\n const beaconUrl = endpointBuilder.build('beacon', payload)\n const isQueued = navigator.sendBeacon(beaconUrl, payload.data)\n\n if (isQueued) {\n return\n }\n } catch (e) {\n reportBeaconError(e)\n }\n }\n\n fetchStrategy(endpointBuilder, payload)\n}\n\nlet hasReportedBeaconError = false\n\nfunction reportBeaconError(e: unknown) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true\n monitorError(e)\n }\n}\n\nexport function fetchStrategy(\n endpointBuilder: EndpointBuilder,\n payload: Payload,\n onResponse?: (r: HttpResponse) => void\n) {\n const fetchUrl = endpointBuilder.build('fetch', payload)\n\n fetch(fetchUrl, { method: 'POST', body: payload.data, mode: 'cors' })\n .then(monitor((response: Response) => onResponse?.({ status: response.status, type: response.type })))\n .catch(monitor(() => onResponse?.({ status: 0 })))\n}\n"],"mappings":";;;;;;;;;;AAaA,MAAa,kCAAkC,KAAK;AA2DpD,SAAgB,kBACd,kBACA,aACA,aAAqB,iCACF;CACnB,MAAM,aAAa,IAAI,WAAmC;CAC1D,MAAM,aAAa,cAAoB;CAEvC,OAAO;EACL;EACA,OAAO,YAAkB;GACvB,KAAK,MAAM,mBAAmB,kBAC5B,sBACE,SACA,aACC,SAAS,eAAe;IACvB,cAAc,iBAAiB,SAAS,UAAU;GACpD,GACA,gBAAgB,WAChB,aACA,UACF;EAEJ;;;;;EAKA,aAAa,YAAkB;GAC7B,KAAK,MAAM,mBAAmB,kBAC5B,mBAAmB,iBAAiB,YAAY,OAAO;EAE3D;CACF;AACF;AAEA,SAAS,mBAAmB,iBAAkC,YAAoB,SAAkB;CAElG,IADqB,QAAQ,aAAa,YAExC,IAAI;EACF,MAAM,YAAY,gBAAgB,MAAM,UAAU,OAAO;EAGzD,IAFiB,UAAU,WAAW,WAAW,QAAQ,IAE9C,GACT;CAEJ,SAAS,GAAG;EACV,kBAAkB,CAAC;CACrB;CAGF,cAAc,iBAAiB,OAAO;AACxC;AAEA,IAAI,yBAAyB;AAE7B,SAAS,kBAAkB,GAAY;CACrC,IAAI,CAAC,wBAAwB;EAC3B,yBAAyB;EACzB,aAAa,CAAC;CAChB;AACF;AAEA,SAAgB,cACd,iBACA,SACA,YACA;CAGA,MAFiB,gBAAgB,MAAM,SAAS,OAEnC,GAAG;EAAE,QAAQ;EAAQ,MAAM,QAAQ;EAAM,MAAM;CAAO,CAAC,CAAC,CAClE,KAAK,SAAS,aAAuB,aAAa;EAAE,QAAQ,SAAS;EAAQ,MAAM,SAAS;CAAK,CAAC,CAAC,CAAC,CAAC,CACrG,MAAM,cAAc,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AACrD"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { setTimeout } from "../tools/timer.mjs";
|
|
2
|
+
import { ONE_KIBI_BYTE, ONE_MEBI_BYTE } from "../tools/utils/byteUtils.mjs";
|
|
3
|
+
import { ErrorSource } from "../domain/error/error.types.mjs";
|
|
4
|
+
import { isServerError } from "../tools/utils/responseUtils.mjs";
|
|
5
|
+
import { ONE_MINUTE, ONE_SECOND, clocksNow } from "@openobserve/js-core/time";
|
|
6
|
+
//#region src/transport/sendWithRetryStrategy.ts
|
|
7
|
+
const MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;
|
|
8
|
+
const MAX_QUEUE_BYTES_COUNT = 20 * ONE_MEBI_BYTE;
|
|
9
|
+
const MAX_BACKOFF_TIME = ONE_MINUTE;
|
|
10
|
+
const INITIAL_BACKOFF_TIME = ONE_SECOND;
|
|
11
|
+
function sendWithRetryStrategy(payload, state, sendStrategy, trackType, reportError, requestObservable) {
|
|
12
|
+
if (state.transportStatus === 0 && state.queuedPayloads.size() === 0 && state.bandwidthMonitor.canHandle(payload)) send(payload, state, sendStrategy, requestObservable, {
|
|
13
|
+
onSuccess: () => retryQueuedPayloads(0, state, sendStrategy, trackType, reportError, requestObservable),
|
|
14
|
+
onFailure: () => {
|
|
15
|
+
if (!state.queuedPayloads.enqueue(payload)) requestObservable.notify({
|
|
16
|
+
type: "queue-full",
|
|
17
|
+
bandwidth: state.bandwidthMonitor.stats(),
|
|
18
|
+
payload
|
|
19
|
+
});
|
|
20
|
+
scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
else if (!state.queuedPayloads.enqueue(payload)) requestObservable.notify({
|
|
24
|
+
type: "queue-full",
|
|
25
|
+
bandwidth: state.bandwidthMonitor.stats(),
|
|
26
|
+
payload
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable) {
|
|
30
|
+
if (state.transportStatus !== 2) return;
|
|
31
|
+
setTimeout(() => {
|
|
32
|
+
send(state.queuedPayloads.first(), state, sendStrategy, requestObservable, {
|
|
33
|
+
onSuccess: () => {
|
|
34
|
+
state.queuedPayloads.dequeue();
|
|
35
|
+
state.currentBackoffTime = INITIAL_BACKOFF_TIME;
|
|
36
|
+
retryQueuedPayloads(1, state, sendStrategy, trackType, reportError, requestObservable);
|
|
37
|
+
},
|
|
38
|
+
onFailure: () => {
|
|
39
|
+
state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);
|
|
40
|
+
scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}, state.currentBackoffTime);
|
|
44
|
+
}
|
|
45
|
+
function send(payload, state, sendStrategy, requestObservable, { onSuccess, onFailure }) {
|
|
46
|
+
state.bandwidthMonitor.add(payload);
|
|
47
|
+
sendStrategy(payload, (response) => {
|
|
48
|
+
state.bandwidthMonitor.remove(payload);
|
|
49
|
+
if (!shouldRetryRequest(response)) {
|
|
50
|
+
state.transportStatus = 0;
|
|
51
|
+
requestObservable.notify({
|
|
52
|
+
type: "success",
|
|
53
|
+
bandwidth: state.bandwidthMonitor.stats(),
|
|
54
|
+
payload
|
|
55
|
+
});
|
|
56
|
+
onSuccess();
|
|
57
|
+
} else {
|
|
58
|
+
state.transportStatus = state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 : 2;
|
|
59
|
+
payload.retry = {
|
|
60
|
+
count: payload.retry ? payload.retry.count + 1 : 1,
|
|
61
|
+
lastFailureStatus: response.status
|
|
62
|
+
};
|
|
63
|
+
requestObservable.notify({
|
|
64
|
+
type: "failure",
|
|
65
|
+
bandwidth: state.bandwidthMonitor.stats(),
|
|
66
|
+
payload
|
|
67
|
+
});
|
|
68
|
+
onFailure();
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function retryQueuedPayloads(reason, state, sendStrategy, trackType, reportError, requestObservable) {
|
|
73
|
+
if (reason === 0 && state.queuedPayloads.isFull() && !state.queueFullReported) {
|
|
74
|
+
reportError({
|
|
75
|
+
message: `Reached max ${trackType} events size queued for upload: ${MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE}MiB`,
|
|
76
|
+
source: ErrorSource.AGENT,
|
|
77
|
+
startClocks: clocksNow()
|
|
78
|
+
});
|
|
79
|
+
state.queueFullReported = true;
|
|
80
|
+
}
|
|
81
|
+
const previousQueue = state.queuedPayloads;
|
|
82
|
+
state.queuedPayloads = newPayloadQueue();
|
|
83
|
+
while (previousQueue.size() > 0) sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, trackType, reportError, requestObservable);
|
|
84
|
+
}
|
|
85
|
+
function shouldRetryRequest(response) {
|
|
86
|
+
return response.type !== "opaque" && (response.status === 0 && !navigator.onLine || response.status === 408 || response.status === 429 || isServerError(response.status));
|
|
87
|
+
}
|
|
88
|
+
function newRetryState() {
|
|
89
|
+
return {
|
|
90
|
+
transportStatus: 0,
|
|
91
|
+
currentBackoffTime: INITIAL_BACKOFF_TIME,
|
|
92
|
+
bandwidthMonitor: newBandwidthMonitor(),
|
|
93
|
+
queuedPayloads: newPayloadQueue(),
|
|
94
|
+
queueFullReported: false
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function newPayloadQueue() {
|
|
98
|
+
const queue = [];
|
|
99
|
+
return {
|
|
100
|
+
bytesCount: 0,
|
|
101
|
+
enqueue(payload) {
|
|
102
|
+
if (this.isFull()) return false;
|
|
103
|
+
queue.push(payload);
|
|
104
|
+
this.bytesCount += payload.bytesCount;
|
|
105
|
+
return true;
|
|
106
|
+
},
|
|
107
|
+
first() {
|
|
108
|
+
return queue[0];
|
|
109
|
+
},
|
|
110
|
+
dequeue() {
|
|
111
|
+
const payload = queue.shift();
|
|
112
|
+
if (payload) this.bytesCount -= payload.bytesCount;
|
|
113
|
+
return payload;
|
|
114
|
+
},
|
|
115
|
+
size() {
|
|
116
|
+
return queue.length;
|
|
117
|
+
},
|
|
118
|
+
isFull() {
|
|
119
|
+
return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function newBandwidthMonitor() {
|
|
124
|
+
return {
|
|
125
|
+
ongoingRequestCount: 0,
|
|
126
|
+
ongoingByteCount: 0,
|
|
127
|
+
canHandle(payload) {
|
|
128
|
+
return this.ongoingRequestCount === 0 || this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT && this.ongoingRequestCount < 32;
|
|
129
|
+
},
|
|
130
|
+
add(payload) {
|
|
131
|
+
this.ongoingRequestCount += 1;
|
|
132
|
+
this.ongoingByteCount += payload.bytesCount;
|
|
133
|
+
},
|
|
134
|
+
remove(payload) {
|
|
135
|
+
this.ongoingRequestCount -= 1;
|
|
136
|
+
this.ongoingByteCount -= payload.bytesCount;
|
|
137
|
+
},
|
|
138
|
+
stats() {
|
|
139
|
+
return {
|
|
140
|
+
ongoingByteCount: this.ongoingByteCount,
|
|
141
|
+
ongoingRequestCount: this.ongoingRequestCount
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
//#endregion
|
|
147
|
+
export { newRetryState, sendWithRetryStrategy };
|
|
148
|
+
|
|
149
|
+
//# sourceMappingURL=sendWithRetryStrategy.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendWithRetryStrategy.mjs","names":[],"sources":["../../src/transport/sendWithRetryStrategy.ts"],"sourcesContent":["import { ONE_MINUTE, ONE_SECOND, clocksNow } from '@openobserve/js-core/time'\nimport type { TrackType } from '../domain/configuration'\nimport { setTimeout } from '../tools/timer'\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils'\nimport { isServerError } from '../tools/utils/responseUtils'\nimport type { RawError } from '../domain/error/error.types'\nimport { ErrorSource } from '../domain/error/error.types'\nimport type { Observable } from '../tools/observable'\nimport type { Payload, HttpRequestEvent, HttpResponse, BandwidthStats } from './httpRequest'\n\nexport const MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE\nexport const MAX_ONGOING_REQUESTS = 32\nexport const MAX_QUEUE_BYTES_COUNT = 20 * ONE_MEBI_BYTE\nexport const MAX_BACKOFF_TIME = ONE_MINUTE\nexport const INITIAL_BACKOFF_TIME = ONE_SECOND\n\nconst enum TransportStatus {\n UP,\n FAILURE_DETECTED,\n DOWN,\n}\n\nconst enum RetryReason {\n AFTER_SUCCESS,\n AFTER_RESUME,\n}\n\nexport interface RetryState<Body extends Payload> {\n transportStatus: TransportStatus\n currentBackoffTime: number\n bandwidthMonitor: ReturnType<typeof newBandwidthMonitor>\n queuedPayloads: ReturnType<typeof newPayloadQueue<Body>>\n queueFullReported: boolean\n}\n\ntype SendStrategy<Body extends Payload> = (payload: Body, onResponse: (r: HttpResponse) => void) => void\n\nexport function sendWithRetryStrategy<Body extends Payload>(\n payload: Body,\n state: RetryState<Body>,\n sendStrategy: SendStrategy<Body>,\n trackType: TrackType,\n reportError: (error: RawError) => void,\n requestObservable: Observable<HttpRequestEvent<Body>>\n) {\n if (\n state.transportStatus === TransportStatus.UP &&\n state.queuedPayloads.size() === 0 &&\n state.bandwidthMonitor.canHandle(payload)\n ) {\n send(payload, state, sendStrategy, requestObservable, {\n onSuccess: () =>\n retryQueuedPayloads(RetryReason.AFTER_SUCCESS, state, sendStrategy, trackType, reportError, requestObservable),\n onFailure: () => {\n if (!state.queuedPayloads.enqueue(payload)) {\n requestObservable.notify({ type: 'queue-full', bandwidth: state.bandwidthMonitor.stats(), payload })\n }\n scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable)\n },\n })\n } else {\n if (!state.queuedPayloads.enqueue(payload)) {\n requestObservable.notify({ type: 'queue-full', bandwidth: state.bandwidthMonitor.stats(), payload })\n }\n }\n}\n\nfunction scheduleRetry<Body extends Payload>(\n state: RetryState<Body>,\n sendStrategy: SendStrategy<Body>,\n trackType: TrackType,\n reportError: (error: RawError) => void,\n requestObservable: Observable<HttpRequestEvent<Body>>\n) {\n if (state.transportStatus !== TransportStatus.DOWN) {\n return\n }\n setTimeout(() => {\n const payload = state.queuedPayloads.first()\n send(payload, state, sendStrategy, requestObservable, {\n onSuccess: () => {\n state.queuedPayloads.dequeue()\n state.currentBackoffTime = INITIAL_BACKOFF_TIME\n retryQueuedPayloads(RetryReason.AFTER_RESUME, state, sendStrategy, trackType, reportError, requestObservable)\n },\n onFailure: () => {\n state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2)\n scheduleRetry(state, sendStrategy, trackType, reportError, requestObservable)\n },\n })\n }, state.currentBackoffTime)\n}\n\nfunction send<Body extends Payload>(\n payload: Body,\n state: RetryState<Body>,\n sendStrategy: SendStrategy<Body>,\n requestObservable: Observable<HttpRequestEvent<Body>>,\n { onSuccess, onFailure }: { onSuccess: () => void; onFailure: () => void }\n) {\n state.bandwidthMonitor.add(payload)\n sendStrategy(payload, (response) => {\n state.bandwidthMonitor.remove(payload)\n if (!shouldRetryRequest(response)) {\n state.transportStatus = TransportStatus.UP\n requestObservable.notify({ type: 'success', bandwidth: state.bandwidthMonitor.stats(), payload })\n onSuccess()\n } else {\n // do not consider transport down if another ongoing request could succeed\n state.transportStatus =\n state.bandwidthMonitor.ongoingRequestCount > 0 ? TransportStatus.FAILURE_DETECTED : TransportStatus.DOWN\n payload.retry = {\n count: payload.retry ? payload.retry.count + 1 : 1,\n lastFailureStatus: response.status,\n }\n requestObservable.notify({ type: 'failure', bandwidth: state.bandwidthMonitor.stats(), payload })\n onFailure()\n }\n })\n}\n\nfunction retryQueuedPayloads<Body extends Payload>(\n reason: RetryReason,\n state: RetryState<Body>,\n sendStrategy: SendStrategy<Body>,\n trackType: TrackType,\n reportError: (error: RawError) => void,\n requestObservable: Observable<HttpRequestEvent<Body>>\n) {\n if (reason === RetryReason.AFTER_SUCCESS && state.queuedPayloads.isFull() && !state.queueFullReported) {\n reportError({\n message: `Reached max ${trackType} events size queued for upload: ${MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE}MiB`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n })\n state.queueFullReported = true\n }\n const previousQueue = state.queuedPayloads\n state.queuedPayloads = newPayloadQueue()\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(previousQueue.dequeue()!, state, sendStrategy, trackType, reportError, requestObservable)\n }\n}\n\nfunction shouldRetryRequest(response: HttpResponse) {\n return (\n response.type !== 'opaque' &&\n ((response.status === 0 && !navigator.onLine) ||\n response.status === 408 ||\n response.status === 429 ||\n isServerError(response.status))\n )\n}\n\nexport function newRetryState<Body extends Payload>(): RetryState<Body> {\n return {\n transportStatus: TransportStatus.UP,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false,\n }\n}\n\nfunction newPayloadQueue<Body extends Payload>() {\n const queue: Body[] = []\n return {\n bytesCount: 0,\n enqueue(payload: Body) {\n if (this.isFull()) {\n return false\n }\n queue.push(payload)\n this.bytesCount += payload.bytesCount\n return true\n },\n first() {\n return queue[0]\n },\n dequeue() {\n const payload = queue.shift()\n if (payload) {\n this.bytesCount -= payload.bytesCount\n }\n return payload\n },\n size() {\n return queue.length\n },\n isFull() {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT\n },\n }\n}\n\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle(payload: Payload) {\n return (\n this.ongoingRequestCount === 0 ||\n (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n this.ongoingRequestCount < MAX_ONGOING_REQUESTS)\n )\n },\n add(payload: Payload) {\n this.ongoingRequestCount += 1\n this.ongoingByteCount += payload.bytesCount\n },\n remove(payload: Payload) {\n this.ongoingRequestCount -= 1\n this.ongoingByteCount -= payload.bytesCount\n },\n stats(): BandwidthStats {\n return {\n ongoingByteCount: this.ongoingByteCount,\n ongoingRequestCount: this.ongoingRequestCount,\n }\n },\n }\n}\n"],"mappings":";;;;;;AAUA,MAAa,0BAA0B,KAAK;AAE5C,MAAa,wBAAwB,KAAK;AAC1C,MAAa,mBAAmB;AAChC,MAAa,uBAAuB;AAuBpC,SAAgB,sBACd,SACA,OACA,cACA,WACA,aACA,mBACA;CACA,IACE,MAAM,oBAAA,KACN,MAAM,eAAe,KAAK,MAAM,KAChC,MAAM,iBAAiB,UAAU,OAAO,GAExC,KAAK,SAAS,OAAO,cAAc,mBAAmB;EACpD,iBACE,oBAAA,GAA+C,OAAO,cAAc,WAAW,aAAa,iBAAiB;EAC/G,iBAAiB;GACf,IAAI,CAAC,MAAM,eAAe,QAAQ,OAAO,GACvC,kBAAkB,OAAO;IAAE,MAAM;IAAc,WAAW,MAAM,iBAAiB,MAAM;IAAG;GAAQ,CAAC;GAErG,cAAc,OAAO,cAAc,WAAW,aAAa,iBAAiB;EAC9E;CACF,CAAC;MAED,IAAI,CAAC,MAAM,eAAe,QAAQ,OAAO,GACvC,kBAAkB,OAAO;EAAE,MAAM;EAAc,WAAW,MAAM,iBAAiB,MAAM;EAAG;CAAQ,CAAC;AAGzG;AAEA,SAAS,cACP,OACA,cACA,WACA,aACA,mBACA;CACA,IAAI,MAAM,oBAAA,GACR;CAEF,iBAAiB;EAEf,KADgB,MAAM,eAAe,MAC1B,GAAG,OAAO,cAAc,mBAAmB;GACpD,iBAAiB;IACf,MAAM,eAAe,QAAQ;IAC7B,MAAM,qBAAqB;IAC3B,oBAAA,GAA8C,OAAO,cAAc,WAAW,aAAa,iBAAiB;GAC9G;GACA,iBAAiB;IACf,MAAM,qBAAqB,KAAK,IAAI,kBAAkB,MAAM,qBAAqB,CAAC;IAClF,cAAc,OAAO,cAAc,WAAW,aAAa,iBAAiB;GAC9E;EACF,CAAC;CACH,GAAG,MAAM,kBAAkB;AAC7B;AAEA,SAAS,KACP,SACA,OACA,cACA,mBACA,EAAE,WAAW,aACb;CACA,MAAM,iBAAiB,IAAI,OAAO;CAClC,aAAa,UAAU,aAAa;EAClC,MAAM,iBAAiB,OAAO,OAAO;EACrC,IAAI,CAAC,mBAAmB,QAAQ,GAAG;GACjC,MAAM,kBAAA;GACN,kBAAkB,OAAO;IAAE,MAAM;IAAW,WAAW,MAAM,iBAAiB,MAAM;IAAG;GAAQ,CAAC;GAChG,UAAU;EACZ,OAAO;GAEL,MAAM,kBACJ,MAAM,iBAAiB,sBAAsB,IAAA,IAAA;GAC/C,QAAQ,QAAQ;IACd,OAAO,QAAQ,QAAQ,QAAQ,MAAM,QAAQ,IAAI;IACjD,mBAAmB,SAAS;GAC9B;GACA,kBAAkB,OAAO;IAAE,MAAM;IAAW,WAAW,MAAM,iBAAiB,MAAM;IAAG;GAAQ,CAAC;GAChG,UAAU;EACZ;CACF,CAAC;AACH;AAEA,SAAS,oBACP,QACA,OACA,cACA,WACA,aACA,mBACA;CACA,IAAI,WAAA,KAAwC,MAAM,eAAe,OAAO,KAAK,CAAC,MAAM,mBAAmB;EACrG,YAAY;GACV,SAAS,eAAe,UAAU,kCAAkC,wBAAwB,cAAc;GAC1G,QAAQ,YAAY;GACpB,aAAa,UAAU;EACzB,CAAC;EACD,MAAM,oBAAoB;CAC5B;CACA,MAAM,gBAAgB,MAAM;CAC5B,MAAM,iBAAiB,gBAAgB;CACvC,OAAO,cAAc,KAAK,IAAI,GAC5B,sBAAsB,cAAc,QAAQ,GAAI,OAAO,cAAc,WAAW,aAAa,iBAAiB;AAElH;AAEA,SAAS,mBAAmB,UAAwB;CAClD,OACE,SAAS,SAAS,aAChB,SAAS,WAAW,KAAK,CAAC,UAAU,UACpC,SAAS,WAAW,OACpB,SAAS,WAAW,OACpB,cAAc,SAAS,MAAM;AAEnC;AAEA,SAAgB,gBAAwD;CACtE,OAAO;EACL,iBAAA;EACA,oBAAoB;EACpB,kBAAkB,oBAAoB;EACtC,gBAAgB,gBAAgB;EAChC,mBAAmB;CACrB;AACF;AAEA,SAAS,kBAAwC;CAC/C,MAAM,QAAgB,CAAC;CACvB,OAAO;EACL,YAAY;EACZ,QAAQ,SAAe;GACrB,IAAI,KAAK,OAAO,GACd,OAAO;GAET,MAAM,KAAK,OAAO;GAClB,KAAK,cAAc,QAAQ;GAC3B,OAAO;EACT;EACA,QAAQ;GACN,OAAO,MAAM;EACf;EACA,UAAU;GACR,MAAM,UAAU,MAAM,MAAM;GAC5B,IAAI,SACF,KAAK,cAAc,QAAQ;GAE7B,OAAO;EACT;EACA,OAAO;GACL,OAAO,MAAM;EACf;EACA,SAAS;GACP,OAAO,KAAK,cAAc;EAC5B;CACF;AACF;AAEA,SAAS,sBAAsB;CAC7B,OAAO;EACL,qBAAqB;EACrB,kBAAkB;EAClB,UAAU,SAAkB;GAC1B,OACE,KAAK,wBAAwB,KAC5B,KAAK,mBAAmB,QAAQ,cAAc,2BAC7C,KAAK,sBAAA;EAEX;EACA,IAAI,SAAkB;GACpB,KAAK,uBAAuB;GAC5B,KAAK,oBAAoB,QAAQ;EACnC;EACA,OAAO,SAAkB;GACvB,KAAK,uBAAuB;GAC5B,KAAK,oBAAoB,QAAQ;EACnC;EACA,QAAwB;GACtB,OAAO;IACL,kBAAkB,KAAK;IACvB,qBAAqB,KAAK;GAC5B;EACF;CACF;AACF"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openobserve/browser-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0-beta.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
|
-
"module": "esm/index.
|
|
6
|
+
"module": "esm/index.mjs",
|
|
7
7
|
"types": "cjs/index.d.ts",
|
|
8
8
|
"sideEffects": false,
|
|
9
|
+
"files": [
|
|
10
|
+
"cjs",
|
|
11
|
+
"esm",
|
|
12
|
+
"src",
|
|
13
|
+
"!src/**/*.spec.ts",
|
|
14
|
+
"!src/**/*.specHelper.ts"
|
|
15
|
+
],
|
|
9
16
|
"scripts": {
|
|
10
|
-
"build": "node ../../scripts/build/build-package.ts --modules"
|
|
17
|
+
"build": "node ../../scripts/build/build-package.ts --modules",
|
|
18
|
+
"prepack": "yarn build"
|
|
11
19
|
},
|
|
12
20
|
"repository": {
|
|
13
21
|
"type": "git",
|
|
14
22
|
"url": "https://github.com/openobserve/browser-sdk.git",
|
|
15
|
-
"directory": "packages/core"
|
|
23
|
+
"directory": "packages/browser-core"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@openobserve/js-core": "0.4.0-beta.1"
|
|
16
27
|
},
|
|
17
28
|
"devDependencies": {
|
|
18
29
|
"@types/pako": "2.0.4",
|
package/src/boot/init.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { setDebugMode } from '@openobserve/js-core/util'
|
|
1
2
|
import { catchUserErrors } from '../tools/catchUserErrors'
|
|
2
|
-
import { setDebugMode } from '../tools/monitor'
|
|
3
3
|
import { display } from '../tools/display'
|
|
4
4
|
|
|
5
5
|
// replaced at build time
|
|
@@ -49,7 +49,7 @@ export function defineGlobal<Global, Name extends keyof Global>(global: Global,
|
|
|
49
49
|
display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.')
|
|
50
50
|
}
|
|
51
51
|
global[name] = api
|
|
52
|
-
if (existingGlobalVariable
|
|
52
|
+
if (existingGlobalVariable?.q) {
|
|
53
53
|
existingGlobalVariable.q.forEach((fn) => catchUserErrors(fn, 'onReady callback threw an error:')())
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { monitor } from '../tools/monitor'
|
|
2
2
|
import { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue'
|
|
3
|
+
import { noop } from '../tools/utils/functionUtils'
|
|
3
4
|
import type { CookieStore, CookieStoreEventMap, VisualViewport, VisualViewportEventMap } from './browser.types'
|
|
4
5
|
|
|
5
6
|
export type TrustableEvent<E extends Event = Event> = E & { __ooIsTrusted?: boolean }
|
|
@@ -39,6 +40,7 @@ export const enum DOM_EVENT {
|
|
|
39
40
|
SECURITY_POLICY_VIOLATION = 'securitypolicyviolation',
|
|
40
41
|
SELECTION_CHANGE = 'selectionchange',
|
|
41
42
|
STORAGE = 'storage',
|
|
43
|
+
UNHANDLED_REJECTION = 'unhandledrejection',
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
interface AddEventListenerOptions {
|
|
@@ -56,7 +58,10 @@ type EventMapFor<T> = T extends Window
|
|
|
56
58
|
visibilitychange: Event
|
|
57
59
|
}
|
|
58
60
|
: T extends Document
|
|
59
|
-
? DocumentEventMap
|
|
61
|
+
? DocumentEventMap & {
|
|
62
|
+
// TS 4.9.5 does not define `prerenderingchange` on Document yet (Speculation Rules / Prerender2)
|
|
63
|
+
prerenderingchange: Event
|
|
64
|
+
}
|
|
60
65
|
: T extends HTMLElement
|
|
61
66
|
? HTMLElementEventMap
|
|
62
67
|
: T extends VisualViewport
|
|
@@ -87,13 +92,12 @@ type EventMapFor<T> = T extends Window
|
|
|
87
92
|
* * returns a `stop` function to remove the listener
|
|
88
93
|
*/
|
|
89
94
|
export function addEventListener<Target extends EventTarget, EventName extends keyof EventMapFor<Target> & string>(
|
|
90
|
-
configuration: { allowUntrustedEvents?: boolean | undefined },
|
|
91
95
|
eventTarget: Target,
|
|
92
96
|
eventName: EventName,
|
|
93
97
|
listener: (event: EventMapFor<Target>[EventName] & { type: EventName }) => void,
|
|
94
98
|
options?: AddEventListenerOptions
|
|
95
99
|
) {
|
|
96
|
-
return addEventListeners(
|
|
100
|
+
return addEventListeners(eventTarget, [eventName], listener, options)
|
|
97
101
|
}
|
|
98
102
|
|
|
99
103
|
/**
|
|
@@ -109,14 +113,13 @@ export function addEventListener<Target extends EventTarget, EventName extends k
|
|
|
109
113
|
* * with `once: true`, the listener will be called at most once, even if different events are listened
|
|
110
114
|
*/
|
|
111
115
|
export function addEventListeners<Target extends EventTarget, EventName extends keyof EventMapFor<Target> & string>(
|
|
112
|
-
configuration: { allowUntrustedEvents?: boolean | undefined },
|
|
113
116
|
eventTarget: Target,
|
|
114
117
|
eventNames: EventName[],
|
|
115
118
|
listener: (event: EventMapFor<Target>[EventName] & { type: EventName }) => void,
|
|
116
119
|
{ once, capture, passive }: AddEventListenerOptions = {}
|
|
117
120
|
) {
|
|
118
121
|
const listenerWithMonitor = monitor((event: TrustableEvent) => {
|
|
119
|
-
if (!event.isTrusted && !event.__ooIsTrusted &&
|
|
122
|
+
if (!event.isTrusted && !event.__ooIsTrusted && allowUntrustedEventsFromConfiguration === false) {
|
|
120
123
|
return
|
|
121
124
|
}
|
|
122
125
|
if (once) {
|
|
@@ -143,3 +146,32 @@ export function addEventListeners<Target extends EventTarget, EventName extends
|
|
|
143
146
|
stop,
|
|
144
147
|
}
|
|
145
148
|
}
|
|
149
|
+
|
|
150
|
+
export function isEventSupported<Target extends EventTarget, EventName extends keyof EventMapFor<Target> & string>(
|
|
151
|
+
eventTarget: Target | undefined,
|
|
152
|
+
eventName: EventName
|
|
153
|
+
) {
|
|
154
|
+
if (!eventTarget) {
|
|
155
|
+
return false
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
try {
|
|
159
|
+
addEventListener(eventTarget, eventName, noop).stop()
|
|
160
|
+
return true
|
|
161
|
+
} catch {
|
|
162
|
+
return false
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
let allowUntrustedEventsFromConfiguration: boolean | undefined
|
|
167
|
+
|
|
168
|
+
export function setAllowUntrustedEvents(value: boolean | undefined) {
|
|
169
|
+
if (allowUntrustedEventsFromConfiguration === true) {
|
|
170
|
+
return // keep the laxer value (true)
|
|
171
|
+
}
|
|
172
|
+
allowUntrustedEventsFromConfiguration = value ?? false
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export function resetAllowUntrustedEvents() {
|
|
176
|
+
allowUntrustedEventsFromConfiguration = undefined
|
|
177
|
+
}
|
|
@@ -51,20 +51,31 @@ export interface WeakRefConstructor {
|
|
|
51
51
|
new <T extends object>(target: T): WeakRef<T>
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
export interface CookieStoreItem {
|
|
55
|
+
name: string
|
|
56
|
+
value: string
|
|
57
|
+
domain?: string
|
|
58
|
+
path?: string
|
|
59
|
+
expires?: number
|
|
60
|
+
secure?: boolean
|
|
61
|
+
sameSite?: 'strict' | 'lax' | 'none'
|
|
62
|
+
partitioned?: boolean
|
|
63
|
+
}
|
|
64
|
+
|
|
54
65
|
export interface CookieStore extends EventTarget {
|
|
55
|
-
get(name: string): Promise<
|
|
56
|
-
getAll(name?: string): Promise<
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
>
|
|
66
|
+
get(name: string): Promise<CookieStoreItem | null>
|
|
67
|
+
getAll(name?: string): Promise<CookieStoreItem[]>
|
|
68
|
+
set(options: {
|
|
69
|
+
name: string
|
|
70
|
+
value: string
|
|
71
|
+
expires?: number | Date
|
|
72
|
+
domain?: string
|
|
73
|
+
path?: string
|
|
74
|
+
secure?: boolean
|
|
75
|
+
sameSite?: 'strict' | 'lax' | 'none'
|
|
76
|
+
partitioned?: boolean
|
|
77
|
+
}): Promise<void>
|
|
78
|
+
delete(options: { name: string; domain?: string; path?: string; partitioned?: boolean }): Promise<void>
|
|
68
79
|
}
|
|
69
80
|
|
|
70
81
|
export interface CookieStoreEventMap {
|
|
@@ -80,3 +91,106 @@ export type CookieChangeEvent = Event & {
|
|
|
80
91
|
changed: CookieChangeItem[]
|
|
81
92
|
deleted: CookieChangeItem[]
|
|
82
93
|
}
|
|
94
|
+
|
|
95
|
+
export type NetworkInterface = 'bluetooth' | 'cellular' | 'ethernet' | 'none' | 'wifi' | 'wimax' | 'other' | 'unknown'
|
|
96
|
+
export type EffectiveType = 'slow-2g' | '2g' | '3g' | '4g'
|
|
97
|
+
|
|
98
|
+
export interface BrowserNavigator extends Navigator {
|
|
99
|
+
connection?: NetworkInformation
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface NetworkInformation {
|
|
103
|
+
type?: NetworkInterface
|
|
104
|
+
effectiveType?: EffectiveType
|
|
105
|
+
saveData: boolean
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Types for the JS Self-Profiling API
|
|
109
|
+
// https://wicg.github.io/js-self-profiling/
|
|
110
|
+
|
|
111
|
+
export interface ProfilerFrame {
|
|
112
|
+
/** A function instance name. */
|
|
113
|
+
readonly name: string
|
|
114
|
+
/** Index in the trace.resources array. */
|
|
115
|
+
readonly resourceId?: number
|
|
116
|
+
/** 1-based index of the line. */
|
|
117
|
+
readonly line?: number
|
|
118
|
+
/** 1-based index of the column. */
|
|
119
|
+
readonly column?: number
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export interface ProfilerStack {
|
|
123
|
+
/** Index in the trace.stacks array. */
|
|
124
|
+
readonly parentId?: number
|
|
125
|
+
/** Index in the trace.frames array. */
|
|
126
|
+
readonly frameId: number
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export interface ProfilerSample {
|
|
130
|
+
/** High resolution time relative to the profiling session's time origin. */
|
|
131
|
+
readonly timestamp: number
|
|
132
|
+
/** Index in the trace.stacks array. */
|
|
133
|
+
readonly stackId?: number
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export type ProfilerResource = string
|
|
137
|
+
|
|
138
|
+
export interface ProfilerTrace {
|
|
139
|
+
/** An array of profiler resources. */
|
|
140
|
+
readonly resources: ProfilerResource[]
|
|
141
|
+
/** An array of profiler frames. */
|
|
142
|
+
readonly frames: ProfilerFrame[]
|
|
143
|
+
/** An array of profiler stacks. */
|
|
144
|
+
readonly stacks: ProfilerStack[]
|
|
145
|
+
/** An array of profiler samples. */
|
|
146
|
+
readonly samples: ProfilerSample[]
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export interface ProfilerInitOptions {
|
|
150
|
+
/** Sample interval in ms. */
|
|
151
|
+
readonly sampleInterval: number
|
|
152
|
+
/** Max buffer size in number of samples. */
|
|
153
|
+
readonly maxBufferSize: number
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export interface ProfilerConstructor {
|
|
157
|
+
new (options: ProfilerInitOptions): Profiler
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export interface Profiler extends EventTarget {
|
|
161
|
+
/** Sample interval in ms. */
|
|
162
|
+
readonly sampleInterval: number
|
|
163
|
+
/** True if profiler is stopped. */
|
|
164
|
+
readonly stopped: boolean
|
|
165
|
+
|
|
166
|
+
stop(): Promise<ProfilerTrace>
|
|
167
|
+
|
|
168
|
+
addEventListener<K extends keyof ProfilerEventMap>(
|
|
169
|
+
type: K,
|
|
170
|
+
listener: (ev: ProfilerEventMap[K]) => any,
|
|
171
|
+
options?: boolean | AddEventListenerOptions
|
|
172
|
+
): void
|
|
173
|
+
addEventListener(
|
|
174
|
+
type: string,
|
|
175
|
+
listener: EventListenerOrEventListenerObject,
|
|
176
|
+
options?: boolean | AddEventListenerOptions
|
|
177
|
+
): void
|
|
178
|
+
removeEventListener<K extends keyof ProfilerEventMap>(
|
|
179
|
+
type: K,
|
|
180
|
+
listener: (ev: ProfilerEventMap[K]) => any,
|
|
181
|
+
options?: boolean | EventListenerOptions
|
|
182
|
+
): void
|
|
183
|
+
removeEventListener(
|
|
184
|
+
type: string,
|
|
185
|
+
listener: EventListenerOrEventListenerObject,
|
|
186
|
+
options?: boolean | EventListenerOptions
|
|
187
|
+
): void
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
interface ProfilerEventMap {
|
|
191
|
+
samplebufferfull: SampleBufferFullEvent
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
export interface SampleBufferFullEvent extends Event {
|
|
195
|
+
readonly target: Profiler
|
|
196
|
+
}
|