@openobserve/browser-core 0.3.4 → 0.4.0-beta.2
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,27 @@
|
|
|
1
|
+
import { generateUUID } from "../../tools/utils/stringUtils.mjs";
|
|
2
|
+
//#region src/domain/contexts/tabContext.ts
|
|
3
|
+
const TAB_ID_STORAGE_KEY = "_dd_tab_id";
|
|
4
|
+
let cachedTabId;
|
|
5
|
+
function startTabContext(assembleHook) {
|
|
6
|
+
const tabId = retrieveOrCreateTabId();
|
|
7
|
+
assembleHook.register(() => ({ tab: { id: tabId } }));
|
|
8
|
+
}
|
|
9
|
+
function retrieveOrCreateTabId() {
|
|
10
|
+
if (!cachedTabId) cachedTabId = getOrCreateIdInSessionStorage() ?? generateUUID();
|
|
11
|
+
return cachedTabId;
|
|
12
|
+
}
|
|
13
|
+
function getOrCreateIdInSessionStorage() {
|
|
14
|
+
try {
|
|
15
|
+
const existingId = sessionStorage.getItem(TAB_ID_STORAGE_KEY);
|
|
16
|
+
if (existingId) return existingId;
|
|
17
|
+
const newId = generateUUID();
|
|
18
|
+
sessionStorage.setItem(TAB_ID_STORAGE_KEY, newId);
|
|
19
|
+
return newId;
|
|
20
|
+
} catch {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { startTabContext };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=tabContext.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabContext.mjs","names":[],"sources":["../../../src/domain/contexts/tabContext.ts"],"sourcesContent":["import type { Hook } from '@openobserve/js-core/assembly'\nimport { generateUUID } from '../../tools/utils/stringUtils'\n\nexport const TAB_ID_STORAGE_KEY = '_dd_tab_id'\n\nlet cachedTabId: string | undefined\n\n// Exported for test cleanup only — allows specs to reset the in-memory cache between tests.\nexport function resetCachedTabId(): void {\n cachedTabId = undefined\n}\n\nexport function startTabContext(assembleHook: Hook<any, any>) {\n const tabId = retrieveOrCreateTabId()\n\n assembleHook.register(() => ({\n tab: {\n id: tabId,\n },\n }))\n}\n\nfunction retrieveOrCreateTabId(): string {\n if (!cachedTabId) {\n cachedTabId = getOrCreateIdInSessionStorage() ?? generateUUID()\n }\n return cachedTabId\n}\n\nfunction getOrCreateIdInSessionStorage(): string | undefined {\n try {\n const existingId = sessionStorage.getItem(TAB_ID_STORAGE_KEY)\n if (existingId) {\n return existingId\n }\n const newId = generateUUID()\n sessionStorage.setItem(TAB_ID_STORAGE_KEY, newId)\n return newId\n } catch {\n // sessionStorage unavailable (e.g. Web Worker, sandboxed iframe, quota exceeded)\n return undefined\n }\n}\n"],"mappings":";;AAGA,MAAa,qBAAqB;AAElC,IAAI;AAOJ,SAAgB,gBAAgB,cAA8B;CAC5D,MAAM,QAAQ,sBAAsB;CAEpC,aAAa,gBAAgB,EAC3B,KAAK,EACH,IAAI,MACN,EACF,EAAE;AACJ;AAEA,SAAS,wBAAgC;CACvC,IAAI,CAAC,aACH,cAAc,8BAA8B,KAAK,aAAa;CAEhE,OAAO;AACT;AAEA,SAAS,gCAAoD;CAC3D,IAAI;EACF,MAAM,aAAa,eAAe,QAAQ,kBAAkB;EAC5D,IAAI,YACF,OAAO;EAET,MAAM,QAAQ,aAAa;EAC3B,eAAe,QAAQ,oBAAoB,KAAK;EAChD,OAAO;CACT,QAAQ;EAEN;CACF;AACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SKIPPED } from "@openobserve/js-core/assembly";
|
|
2
|
+
//#region src/domain/contexts/telemetrySessionContext.ts
|
|
3
|
+
function startTelemetrySessionContext(assembleTelemetryHook, sessionManager, extraContext) {
|
|
4
|
+
assembleTelemetryHook.register(({ startTime }) => {
|
|
5
|
+
const session = sessionManager.findTrackedSession(startTime);
|
|
6
|
+
if (!session) return SKIPPED;
|
|
7
|
+
return {
|
|
8
|
+
session: { id: session.id },
|
|
9
|
+
anonymous_id: session.anonymousId,
|
|
10
|
+
...extraContext
|
|
11
|
+
};
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { startTelemetrySessionContext };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=telemetrySessionContext.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetrySessionContext.mjs","names":[],"sources":["../../../src/domain/contexts/telemetrySessionContext.ts"],"sourcesContent":["import type { Hook } from '@openobserve/js-core/assembly'\nimport { SKIPPED } from '@openobserve/js-core/assembly'\nimport type { SessionManager } from '../session/sessionManager'\nimport type { Context } from '../../tools/serialisation/context'\n\nexport function startTelemetrySessionContext(\n assembleTelemetryHook: Hook<any, any>,\n sessionManager: SessionManager,\n extraContext?: Context\n) {\n assembleTelemetryHook.register(({ startTime }) => {\n const session = sessionManager.findTrackedSession(startTime)\n\n if (!session) {\n return SKIPPED\n }\n\n return {\n session: {\n id: session.id,\n },\n anonymous_id: session.anonymousId,\n ...extraContext,\n }\n })\n}\n"],"mappings":";;AAKA,SAAgB,6BACd,uBACA,gBACA,cACA;CACA,sBAAsB,UAAU,EAAE,gBAAgB;EAChD,MAAM,UAAU,eAAe,mBAAmB,SAAS;EAE3D,IAAI,CAAC,SACH,OAAO;EAGT,OAAO;GACL,SAAS,EACP,IAAI,QAAQ,GACd;GACA,cAAc,QAAQ;GACtB,GAAG;EACL;CACF,CAAC;AACH"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { isEmptyObject } from "../../tools/utils/objectUtils.mjs";
|
|
2
|
+
import { createContextManager } from "../context/contextManager.mjs";
|
|
3
|
+
import { storeContextManager } from "../context/storeContextManager.mjs";
|
|
4
|
+
import "../context/contextConstants.mjs";
|
|
5
|
+
import { SKIPPED } from "@openobserve/js-core/assembly";
|
|
6
|
+
//#region src/domain/contexts/userContext.ts
|
|
7
|
+
function startUserContext(hook, configuration, sessionManager, productKey) {
|
|
8
|
+
const userContextManager = buildUserContextManager();
|
|
9
|
+
if (configuration.storeContextsAcrossPages) storeContextManager(userContextManager, productKey, 1);
|
|
10
|
+
hook.register(({ eventType, startTime }) => {
|
|
11
|
+
const user = userContextManager.getContext();
|
|
12
|
+
const session = sessionManager.findTrackedSession(startTime);
|
|
13
|
+
if (session?.anonymousId && !user.anonymous_id && !!configuration.trackAnonymousUser) user.anonymous_id = session.anonymousId;
|
|
14
|
+
if (isEmptyObject(user)) return SKIPPED;
|
|
15
|
+
return {
|
|
16
|
+
type: eventType,
|
|
17
|
+
usr: user
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
return userContextManager;
|
|
21
|
+
}
|
|
22
|
+
function buildUserContextManager() {
|
|
23
|
+
return createContextManager("user", { propertiesConfig: {
|
|
24
|
+
id: { type: "string" },
|
|
25
|
+
name: { type: "string" },
|
|
26
|
+
email: { type: "string" }
|
|
27
|
+
} });
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { buildUserContextManager, startUserContext };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=userContext.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userContext.mjs","names":[],"sources":["../../../src/domain/contexts/userContext.ts"],"sourcesContent":["import type { RelativeTime } from '@openobserve/js-core/time'\nimport type { Hook } from '@openobserve/js-core/assembly'\nimport { SKIPPED } from '@openobserve/js-core/assembly'\nimport { CustomerDataType } from '../context/contextConstants'\nimport { storeContextManager } from '../context/storeContextManager'\nimport { createContextManager } from '../context/contextManager'\nimport type { Configuration } from '../configuration'\nimport { isEmptyObject } from '../../tools/utils/objectUtils'\n\nexport interface User {\n id?: string | undefined\n email?: string | undefined\n name?: string | undefined\n [key: string]: unknown\n}\n\nexport function startUserContext(\n hook: Hook<{ eventType?: string; startTime: RelativeTime }, { usr?: User }>,\n configuration: Configuration,\n sessionManager: {\n findTrackedSession: (startTime?: RelativeTime) => { anonymousId?: string } | undefined\n },\n productKey: string\n) {\n const userContextManager = buildUserContextManager()\n\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(userContextManager, productKey, CustomerDataType.User)\n }\n\n hook.register(({ eventType, startTime }) => {\n const user = userContextManager.getContext()\n const session = sessionManager.findTrackedSession(startTime)\n\n if (session?.anonymousId && !user.anonymous_id && !!configuration.trackAnonymousUser) {\n user.anonymous_id = session.anonymousId\n }\n\n if (isEmptyObject(user)) {\n return SKIPPED\n }\n\n return {\n type: eventType,\n usr: user,\n }\n })\n\n return userContextManager\n}\n\nexport function buildUserContextManager() {\n return createContextManager('user', {\n propertiesConfig: {\n id: { type: 'string' },\n name: { type: 'string' },\n email: { type: 'string' },\n },\n })\n}\n"],"mappings":";;;;;;AAgBA,SAAgB,iBACd,MACA,eACA,gBAGA,YACA;CACA,MAAM,qBAAqB,wBAAwB;CAEnD,IAAI,cAAc,0BAChB,oBAAoB,oBAAoB,YAAA,CAAiC;CAG3E,KAAK,UAAU,EAAE,WAAW,gBAAgB;EAC1C,MAAM,OAAO,mBAAmB,WAAW;EAC3C,MAAM,UAAU,eAAe,mBAAmB,SAAS;EAE3D,IAAI,SAAS,eAAe,CAAC,KAAK,gBAAgB,CAAC,CAAC,cAAc,oBAChE,KAAK,eAAe,QAAQ;EAG9B,IAAI,cAAc,IAAI,GACpB,OAAO;EAGT,OAAO;GACL,MAAM;GACN,KAAK;EACP;CACF,CAAC;CAED,OAAO;AACT;AAEA,SAAgB,0BAA0B;CACxC,OAAO,qBAAqB,QAAQ,EAClC,kBAAkB;EAChB,IAAI,EAAE,MAAM,SAAS;EACrB,MAAM,EAAE,MAAM,SAAS;EACvB,OAAO,EAAE,MAAM,SAAS;CAC1B,EACF,CAAC;AACH"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//#region src/domain/deflate/deflate.types.ts
|
|
2
|
+
let DeflateEncoderStreamId = /* @__PURE__ */ function(DeflateEncoderStreamId) {
|
|
3
|
+
DeflateEncoderStreamId[DeflateEncoderStreamId["REPLAY"] = 1] = "REPLAY";
|
|
4
|
+
DeflateEncoderStreamId[DeflateEncoderStreamId["RUM"] = 2] = "RUM";
|
|
5
|
+
DeflateEncoderStreamId[DeflateEncoderStreamId["TELEMETRY"] = 4] = "TELEMETRY";
|
|
6
|
+
DeflateEncoderStreamId[DeflateEncoderStreamId["PROFILING"] = 6] = "PROFILING";
|
|
7
|
+
return DeflateEncoderStreamId;
|
|
8
|
+
}({});
|
|
9
|
+
//#endregion
|
|
10
|
+
export { DeflateEncoderStreamId };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=deflate.types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deflate.types.mjs","names":[],"sources":["../../../src/domain/deflate/deflate.types.ts"],"sourcesContent":["import type { Encoder } from '../../tools/encoder'\nimport type { Uint8ArrayBuffer } from '../../tools/utils/byteUtils'\n\nexport type DeflateWorkerAction =\n // Action to send when creating the worker to check if the communication is working correctly.\n // The worker should respond with a 'initialized' response.\n | {\n action: 'init'\n }\n // Action to send when writing some unfinished data. The worker will respond with a 'wrote'\n // response, with the same id and measurements of the wrote data bytes count.\n | {\n action: 'write'\n id: number\n streamId: number\n data: string\n }\n // Action to send when all data has been written and the state of the stream needs to be reset.\n | {\n action: 'reset'\n streamId: number\n }\n\nexport type DeflateWorkerResponse =\n // Response to 'init' action\n | {\n type: 'initialized'\n version: string\n }\n // Response to 'write' action\n | {\n type: 'wrote'\n id: number\n streamId: number\n result: Uint8ArrayBuffer\n trailer: Uint8ArrayBuffer\n additionalBytesCount: number\n }\n // Could happen at any time when something goes wrong in the worker\n | {\n type: 'errored'\n streamId?: number\n error: Error | string\n }\n\nexport interface DeflateWorker extends Worker {\n postMessage(message: DeflateWorkerAction): void\n}\n\nexport type DeflateEncoder = Encoder<Uint8ArrayBuffer> & { stop: () => void }\n\nexport const enum DeflateEncoderStreamId {\n REPLAY = 1,\n RUM = 2,\n TELEMETRY = 4,\n PROFILING = 6,\n}\n"],"mappings":";AAmDA,IAAkB,yBAAX,yBAAA,wBAAA;CACL,uBAAA,uBAAA,YAAA,KAAA;CACA,uBAAA,uBAAA,SAAA,KAAA;CACA,uBAAA,uBAAA,eAAA,KAAA;CACA,uBAAA,uBAAA,eAAA,KAAA;;AACF,EAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { computeStackTrace } from "../../tools/stackTrace/computeStackTrace.mjs";
|
|
2
|
+
import { toStackTraceString } from "../../tools/stackTrace/handlingStack.mjs";
|
|
3
|
+
import { jsonStringify } from "../../tools/serialisation/jsonStringify.mjs";
|
|
4
|
+
import { sanitize } from "../../tools/serialisation/sanitize.mjs";
|
|
5
|
+
import { isIndexableObject } from "@openobserve/js-core/util";
|
|
6
|
+
//#region src/domain/error/error.ts
|
|
7
|
+
const NO_ERROR_STACK_PRESENT_MESSAGE = "No stack, consider using an instance of Error";
|
|
8
|
+
function computeErrorBase({ originalError, stackTrace, source, useFallbackStack = true, nonErrorPrefix }) {
|
|
9
|
+
const isErrorInstance = isError(originalError);
|
|
10
|
+
if (!stackTrace && isErrorInstance) stackTrace = computeStackTrace(originalError);
|
|
11
|
+
return {
|
|
12
|
+
source,
|
|
13
|
+
type: stackTrace ? stackTrace.name : void 0,
|
|
14
|
+
message: computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError),
|
|
15
|
+
stack: stackTrace ? toStackTraceString(stackTrace) : useFallbackStack ? NO_ERROR_STACK_PRESENT_MESSAGE : void 0
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function computeRawError({ stackTrace, originalError, handlingStack, componentStack, startClocks, nonErrorPrefix, useFallbackStack = true, source, handling }) {
|
|
19
|
+
return {
|
|
20
|
+
startClocks,
|
|
21
|
+
handling,
|
|
22
|
+
handlingStack,
|
|
23
|
+
componentStack,
|
|
24
|
+
originalError,
|
|
25
|
+
...computeErrorBase({
|
|
26
|
+
originalError,
|
|
27
|
+
stackTrace,
|
|
28
|
+
source,
|
|
29
|
+
useFallbackStack,
|
|
30
|
+
nonErrorPrefix
|
|
31
|
+
}),
|
|
32
|
+
causes: isError(originalError) ? flattenErrorCauses(originalError, source) : void 0,
|
|
33
|
+
fingerprint: tryToGetFingerprint(originalError),
|
|
34
|
+
context: tryToGetErrorContext(originalError)
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError) {
|
|
38
|
+
return stackTrace?.message && stackTrace?.name ? stackTrace.message : !isErrorInstance ? nonErrorPrefix ? `${nonErrorPrefix} ${jsonStringify(sanitize(originalError))}` : jsonStringify(sanitize(originalError)) : "Empty message";
|
|
39
|
+
}
|
|
40
|
+
function tryToGetFingerprint(originalError) {
|
|
41
|
+
return isError(originalError) && "oo_fingerprint" in originalError ? String(originalError.oo_fingerprint) : void 0;
|
|
42
|
+
}
|
|
43
|
+
function tryToGetErrorContext(originalError) {
|
|
44
|
+
if (isIndexableObject(originalError)) return originalError.dd_context;
|
|
45
|
+
}
|
|
46
|
+
function getFileFromStackTraceString(stack) {
|
|
47
|
+
return /@ (.+)/.exec(stack)?.[1];
|
|
48
|
+
}
|
|
49
|
+
function isError(error) {
|
|
50
|
+
try {
|
|
51
|
+
return error instanceof Error || Object.prototype.toString.call(error) === "[object Error]";
|
|
52
|
+
} catch {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function flattenErrorCauses(error, parentSource) {
|
|
57
|
+
const causes = [];
|
|
58
|
+
let currentCause = error.cause;
|
|
59
|
+
while (currentCause !== void 0 && currentCause !== null && causes.length < 10) {
|
|
60
|
+
const causeBase = computeErrorBase({
|
|
61
|
+
originalError: currentCause,
|
|
62
|
+
source: parentSource,
|
|
63
|
+
useFallbackStack: false
|
|
64
|
+
});
|
|
65
|
+
causes.push(causeBase);
|
|
66
|
+
currentCause = isError(currentCause) ? currentCause.cause : void 0;
|
|
67
|
+
}
|
|
68
|
+
return causes.length ? causes : void 0;
|
|
69
|
+
}
|
|
70
|
+
//#endregion
|
|
71
|
+
export { NO_ERROR_STACK_PRESENT_MESSAGE, computeRawError, getFileFromStackTraceString, isError };
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=error.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.mjs","names":[],"sources":["../../../src/domain/error/error.ts"],"sourcesContent":["import type { ClocksState } from '@openobserve/js-core/time'\nimport { isIndexableObject } from '@openobserve/js-core/util'\nimport { sanitize } from '../../tools/serialisation/sanitize'\nimport type { Context } from '../../tools/serialisation/context'\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify'\nimport type { StackTrace } from '../../tools/stackTrace/computeStackTrace'\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace'\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack'\nimport type { ErrorSource, ErrorHandling, RawError, RawErrorCause, ErrorWithCause, NonErrorPrefix } from './error.types'\n\nexport const NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error'\n\ninterface RawErrorParams {\n stackTrace?: StackTrace\n originalError: unknown\n handlingStack?: string\n componentStack?: string\n startClocks: ClocksState\n nonErrorPrefix: NonErrorPrefix\n useFallbackStack?: boolean\n source: ErrorSource\n handling: ErrorHandling\n}\n\nfunction computeErrorBase({\n originalError,\n stackTrace,\n source,\n useFallbackStack = true,\n nonErrorPrefix,\n}: {\n originalError: unknown\n stackTrace?: StackTrace\n source: ErrorSource\n useFallbackStack?: boolean\n nonErrorPrefix?: NonErrorPrefix\n}) {\n const isErrorInstance = isError(originalError)\n if (!stackTrace && isErrorInstance) {\n stackTrace = computeStackTrace(originalError)\n }\n\n return {\n source,\n type: stackTrace ? stackTrace.name : undefined,\n message: computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError),\n stack: stackTrace ? toStackTraceString(stackTrace) : useFallbackStack ? NO_ERROR_STACK_PRESENT_MESSAGE : undefined,\n }\n}\n\nexport function computeRawError({\n stackTrace,\n originalError,\n handlingStack,\n componentStack,\n startClocks,\n nonErrorPrefix,\n useFallbackStack = true,\n source,\n handling,\n}: RawErrorParams): RawError {\n const errorBase = computeErrorBase({ originalError, stackTrace, source, useFallbackStack, nonErrorPrefix })\n\n return {\n startClocks,\n handling,\n handlingStack,\n componentStack,\n originalError,\n ...errorBase,\n causes: isError(originalError) ? flattenErrorCauses(originalError, source) : undefined,\n fingerprint: tryToGetFingerprint(originalError),\n context: tryToGetErrorContext(originalError),\n }\n}\n\nfunction computeMessage(\n stackTrace: StackTrace | undefined,\n isErrorInstance: boolean,\n nonErrorPrefix: NonErrorPrefix | undefined,\n originalError: unknown\n) {\n // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n // TODO rework tracekit integration to avoid scattering error building logic\n return stackTrace?.message && stackTrace?.name\n ? stackTrace.message\n : !isErrorInstance\n ? nonErrorPrefix\n ? `${nonErrorPrefix} ${jsonStringify(sanitize(originalError))!}`\n : jsonStringify(sanitize(originalError))!\n : 'Empty message'\n}\n\nexport function tryToGetFingerprint(originalError: unknown) {\n return isError(originalError) && 'oo_fingerprint' in originalError ? String(originalError.oo_fingerprint) : undefined\n}\n\nexport function tryToGetErrorContext(originalError: unknown) {\n if (isIndexableObject(originalError)) {\n return originalError.dd_context as Context | undefined\n }\n}\n\nexport function getFileFromStackTraceString(stack: string) {\n return /@ (.+)/.exec(stack)?.[1]\n}\n\nexport function isError(error: unknown): error is Error {\n try {\n return error instanceof Error || Object.prototype.toString.call(error) === '[object Error]'\n } catch {\n return false\n }\n}\n\nexport function flattenErrorCauses(error: ErrorWithCause, parentSource: ErrorSource): RawErrorCause[] | undefined {\n const causes: RawErrorCause[] = []\n let currentCause = error.cause\n\n while (currentCause !== undefined && currentCause !== null && causes.length < 10) {\n const causeBase = computeErrorBase({\n originalError: currentCause,\n source: parentSource,\n useFallbackStack: false,\n })\n\n causes.push(causeBase)\n\n currentCause = isError(currentCause) ? (currentCause as ErrorWithCause).cause : undefined\n }\n\n return causes.length ? causes : undefined\n}\n"],"mappings":";;;;;;AAUA,MAAa,iCAAiC;AAc9C,SAAS,iBAAiB,EACxB,eACA,YACA,QACA,mBAAmB,MACnB,kBAOC;CACD,MAAM,kBAAkB,QAAQ,aAAa;CAC7C,IAAI,CAAC,cAAc,iBACjB,aAAa,kBAAkB,aAAa;CAG9C,OAAO;EACL;EACA,MAAM,aAAa,WAAW,OAAO,KAAA;EACrC,SAAS,eAAe,YAAY,iBAAiB,gBAAgB,aAAa;EAClF,OAAO,aAAa,mBAAmB,UAAU,IAAI,mBAAmB,iCAAiC,KAAA;CAC3G;AACF;AAEA,SAAgB,gBAAgB,EAC9B,YACA,eACA,eACA,gBACA,aACA,gBACA,mBAAmB,MACnB,QACA,YAC2B;CAG3B,OAAO;EACL;EACA;EACA;EACA;EACA;EACA,GARgB,iBAAiB;GAAE;GAAe;GAAY;GAAQ;GAAkB;EAAe,CAQ5F;EACX,QAAQ,QAAQ,aAAa,IAAI,mBAAmB,eAAe,MAAM,IAAI,KAAA;EAC7E,aAAa,oBAAoB,aAAa;EAC9C,SAAS,qBAAqB,aAAa;CAC7C;AACF;AAEA,SAAS,eACP,YACA,iBACA,gBACA,eACA;CAGA,OAAO,YAAY,WAAW,YAAY,OACtC,WAAW,UACX,CAAC,kBACC,iBACE,GAAG,eAAe,GAAG,cAAc,SAAS,aAAa,CAAC,MAC1D,cAAc,SAAS,aAAa,CAAC,IACvC;AACR;AAEA,SAAgB,oBAAoB,eAAwB;CAC1D,OAAO,QAAQ,aAAa,KAAK,oBAAoB,gBAAgB,OAAO,cAAc,cAAc,IAAI,KAAA;AAC9G;AAEA,SAAgB,qBAAqB,eAAwB;CAC3D,IAAI,kBAAkB,aAAa,GACjC,OAAO,cAAc;AAEzB;AAEA,SAAgB,4BAA4B,OAAe;CACzD,OAAO,SAAS,KAAK,KAAK,CAAC,GAAG;AAChC;AAEA,SAAgB,QAAQ,OAAgC;CACtD,IAAI;EACF,OAAO,iBAAiB,SAAS,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;CAC7E,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAgB,mBAAmB,OAAuB,cAAwD;CAChH,MAAM,SAA0B,CAAC;CACjC,IAAI,eAAe,MAAM;CAEzB,OAAO,iBAAiB,KAAA,KAAa,iBAAiB,QAAQ,OAAO,SAAS,IAAI;EAChF,MAAM,YAAY,iBAAiB;GACjC,eAAe;GACf,QAAQ;GACR,kBAAkB;EACpB,CAAC;EAED,OAAO,KAAK,SAAS;EAErB,eAAe,QAAQ,YAAY,IAAK,aAAgC,QAAQ,KAAA;CAClF;CAEA,OAAO,OAAO,SAAS,SAAS,KAAA;AAClC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//#region src/domain/error/error.types.ts
|
|
2
|
+
const ErrorSource = {
|
|
3
|
+
AGENT: "agent",
|
|
4
|
+
CONSOLE: "console",
|
|
5
|
+
CUSTOM: "custom",
|
|
6
|
+
LOGGER: "logger",
|
|
7
|
+
NETWORK: "network",
|
|
8
|
+
SOURCE: "source",
|
|
9
|
+
REPORT: "report"
|
|
10
|
+
};
|
|
11
|
+
let NonErrorPrefix = /* @__PURE__ */ function(NonErrorPrefix) {
|
|
12
|
+
NonErrorPrefix["UNCAUGHT"] = "Uncaught";
|
|
13
|
+
NonErrorPrefix["PROVIDED"] = "Provided";
|
|
14
|
+
return NonErrorPrefix;
|
|
15
|
+
}({});
|
|
16
|
+
let ErrorHandling = /* @__PURE__ */ function(ErrorHandling) {
|
|
17
|
+
ErrorHandling["HANDLED"] = "handled";
|
|
18
|
+
ErrorHandling["UNHANDLED"] = "unhandled";
|
|
19
|
+
return ErrorHandling;
|
|
20
|
+
}({});
|
|
21
|
+
//#endregion
|
|
22
|
+
export { ErrorHandling, ErrorSource, NonErrorPrefix };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=error.types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.types.mjs","names":[],"sources":["../../../src/domain/error/error.types.ts"],"sourcesContent":["import type { ClocksState } from '@openobserve/js-core/time'\nimport type { Context } from '../../tools/serialisation/context'\n\n// TS v4.6 introduced Error.cause[1] typed as `Error`. TS v4.8 changed Error.cause to be\n// `unknown`[2].\n//\n// Because we still support TS 3.8, we need to declare our own type. We can remove it once we drop\n// support for TS v4.7 and before. The 'cause' property defined by TS needs to be omitted because\n// we define it with a type `unknown` which is incompatible with TS 4.6 and 4.7.\n//\n// [1]: https://devblogs.microsoft.com/typescript/announcing-typescript-4-6/#target-es2022\n// [2]: https://devblogs.microsoft.com/typescript/announcing-typescript-4-8/#lib-d-ts-updates\nexport interface ErrorWithCause extends Omit<Error, 'cause'> {\n cause?: unknown\n}\n\nexport interface RawErrorCause {\n message: string\n source: ErrorSource\n type?: string\n stack?: string\n}\n\nexport interface Csp {\n disposition: 'enforce' | 'report'\n}\n\nexport interface RawError {\n startClocks: ClocksState\n message: string\n type?: string\n stack?: string\n source: ErrorSource\n originalError?: unknown\n handling?: ErrorHandling\n handlingStack?: string\n componentStack?: string\n causes?: RawErrorCause[]\n fingerprint?: string\n csp?: Csp\n context?: Context\n}\n\nexport const ErrorSource = {\n AGENT: 'agent',\n CONSOLE: 'console',\n CUSTOM: 'custom',\n LOGGER: 'logger',\n NETWORK: 'network',\n SOURCE: 'source',\n REPORT: 'report',\n} as const\n\nexport const enum NonErrorPrefix {\n UNCAUGHT = 'Uncaught',\n PROVIDED = 'Provided',\n}\n\nexport const enum ErrorHandling {\n HANDLED = 'handled',\n UNHANDLED = 'unhandled',\n}\n\nexport type ErrorSource = (typeof ErrorSource)[keyof typeof ErrorSource]\n"],"mappings":";AA2CA,MAAa,cAAc;CACzB,OAAO;CACP,SAAS;CACT,QAAQ;CACR,QAAQ;CACR,SAAS;CACT,QAAQ;CACR,QAAQ;AACV;AAEA,IAAkB,iBAAX,yBAAA,gBAAA;CACL,eAAA,cAAA;CACA,eAAA,cAAA;;AACF,EAAA,CAAA,CAAA;AAEA,IAAkB,gBAAX,yBAAA,eAAA;CACL,cAAA,aAAA;CACA,cAAA,eAAA;;AACF,EAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { globalObject } from "../../tools/globalObject.mjs";
|
|
2
|
+
import { Observable } from "../../tools/observable.mjs";
|
|
3
|
+
import { noop } from "../../tools/utils/functionUtils.mjs";
|
|
4
|
+
import { computeStackTraceFromOnErrorMessage } from "../../tools/stackTrace/computeStackTrace.mjs";
|
|
5
|
+
import { instrumentMethod } from "../../tools/instrumentMethod.mjs";
|
|
6
|
+
import { isEventSupported } from "../../browser/addEventListener.mjs";
|
|
7
|
+
import { computeRawError, isError } from "./error.mjs";
|
|
8
|
+
import { ErrorSource } from "./error.types.mjs";
|
|
9
|
+
import { clocksNow } from "@openobserve/js-core/time";
|
|
10
|
+
//#region src/domain/error/trackRuntimeError.ts
|
|
11
|
+
function trackRuntimeError() {
|
|
12
|
+
return new Observable((observer) => {
|
|
13
|
+
const handleRuntimeError = (originalError, stackTrace) => {
|
|
14
|
+
const rawError = computeRawError({
|
|
15
|
+
stackTrace,
|
|
16
|
+
originalError,
|
|
17
|
+
startClocks: clocksNow(),
|
|
18
|
+
nonErrorPrefix: "Uncaught",
|
|
19
|
+
source: ErrorSource.SOURCE,
|
|
20
|
+
handling: "unhandled"
|
|
21
|
+
});
|
|
22
|
+
observer.notify(rawError);
|
|
23
|
+
};
|
|
24
|
+
const { stop: stopInstrumentingOnError } = instrumentOnError(handleRuntimeError);
|
|
25
|
+
const { stop: stopInstrumentingOnUnhandledRejection } = instrumentUnhandledRejection(handleRuntimeError);
|
|
26
|
+
return () => {
|
|
27
|
+
stopInstrumentingOnError();
|
|
28
|
+
stopInstrumentingOnUnhandledRejection();
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function instrumentOnError(callback) {
|
|
33
|
+
return instrumentMethod(globalObject, "onerror", ({ parameters: [messageObj, url, line, column, errorObj] }) => {
|
|
34
|
+
let stackTrace;
|
|
35
|
+
if (!isError(errorObj)) stackTrace = computeStackTraceFromOnErrorMessage(messageObj, url, line, column);
|
|
36
|
+
callback(errorObj ?? messageObj, stackTrace);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function instrumentUnhandledRejection(callback) {
|
|
40
|
+
if (!isEventSupported(globalObject.window, "unhandledrejection")) return { stop: noop };
|
|
41
|
+
return instrumentMethod(globalObject, "onunhandledrejection", ({ parameters: [e] }) => {
|
|
42
|
+
callback(e.reason || "Empty reason");
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { trackRuntimeError };
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=trackRuntimeError.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackRuntimeError.mjs","names":[],"sources":["../../../src/domain/error/trackRuntimeError.ts"],"sourcesContent":["import { clocksNow } from '@openobserve/js-core/time'\nimport { instrumentMethod } from '../../tools/instrumentMethod'\nimport { Observable } from '../../tools/observable'\nimport type { StackTrace } from '../../tools/stackTrace/computeStackTrace'\nimport { computeStackTraceFromOnErrorMessage } from '../../tools/stackTrace/computeStackTrace'\nimport { globalObject } from '../../tools/globalObject'\nimport { DOM_EVENT, isEventSupported } from '../../browser/addEventListener'\nimport { noop } from '../../tools/utils/functionUtils'\nimport { computeRawError, isError } from './error'\nimport type { RawError } from './error.types'\nimport { ErrorHandling, ErrorSource, NonErrorPrefix } from './error.types'\n\nexport type UnhandledErrorCallback = (originalError: unknown, stackTrace?: StackTrace) => any\n\nexport function trackRuntimeError() {\n return new Observable<RawError>((observer) => {\n const handleRuntimeError = (originalError: unknown, stackTrace?: StackTrace) => {\n const rawError = computeRawError({\n stackTrace,\n originalError,\n startClocks: clocksNow(),\n nonErrorPrefix: NonErrorPrefix.UNCAUGHT,\n source: ErrorSource.SOURCE,\n handling: ErrorHandling.UNHANDLED,\n })\n observer.notify(rawError)\n }\n const { stop: stopInstrumentingOnError } = instrumentOnError(handleRuntimeError)\n const { stop: stopInstrumentingOnUnhandledRejection } = instrumentUnhandledRejection(handleRuntimeError)\n\n return () => {\n stopInstrumentingOnError()\n stopInstrumentingOnUnhandledRejection()\n }\n })\n}\n\nexport function instrumentOnError(callback: UnhandledErrorCallback) {\n return instrumentMethod(globalObject, 'onerror', ({ parameters: [messageObj, url, line, column, errorObj] }) => {\n let stackTrace\n if (!isError(errorObj)) {\n stackTrace = computeStackTraceFromOnErrorMessage(messageObj, url, line, column)\n }\n callback(errorObj ?? messageObj, stackTrace)\n })\n}\n\nexport function instrumentUnhandledRejection(callback: UnhandledErrorCallback) {\n // Salesforce LWS does not support the unhandledrejection event. https://developer.salesforce.com/tools/lws-distortion-viewer\n if (!isEventSupported(globalObject.window, DOM_EVENT.UNHANDLED_REJECTION)) {\n return { stop: noop }\n }\n\n return instrumentMethod(globalObject, 'onunhandledrejection', ({ parameters: [e] }) => {\n callback(e.reason || 'Empty reason')\n })\n}\n"],"mappings":";;;;;;;;;;AAcA,SAAgB,oBAAoB;CAClC,OAAO,IAAI,YAAsB,aAAa;EAC5C,MAAM,sBAAsB,eAAwB,eAA4B;GAC9E,MAAM,WAAW,gBAAgB;IAC/B;IACA;IACA,aAAa,UAAU;IACvB,gBAAA;IACA,QAAQ,YAAY;IACpB,UAAA;GACF,CAAC;GACD,SAAS,OAAO,QAAQ;EAC1B;EACA,MAAM,EAAE,MAAM,6BAA6B,kBAAkB,kBAAkB;EAC/E,MAAM,EAAE,MAAM,0CAA0C,6BAA6B,kBAAkB;EAEvG,aAAa;GACX,yBAAyB;GACzB,sCAAsC;EACxC;CACF,CAAC;AACH;AAEA,SAAgB,kBAAkB,UAAkC;CAClE,OAAO,iBAAiB,cAAc,YAAY,EAAE,YAAY,CAAC,YAAY,KAAK,MAAM,QAAQ,gBAAgB;EAC9G,IAAI;EACJ,IAAI,CAAC,QAAQ,QAAQ,GACnB,aAAa,oCAAoC,YAAY,KAAK,MAAM,MAAM;EAEhF,SAAS,YAAY,YAAY,UAAU;CAC7C,CAAC;AACH;AAEA,SAAgB,6BAA6B,UAAkC;CAE7E,IAAI,CAAC,iBAAiB,aAAa,QAAA,oBAAqC,GACtE,OAAO,EAAE,MAAM,KAAK;CAGtB,OAAO,iBAAiB,cAAc,yBAAyB,EAAE,YAAY,CAAC,SAAS;EACrF,SAAS,EAAE,UAAU,cAAc;CACrC,CAAC;AACH"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { setTimeout } from "../../tools/timer.mjs";
|
|
2
|
+
import { ErrorSource } from "../error/error.types.mjs";
|
|
3
|
+
import { ONE_MINUTE, clocksNow } from "@openobserve/js-core/time";
|
|
4
|
+
//#region src/domain/eventRateLimiter/createEventRateLimiter.ts
|
|
5
|
+
const EVENT_RATE_LIMIT = 3e3;
|
|
6
|
+
function createEventRateLimiter(eventType, onLimitReached, limit = EVENT_RATE_LIMIT) {
|
|
7
|
+
let eventCount = 0;
|
|
8
|
+
let allowNextEvent = false;
|
|
9
|
+
return { isLimitReached() {
|
|
10
|
+
if (eventCount === 0) setTimeout(() => {
|
|
11
|
+
eventCount = 0;
|
|
12
|
+
}, ONE_MINUTE);
|
|
13
|
+
eventCount += 1;
|
|
14
|
+
if (eventCount <= limit || allowNextEvent) {
|
|
15
|
+
allowNextEvent = false;
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
if (eventCount === limit + 1) {
|
|
19
|
+
allowNextEvent = true;
|
|
20
|
+
try {
|
|
21
|
+
onLimitReached({
|
|
22
|
+
message: `Reached max number of ${eventType}s by minute: ${limit}`,
|
|
23
|
+
source: ErrorSource.AGENT,
|
|
24
|
+
startClocks: clocksNow()
|
|
25
|
+
});
|
|
26
|
+
} finally {
|
|
27
|
+
allowNextEvent = false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
} };
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { createEventRateLimiter };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=createEventRateLimiter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createEventRateLimiter.mjs","names":[],"sources":["../../../src/domain/eventRateLimiter/createEventRateLimiter.ts"],"sourcesContent":["import { ONE_MINUTE, clocksNow } from '@openobserve/js-core/time'\nimport { setTimeout } from '../../tools/timer'\nimport type { RawError } from '../error/error.types'\nimport { ErrorSource } from '../error/error.types'\n\nexport type EventRateLimiter = ReturnType<typeof createEventRateLimiter>\n\n// Limit the maximum number of actions, errors and logs per minutes\nconst EVENT_RATE_LIMIT = 3000\n\nexport function createEventRateLimiter(\n eventType: string,\n onLimitReached: (limitError: RawError) => void,\n limit = EVENT_RATE_LIMIT\n) {\n let eventCount = 0\n let allowNextEvent = false\n\n return {\n isLimitReached() {\n if (eventCount === 0) {\n setTimeout(() => {\n eventCount = 0\n }, ONE_MINUTE)\n }\n\n eventCount += 1\n if (eventCount <= limit || allowNextEvent) {\n allowNextEvent = false\n return false\n }\n\n if (eventCount === limit + 1) {\n allowNextEvent = true\n try {\n onLimitReached({\n message: `Reached max number of ${eventType}s by minute: ${limit}`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n })\n } finally {\n allowNextEvent = false\n }\n }\n\n return true\n },\n }\n}\n"],"mappings":";;;;AAQA,MAAM,mBAAmB;AAEzB,SAAgB,uBACd,WACA,gBACA,QAAQ,kBACR;CACA,IAAI,aAAa;CACjB,IAAI,iBAAiB;CAErB,OAAO,EACL,iBAAiB;EACf,IAAI,eAAe,GACjB,iBAAiB;GACf,aAAa;EACf,GAAG,UAAU;EAGf,cAAc;EACd,IAAI,cAAc,SAAS,gBAAgB;GACzC,iBAAiB;GACjB,OAAO;EACT;EAEA,IAAI,eAAe,QAAQ,GAAG;GAC5B,iBAAiB;GACjB,IAAI;IACF,eAAe;KACb,SAAS,yBAAyB,UAAU,eAAe;KAC3D,QAAQ,YAAY;KACpB,aAAa,UAAU;IACzB,CAAC;GACH,UAAU;IACR,iBAAiB;GACnB;EACF;EAEA,OAAO;CACT,EACF;AACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/domain/extension/extensionUtils.ts
|
|
2
|
+
const EXTENSION_PREFIXES = ["chrome-extension://", "moz-extension://"];
|
|
3
|
+
function containsExtensionUrl(str) {
|
|
4
|
+
return EXTENSION_PREFIXES.some((prefix) => str.includes(prefix));
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Utility function to detect if the SDK is being initialized in an unsupported browser extension environment.
|
|
8
|
+
*
|
|
9
|
+
* @param windowLocation - The current window location to check
|
|
10
|
+
* @param stack - The error stack to check for extension URLs
|
|
11
|
+
* @returns true if running in an unsupported browser extension environment
|
|
12
|
+
*/
|
|
13
|
+
function isUnsupportedExtensionEnvironment(windowLocation, stack = "") {
|
|
14
|
+
if (containsExtensionUrl(windowLocation)) return false;
|
|
15
|
+
return containsExtensionUrl(stack.split("\n").filter((line) => {
|
|
16
|
+
const trimmedLine = line.trim();
|
|
17
|
+
return trimmedLine.length && /^at\s+|@/.test(trimmedLine);
|
|
18
|
+
})[1] || "");
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { isUnsupportedExtensionEnvironment };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=extensionUtils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensionUtils.mjs","names":[],"sources":["../../../src/domain/extension/extensionUtils.ts"],"sourcesContent":["export const EXTENSION_PREFIXES = ['chrome-extension://', 'moz-extension://']\n\nexport function containsExtensionUrl(str: string): boolean {\n return EXTENSION_PREFIXES.some((prefix) => str.includes(prefix))\n}\n\n/**\n * Utility function to detect if the SDK is being initialized in an unsupported browser extension environment.\n *\n * @param windowLocation - The current window location to check\n * @param stack - The error stack to check for extension URLs\n * @returns true if running in an unsupported browser extension environment\n */\nexport function isUnsupportedExtensionEnvironment(windowLocation: string, stack: string = '') {\n // If the page itself is an extension page.\n if (containsExtensionUrl(windowLocation)) {\n return false\n }\n\n // Since we generate the error on the init, we check the 2nd frame line.\n const frameLines = stack.split('\\n').filter((line) => {\n const trimmedLine = line.trim()\n return trimmedLine.length && /^at\\s+|@/.test(trimmedLine)\n })\n const target = frameLines[1] || ''\n\n return containsExtensionUrl(target)\n}\n"],"mappings":";AAAA,MAAa,qBAAqB,CAAC,uBAAuB,kBAAkB;AAE5E,SAAgB,qBAAqB,KAAsB;CACzD,OAAO,mBAAmB,MAAM,WAAW,IAAI,SAAS,MAAM,CAAC;AACjE;;;;;;;;AASA,SAAgB,kCAAkC,gBAAwB,QAAgB,IAAI;CAE5F,IAAI,qBAAqB,cAAc,GACrC,OAAO;CAUT,OAAO,qBANY,MAAM,MAAM,IAAI,CAAC,CAAC,QAAQ,SAAS;EACpD,MAAM,cAAc,KAAK,KAAK;EAC9B,OAAO,YAAY,UAAU,WAAW,KAAK,WAAW;CAC1D,CACwB,CAAC,CAAC,MAAM,EAEE;AACpC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/domain/intakeSites.ts
|
|
2
|
+
const INTAKE_SITE_STAGING = "datad0g.com";
|
|
3
|
+
const INTAKE_SITE_US1 = "datadoghq.com";
|
|
4
|
+
const INTAKE_SITE_EU1 = "datadoghq.eu";
|
|
5
|
+
const INTAKE_SITE_US1_FED = "ddog-gov.com";
|
|
6
|
+
const INTAKE_SITE_US2_FED = "us2.ddog-gov.com";
|
|
7
|
+
const INTAKE_URL_PARAMETERS = [
|
|
8
|
+
"o2source",
|
|
9
|
+
"o2-api-key",
|
|
10
|
+
"o2-request-id"
|
|
11
|
+
];
|
|
12
|
+
function isIntakeUrl(url) {
|
|
13
|
+
return INTAKE_URL_PARAMETERS.every((param) => url.includes(param));
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { INTAKE_SITE_EU1, INTAKE_SITE_STAGING, INTAKE_SITE_US1, INTAKE_SITE_US1_FED, INTAKE_SITE_US2_FED, INTAKE_URL_PARAMETERS, isIntakeUrl };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=intakeSites.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intakeSites.mjs","names":[],"sources":["../../src/domain/intakeSites.ts"],"sourcesContent":["export type Site =\n | 'datadoghq.com'\n | 'us3.datadoghq.com'\n | 'us5.datadoghq.com'\n | 'datadoghq.eu'\n | 'ddog-gov.com'\n | 'us2.ddog-gov.com'\n | 'ap1.datadoghq.com'\n | 'ap2.datadoghq.com'\n | (string & {})\n\nexport const INTAKE_SITE_STAGING: Site = 'datad0g.com'\nexport const INTAKE_SITE_US1: Site = 'datadoghq.com'\nexport const INTAKE_SITE_EU1: Site = 'datadoghq.eu'\nexport const INTAKE_SITE_US1_FED: Site = 'ddog-gov.com'\nexport const INTAKE_SITE_US2_FED: Site = 'us2.ddog-gov.com'\n\nexport const INTAKE_URL_PARAMETERS = ['o2source', 'o2-api-key', 'o2-request-id']\n\nexport function isIntakeUrl(url: string): boolean {\n // check if tags is present in the query string\n return INTAKE_URL_PARAMETERS.every((param) => url.includes(param))\n}\n"],"mappings":";AAWA,MAAa,sBAA4B;AACzC,MAAa,kBAAwB;AACrC,MAAa,kBAAwB;AACrC,MAAa,sBAA4B;AACzC,MAAa,sBAA4B;AAEzC,MAAa,wBAAwB;CAAC;CAAY;CAAc;AAAe;AAE/E,SAAgB,YAAY,KAAsB;CAEhD,OAAO,sBAAsB,OAAO,UAAU,IAAI,SAAS,KAAK,CAAC;AACnE"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { safeTruncate } from "../../tools/utils/stringUtils.mjs";
|
|
2
|
+
import { monitor } from "../../tools/monitor.mjs";
|
|
3
|
+
import { Observable, mergeObservables } from "../../tools/observable.mjs";
|
|
4
|
+
import { toStackTraceString } from "../../tools/stackTrace/handlingStack.mjs";
|
|
5
|
+
import { addEventListener, isEventSupported } from "../../browser/addEventListener.mjs";
|
|
6
|
+
import { ErrorSource } from "../error/error.types.mjs";
|
|
7
|
+
import { clocksNow } from "@openobserve/js-core/time";
|
|
8
|
+
//#region src/domain/report/reportObservable.ts
|
|
9
|
+
const RawReportType = {
|
|
10
|
+
intervention: "intervention",
|
|
11
|
+
deprecation: "deprecation",
|
|
12
|
+
cspViolation: "csp_violation"
|
|
13
|
+
};
|
|
14
|
+
function initReportObservable(apis) {
|
|
15
|
+
const observables = [];
|
|
16
|
+
if (apis.includes(RawReportType.cspViolation)) observables.push(createCspViolationReportObservable());
|
|
17
|
+
const reportTypes = apis.filter((api) => api !== RawReportType.cspViolation);
|
|
18
|
+
if (reportTypes.length) observables.push(createReportObservable(reportTypes));
|
|
19
|
+
return mergeObservables(...observables);
|
|
20
|
+
}
|
|
21
|
+
function createReportObservable(reportTypes) {
|
|
22
|
+
return new Observable((observable) => {
|
|
23
|
+
if (!window.ReportingObserver) return;
|
|
24
|
+
const handleReports = monitor((reports, _) => reports.forEach((report) => observable.notify(buildRawReportErrorFromReport(report))));
|
|
25
|
+
const observer = new window.ReportingObserver(handleReports, {
|
|
26
|
+
types: reportTypes,
|
|
27
|
+
buffered: true
|
|
28
|
+
});
|
|
29
|
+
observer.observe();
|
|
30
|
+
return () => {
|
|
31
|
+
observer.disconnect();
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function createCspViolationReportObservable() {
|
|
36
|
+
return new Observable((observable) => {
|
|
37
|
+
if (!isEventSupported(document, "securitypolicyviolation")) return;
|
|
38
|
+
const { stop } = addEventListener(document, "securitypolicyviolation", (event) => {
|
|
39
|
+
observable.notify(buildRawReportErrorFromCspViolation(event));
|
|
40
|
+
});
|
|
41
|
+
return stop;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function buildRawReportErrorFromReport(report) {
|
|
45
|
+
const { type, body } = report;
|
|
46
|
+
return buildRawReportError({
|
|
47
|
+
type: body.id,
|
|
48
|
+
message: `${type}: ${body.message}`,
|
|
49
|
+
originalError: report,
|
|
50
|
+
stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber)
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function buildRawReportErrorFromCspViolation(event) {
|
|
54
|
+
const message = `'${event.blockedURI}' blocked by '${event.effectiveDirective}' directive`;
|
|
55
|
+
return buildRawReportError({
|
|
56
|
+
type: event.effectiveDirective,
|
|
57
|
+
message: `${RawReportType.cspViolation}: ${message}`,
|
|
58
|
+
originalError: event,
|
|
59
|
+
csp: { disposition: event.disposition },
|
|
60
|
+
stack: buildStack(event.effectiveDirective, event.originalPolicy ? `${message} of the policy "${safeTruncate(event.originalPolicy, 100, "...")}"` : "no policy", event.sourceFile, event.lineNumber, event.columnNumber)
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function buildRawReportError(partial) {
|
|
64
|
+
return {
|
|
65
|
+
startClocks: clocksNow(),
|
|
66
|
+
source: ErrorSource.REPORT,
|
|
67
|
+
handling: "unhandled",
|
|
68
|
+
...partial
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function buildStack(name, message, sourceFile, lineNumber, columnNumber) {
|
|
72
|
+
return sourceFile ? toStackTraceString({
|
|
73
|
+
name,
|
|
74
|
+
message,
|
|
75
|
+
stack: [{
|
|
76
|
+
func: "?",
|
|
77
|
+
url: sourceFile,
|
|
78
|
+
line: lineNumber ?? void 0,
|
|
79
|
+
column: columnNumber ?? void 0
|
|
80
|
+
}]
|
|
81
|
+
}) : void 0;
|
|
82
|
+
}
|
|
83
|
+
//#endregion
|
|
84
|
+
export { RawReportType, initReportObservable };
|
|
85
|
+
|
|
86
|
+
//# sourceMappingURL=reportObservable.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportObservable.mjs","names":[],"sources":["../../../src/domain/report/reportObservable.ts"],"sourcesContent":["import { clocksNow } from '@openobserve/js-core/time'\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack'\nimport { monitor } from '../../tools/monitor'\nimport { mergeObservables, Observable } from '../../tools/observable'\nimport { addEventListener, DOM_EVENT, isEventSupported } from '../../browser/addEventListener'\nimport { safeTruncate } from '../../tools/utils/stringUtils'\nimport type { RawError } from '../error/error.types'\nimport { ErrorHandling, ErrorSource } from '../error/error.types'\nimport type { ReportType, InterventionReport, DeprecationReport } from './browser.types'\n\nexport const RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation',\n} as const\n\nexport type RawReportType = (typeof RawReportType)[keyof typeof RawReportType]\n\nexport type RawReportError = RawError & {\n originalError: SecurityPolicyViolationEvent | DeprecationReport | InterventionReport\n}\n\nexport function initReportObservable(apis: RawReportType[]) {\n const observables: Array<Observable<RawReportError>> = []\n\n if (apis.includes(RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable())\n }\n\n const reportTypes = apis.filter((api: RawReportType): api is ReportType => api !== RawReportType.cspViolation)\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes))\n }\n\n return mergeObservables(...observables)\n}\n\nfunction createReportObservable(reportTypes: ReportType[]) {\n return new Observable<RawReportError>((observable) => {\n if (!window.ReportingObserver) {\n return\n }\n\n const handleReports = monitor((reports: Array<DeprecationReport | InterventionReport>, _: ReportingObserver) =>\n reports.forEach((report) => observable.notify(buildRawReportErrorFromReport(report)))\n ) as ReportingObserverCallback\n\n const observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true,\n })\n\n observer.observe()\n return () => {\n observer.disconnect()\n }\n })\n}\n\nfunction createCspViolationReportObservable() {\n return new Observable<RawReportError>((observable) => {\n // Salesforce does not allow to add a securitypolicyviolation event listener. https://developer.salesforce.com/tools/lws-distortion-viewer\n if (!isEventSupported(document, DOM_EVENT.SECURITY_POLICY_VIOLATION)) {\n return\n }\n\n const { stop } = addEventListener(document, DOM_EVENT.SECURITY_POLICY_VIOLATION, (event) => {\n observable.notify(buildRawReportErrorFromCspViolation(event))\n })\n\n return stop\n })\n}\n\nfunction buildRawReportErrorFromReport(report: DeprecationReport | InterventionReport): RawReportError {\n const { type, body } = report\n\n return buildRawReportError({\n type: body.id,\n message: `${type}: ${body.message}`,\n originalError: report,\n stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n })\n}\n\nfunction buildRawReportErrorFromCspViolation(event: SecurityPolicyViolationEvent): RawReportError {\n const message = `'${event.blockedURI}' blocked by '${event.effectiveDirective}' directive`\n return buildRawReportError({\n type: event.effectiveDirective,\n message: `${RawReportType.cspViolation}: ${message}`,\n originalError: event,\n csp: {\n disposition: event.disposition,\n },\n stack: buildStack(\n event.effectiveDirective,\n event.originalPolicy\n ? `${message} of the policy \"${safeTruncate(event.originalPolicy, 100, '...')}\"`\n : 'no policy',\n event.sourceFile,\n event.lineNumber,\n event.columnNumber\n ),\n })\n}\n\nfunction buildRawReportError(partial: Omit<RawReportError, 'startClocks' | 'source' | 'handling'>): RawReportError {\n return {\n startClocks: clocksNow(),\n source: ErrorSource.REPORT,\n handling: ErrorHandling.UNHANDLED,\n ...partial,\n }\n}\n\nfunction buildStack(\n name: string,\n message: string,\n sourceFile: string | null,\n lineNumber: number | null,\n columnNumber: number | null\n): string | undefined {\n return sourceFile\n ? toStackTraceString({\n name,\n message,\n stack: [\n {\n func: '?',\n url: sourceFile,\n line: lineNumber ?? undefined,\n column: columnNumber ?? undefined,\n },\n ],\n })\n : undefined\n}\n"],"mappings":";;;;;;;;AAUA,MAAa,gBAAgB;CAC3B,cAAc;CACd,aAAa;CACb,cAAc;AAChB;AAQA,SAAgB,qBAAqB,MAAuB;CAC1D,MAAM,cAAiD,CAAC;CAExD,IAAI,KAAK,SAAS,cAAc,YAAY,GAC1C,YAAY,KAAK,mCAAmC,CAAC;CAGvD,MAAM,cAAc,KAAK,QAAQ,QAA0C,QAAQ,cAAc,YAAY;CAC7G,IAAI,YAAY,QACd,YAAY,KAAK,uBAAuB,WAAW,CAAC;CAGtD,OAAO,iBAAiB,GAAG,WAAW;AACxC;AAEA,SAAS,uBAAuB,aAA2B;CACzD,OAAO,IAAI,YAA4B,eAAe;EACpD,IAAI,CAAC,OAAO,mBACV;EAGF,MAAM,gBAAgB,SAAS,SAAwD,MACrF,QAAQ,SAAS,WAAW,WAAW,OAAO,8BAA8B,MAAM,CAAC,CAAC,CACtF;EAEA,MAAM,WAAW,IAAI,OAAO,kBAAkB,eAAe;GAC3D,OAAO;GACP,UAAU;EACZ,CAAC;EAED,SAAS,QAAQ;EACjB,aAAa;GACX,SAAS,WAAW;EACtB;CACF,CAAC;AACH;AAEA,SAAS,qCAAqC;CAC5C,OAAO,IAAI,YAA4B,eAAe;EAEpD,IAAI,CAAC,iBAAiB,UAAA,yBAA6C,GACjE;EAGF,MAAM,EAAE,SAAS,iBAAiB,UAAA,4BAAgD,UAAU;GAC1F,WAAW,OAAO,oCAAoC,KAAK,CAAC;EAC9D,CAAC;EAED,OAAO;CACT,CAAC;AACH;AAEA,SAAS,8BAA8B,QAAgE;CACrG,MAAM,EAAE,MAAM,SAAS;CAEvB,OAAO,oBAAoB;EACzB,MAAM,KAAK;EACX,SAAS,GAAG,KAAK,IAAI,KAAK;EAC1B,eAAe;EACf,OAAO,WAAW,KAAK,IAAI,KAAK,SAAS,KAAK,YAAY,KAAK,YAAY,KAAK,YAAY;CAC9F,CAAC;AACH;AAEA,SAAS,oCAAoC,OAAqD;CAChG,MAAM,UAAU,IAAI,MAAM,WAAW,gBAAgB,MAAM,mBAAmB;CAC9E,OAAO,oBAAoB;EACzB,MAAM,MAAM;EACZ,SAAS,GAAG,cAAc,aAAa,IAAI;EAC3C,eAAe;EACf,KAAK,EACH,aAAa,MAAM,YACrB;EACA,OAAO,WACL,MAAM,oBACN,MAAM,iBACF,GAAG,QAAQ,kBAAkB,aAAa,MAAM,gBAAgB,KAAK,KAAK,EAAE,KAC5E,aACJ,MAAM,YACN,MAAM,YACN,MAAM,YACR;CACF,CAAC;AACH;AAEA,SAAS,oBAAoB,SAAsF;CACjH,OAAO;EACL,aAAa,UAAU;EACvB,QAAQ,YAAY;EACpB,UAAA;EACA,GAAG;CACL;AACF;AAEA,SAAS,WACP,MACA,SACA,YACA,YACA,cACoB;CACpB,OAAO,aACH,mBAAmB;EACjB;EACA;EACA,OAAO,CACL;GACE,MAAM;GACN,KAAK;GACL,MAAM,cAAc,KAAA;GACpB,QAAQ,gBAAgB,KAAA;EAC1B,CACF;CACF,CAAC,IACD,KAAA;AACN"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/domain/resourceUtils.ts
|
|
2
|
+
const ResourceType = {
|
|
3
|
+
DOCUMENT: "document",
|
|
4
|
+
XHR: "xhr",
|
|
5
|
+
BEACON: "beacon",
|
|
6
|
+
FETCH: "fetch",
|
|
7
|
+
CSS: "css",
|
|
8
|
+
JS: "js",
|
|
9
|
+
IMAGE: "image",
|
|
10
|
+
FONT: "font",
|
|
11
|
+
MEDIA: "media",
|
|
12
|
+
OTHER: "other"
|
|
13
|
+
};
|
|
14
|
+
const RequestType = {
|
|
15
|
+
FETCH: ResourceType.FETCH,
|
|
16
|
+
XHR: ResourceType.XHR
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { RequestType, ResourceType };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=resourceUtils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceUtils.mjs","names":[],"sources":["../../src/domain/resourceUtils.ts"],"sourcesContent":["export const ResourceType = {\n DOCUMENT: 'document',\n XHR: 'xhr',\n BEACON: 'beacon',\n FETCH: 'fetch',\n CSS: 'css',\n JS: 'js',\n IMAGE: 'image',\n FONT: 'font',\n MEDIA: 'media',\n OTHER: 'other',\n} as const\n\nexport type ResourceType = (typeof ResourceType)[keyof typeof ResourceType]\n\nexport const RequestType = {\n FETCH: ResourceType.FETCH,\n XHR: ResourceType.XHR,\n} as const\n\nexport type RequestType = (typeof RequestType)[keyof typeof RequestType]\n"],"mappings":";AAAA,MAAa,eAAe;CAC1B,UAAU;CACV,KAAK;CACL,QAAQ;CACR,OAAO;CACP,KAAK;CACL,IAAI;CACJ,OAAO;CACP,MAAM;CACN,OAAO;CACP,OAAO;AACT;AAIA,MAAa,cAAc;CACzB,OAAO,aAAa;CACpB,KAAK,aAAa;AACpB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//#region src/domain/sampler.ts
|
|
2
|
+
function correctedChildSampleRate(parentRate, childRate) {
|
|
3
|
+
return parentRate * childRate / 100;
|
|
4
|
+
}
|
|
5
|
+
const sampleDecisionCache = /* @__PURE__ */ new Map();
|
|
6
|
+
function isSampled(sessionId, sampleRate) {
|
|
7
|
+
if (sampleRate === 100) return true;
|
|
8
|
+
if (sampleRate === 0) return false;
|
|
9
|
+
const cachedDecision = sampleDecisionCache.get(sampleRate);
|
|
10
|
+
if (sessionId === cachedDecision?.sessionId) return cachedDecision.decision;
|
|
11
|
+
const decision = sampleUsingKnuthFactor(BigInt(`0x${sessionId.split("-")[4]}`), sampleRate);
|
|
12
|
+
sampleDecisionCache.set(sampleRate, {
|
|
13
|
+
sessionId,
|
|
14
|
+
decision
|
|
15
|
+
});
|
|
16
|
+
return decision;
|
|
17
|
+
}
|
|
18
|
+
function resetSampleDecisionCache() {
|
|
19
|
+
sampleDecisionCache.clear();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Perform sampling using the Knuth factor method. This method offer consistent sampling result
|
|
23
|
+
* based on the provided identifier.
|
|
24
|
+
*
|
|
25
|
+
* @param identifier - The identifier to use for sampling.
|
|
26
|
+
* @param sampleRate - The sample rate in percentage between 0 and 100.
|
|
27
|
+
*/
|
|
28
|
+
function sampleUsingKnuthFactor(identifier, sampleRate) {
|
|
29
|
+
const knuthFactor = 1111111111111111111n;
|
|
30
|
+
const twoPow64 = 2n ** 64n;
|
|
31
|
+
const hash = identifier * knuthFactor % twoPow64;
|
|
32
|
+
return Number(hash) <= sampleRate / 100 * Number(twoPow64);
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { correctedChildSampleRate, isSampled, resetSampleDecisionCache, sampleUsingKnuthFactor };
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=sampler.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sampler.mjs","names":[],"sources":["../../src/domain/sampler.ts"],"sourcesContent":["export function correctedChildSampleRate(parentRate: number, childRate: number): number {\n return (parentRate * childRate) / 100\n}\n\nconst sampleDecisionCache: Map<number, { sessionId: string; decision: boolean }> = new Map()\n\nexport function isSampled(sessionId: string, sampleRate: number): boolean {\n // Shortcuts for common cases. This is not strictly necessary, but it makes the code faster for\n // customers willing to ingest all traces.\n if (sampleRate === 100) {\n return true\n }\n\n if (sampleRate === 0) {\n return false\n }\n\n const cachedDecision = sampleDecisionCache.get(sampleRate)\n if (sessionId === cachedDecision?.sessionId) {\n return cachedDecision.decision\n }\n\n const decision = sampleUsingKnuthFactor(BigInt(`0x${sessionId.split('-')[4]}`), sampleRate)\n sampleDecisionCache.set(sampleRate, { sessionId, decision })\n return decision\n}\n\n// Exported for tests\nexport function resetSampleDecisionCache() {\n sampleDecisionCache.clear()\n}\n\n/**\n * Perform sampling using the Knuth factor method. This method offer consistent sampling result\n * based on the provided identifier.\n *\n * @param identifier - The identifier to use for sampling.\n * @param sampleRate - The sample rate in percentage between 0 and 100.\n */\nexport function sampleUsingKnuthFactor(identifier: bigint, sampleRate: number): boolean {\n // The formula is:\n //\n // (identifier * knuthFactor) % 2^64 < sampleRate * 2^64\n //\n // Because JavaScript numbers are 64-bit floats, we can't represent 64-bit integers, and the\n // modulo would be incorrect. Thus, we are using BigInts here.\n //\n // Implementation in other languages:\n // * Go https://github.com/DataDog/dd-trace-go/blob/ec6fbb1f2d517b7b8e69961052adf7136f3af773/ddtrace/tracer/sampler.go#L86-L91\n // * Python https://github.com/DataDog/dd-trace-py/blob/0cee2f066fb6e79aa15947c1514c0f406dea47c5/ddtrace/sampling_rule.py#L197\n // * Ruby https://github.com/DataDog/dd-trace-rb/blob/1a6e255cdcb7e7e22235ea5955f90f6dfa91045d/lib/datadog/tracing/sampling/rate_sampler.rb#L42\n // * C++ https://github.com/DataDog/dd-trace-cpp/blob/159629edc438ae45f2bb318eb7bd51abd05e94b5/src/datadog/trace_sampler.cpp#L58\n // * Java https://github.com/DataDog/dd-trace-java/blob/896dd6b380533216e0bdee59614606c8272d313e/dd-trace-core/src/main/java/datadog/trace/common/sampling/DeterministicSampler.java#L48\n //\n // Note: All implementations have slight variations. Some of them use '<=' instead of '<', and\n // use `sampleRate * 2^64 - 1` instead of `sampleRate * 2^64`. The following implementation\n // should adhere to the spec and is a bit simpler than using a 2^64-1 limit as there are less\n // BigInt arithmetic to write. In practice this does not matter, as we are using floating point\n // numbers in the end, and Number(2n**64n-1n) === Number(2n**64n).\n const knuthFactor = 1111111111111111111n\n const twoPow64 = 2n ** 64n\n const hash = (identifier * knuthFactor) % twoPow64\n return Number(hash) <= (sampleRate / 100) * Number(twoPow64)\n}\n"],"mappings":";AAAA,SAAgB,yBAAyB,YAAoB,WAA2B;CACtF,OAAQ,aAAa,YAAa;AACpC;AAEA,MAAM,sCAA6E,IAAI,IAAI;AAE3F,SAAgB,UAAU,WAAmB,YAA6B;CAGxE,IAAI,eAAe,KACjB,OAAO;CAGT,IAAI,eAAe,GACjB,OAAO;CAGT,MAAM,iBAAiB,oBAAoB,IAAI,UAAU;CACzD,IAAI,cAAc,gBAAgB,WAChC,OAAO,eAAe;CAGxB,MAAM,WAAW,uBAAuB,OAAO,KAAK,UAAU,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,UAAU;CAC1F,oBAAoB,IAAI,YAAY;EAAE;EAAW;CAAS,CAAC;CAC3D,OAAO;AACT;AAGA,SAAgB,2BAA2B;CACzC,oBAAoB,MAAM;AAC5B;;;;;;;;AASA,SAAgB,uBAAuB,YAAoB,YAA6B;CAoBtF,MAAM,cAAc;CACpB,MAAM,WAAW,MAAM;CACvB,MAAM,OAAQ,aAAa,cAAe;CAC1C,OAAO,OAAO,IAAI,KAAM,aAAa,MAAO,OAAO,QAAQ;AAC7D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ONE_HOUR, ONE_MINUTE, ONE_YEAR } from "@openobserve/js-core/time";
|
|
2
|
+
//#region src/domain/session/sessionConstants.ts
|
|
3
|
+
const SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;
|
|
4
|
+
const SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;
|
|
5
|
+
const SESSION_COOKIE_EXPIRATION_DELAY = ONE_YEAR;
|
|
6
|
+
const SESSION_NOT_TRACKED = "0";
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
const SessionPersistence = {
|
|
11
|
+
COOKIE: "cookie",
|
|
12
|
+
MEMORY: "memory",
|
|
13
|
+
LOCAL_STORAGE: "local-storage"
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { SESSION_COOKIE_EXPIRATION_DELAY, SESSION_EXPIRATION_DELAY, SESSION_NOT_TRACKED, SESSION_TIME_OUT_DELAY, SessionPersistence };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=sessionConstants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionConstants.mjs","names":[],"sources":["../../../src/domain/session/sessionConstants.ts"],"sourcesContent":["import { ONE_HOUR, ONE_MINUTE, ONE_YEAR } from '@openobserve/js-core/time'\n\nexport const SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR\nexport const SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE\nexport const SESSION_COOKIE_EXPIRATION_DELAY = ONE_YEAR\nexport const SESSION_NOT_TRACKED = '0'\n\n/**\n * @internal\n */\nexport const SessionPersistence = {\n COOKIE: 'cookie',\n MEMORY: 'memory',\n LOCAL_STORAGE: 'local-storage',\n} as const\n\n/**\n * @inline\n */\nexport type SessionPersistence = (typeof SessionPersistence)[keyof typeof SessionPersistence]\n"],"mappings":";;AAEA,MAAa,yBAAyB,IAAI;AAC1C,MAAa,2BAA2B,KAAK;AAC7C,MAAa,kCAAkC;AAC/C,MAAa,sBAAsB;;;;AAKnC,MAAa,qBAAqB;CAChC,QAAQ;CACR,QAAQ;CACR,eAAe;AACjB"}
|