@openobserve/browser-core 0.3.4 → 0.4.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/cjs/boot/displayAlreadyInitializedError.js +6 -7
- package/cjs/boot/displayAlreadyInitializedError.js.map +1 -1
- package/cjs/boot/init.js +26 -34
- package/cjs/boot/init.js.map +1 -1
- package/cjs/browser/addEventListener.d.ts +10 -8
- package/cjs/browser/addEventListener.js +107 -50
- package/cjs/browser/addEventListener.js.map +1 -1
- package/cjs/browser/browser.types.d.ts +91 -4
- package/cjs/browser/cookie.d.ts +0 -1
- package/cjs/browser/cookie.js +65 -92
- package/cjs/browser/cookie.js.map +1 -1
- package/cjs/browser/cookieAccess.d.ts +16 -0
- package/cjs/browser/cookieAccess.js +114 -0
- package/cjs/browser/cookieAccess.js.map +1 -0
- package/cjs/browser/fetch.d.ts +9 -0
- package/cjs/browser/fetch.js +18 -0
- package/cjs/browser/fetch.js.map +1 -0
- package/cjs/browser/fetchObservable.d.ts +3 -3
- package/cjs/browser/fetchObservable.js +80 -92
- package/cjs/browser/fetchObservable.js.map +1 -1
- package/cjs/browser/pageMayExitObservable.d.ts +1 -2
- package/cjs/browser/pageMayExitObservable.js +41 -40
- package/cjs/browser/pageMayExitObservable.js.map +1 -1
- package/cjs/browser/runOnReadyState.d.ts +2 -3
- package/cjs/browser/runOnReadyState.js +18 -17
- package/cjs/browser/runOnReadyState.js.map +1 -1
- package/cjs/browser/xhrObservable.d.ts +8 -3
- package/cjs/browser/xhrObservable.js +65 -77
- package/cjs/browser/xhrObservable.js.map +1 -1
- package/cjs/domain/allowedTrackingOrigins.d.ts +1 -1
- package/cjs/domain/allowedTrackingOrigins.js +25 -23
- package/cjs/domain/allowedTrackingOrigins.js.map +1 -1
- package/cjs/domain/bufferedData.d.ts +20 -6
- package/cjs/domain/bufferedData.js +41 -19
- package/cjs/domain/bufferedData.js.map +1 -1
- package/cjs/domain/configuration/configuration.d.ts +44 -43
- package/cjs/domain/configuration/configuration.js +122 -125
- package/cjs/domain/configuration/configuration.js.map +1 -1
- package/cjs/domain/configuration/endpointBuilder.d.ts +42 -7
- package/cjs/domain/configuration/endpointBuilder.js +67 -74
- package/cjs/domain/configuration/endpointBuilder.js.map +1 -1
- package/cjs/domain/configuration/index.d.ts +2 -3
- package/cjs/domain/connectivity/connectivity.d.ts +1 -7
- package/cjs/domain/connectivity/connectivity.js +11 -11
- package/cjs/domain/connectivity/connectivity.js.map +1 -1
- package/cjs/domain/console/consoleObservable.d.ts +1 -1
- package/cjs/domain/console/consoleObservable.js +59 -74
- package/cjs/domain/console/consoleObservable.js.map +1 -1
- package/cjs/domain/context/contextConstants.js +24 -15
- package/cjs/domain/context/contextConstants.js.map +1 -1
- package/cjs/domain/context/contextManager.js +49 -54
- package/cjs/domain/context/contextManager.js.map +1 -1
- package/cjs/domain/context/contextUtils.js +11 -12
- package/cjs/domain/context/contextUtils.js.map +1 -1
- package/cjs/domain/context/defineContextMethod.d.ts +2 -2
- package/cjs/domain/context/defineContextMethod.js +15 -16
- package/cjs/domain/context/defineContextMethod.js.map +1 -1
- package/cjs/domain/context/storeContextManager.d.ts +1 -2
- package/cjs/domain/context/storeContextManager.js +30 -33
- package/cjs/domain/context/storeContextManager.js.map +1 -1
- package/cjs/domain/contexts/accountContext.d.ts +2 -2
- package/cjs/domain/contexts/accountContext.js +26 -29
- package/cjs/domain/contexts/accountContext.js.map +1 -1
- package/cjs/domain/contexts/globalContext.d.ts +2 -2
- package/cjs/domain/contexts/globalContext.js +17 -17
- package/cjs/domain/contexts/globalContext.js.map +1 -1
- package/cjs/domain/contexts/tabContext.d.ts +4 -0
- package/cjs/domain/contexts/tabContext.js +27 -0
- package/cjs/domain/contexts/tabContext.js.map +1 -0
- package/cjs/domain/contexts/telemetrySessionContext.d.ts +4 -0
- package/cjs/domain/contexts/telemetrySessionContext.js +17 -0
- package/cjs/domain/contexts/telemetrySessionContext.js.map +1 -0
- package/cjs/domain/contexts/userContext.d.ts +8 -3
- package/cjs/domain/contexts/userContext.js +29 -41
- package/cjs/domain/contexts/userContext.js.map +1 -1
- package/cjs/domain/deflate/deflate.types.js +11 -2
- package/cjs/domain/deflate/deflate.types.js.map +1 -1
- package/cjs/domain/error/error.d.ts +1 -1
- package/cjs/domain/error/error.js +62 -60
- package/cjs/domain/error/error.js.map +1 -1
- package/cjs/domain/error/error.types.d.ts +1 -1
- package/cjs/domain/error/error.types.js +24 -11
- package/cjs/domain/error/error.types.js.map +1 -1
- package/cjs/domain/error/trackRuntimeError.d.ts +3 -2
- package/cjs/domain/error/trackRuntimeError.js +41 -41
- package/cjs/domain/error/trackRuntimeError.js.map +1 -1
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +33 -38
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -1
- package/cjs/domain/extension/extensionUtils.js +18 -25
- package/cjs/domain/extension/extensionUtils.js.map +1 -1
- package/cjs/domain/intakeSites.d.ts +3 -3
- package/cjs/domain/intakeSites.js +23 -10
- package/cjs/domain/intakeSites.js.map +1 -1
- package/cjs/domain/report/reportObservable.d.ts +1 -2
- package/cjs/domain/report/reportObservable.js +73 -85
- package/cjs/domain/report/reportObservable.js.map +1 -1
- package/cjs/domain/resourceUtils.js +19 -17
- package/cjs/domain/resourceUtils.js.map +1 -1
- package/cjs/domain/sampler.d.ts +11 -0
- package/cjs/domain/sampler.js +40 -0
- package/cjs/domain/sampler.js.map +1 -0
- package/cjs/domain/session/sessionConstants.d.ts +1 -0
- package/cjs/domain/session/sessionConstants.js +19 -13
- package/cjs/domain/session/sessionConstants.js.map +1 -1
- package/cjs/domain/session/sessionManager.d.ts +13 -13
- package/cjs/domain/session/sessionManager.js +219 -193
- package/cjs/domain/session/sessionManager.js.map +1 -1
- package/cjs/domain/session/sessionState.d.ts +10 -1
- package/cjs/domain/session/sessionState.js +70 -55
- package/cjs/domain/session/sessionState.js.map +1 -1
- package/cjs/domain/session/sessionStateValidation.js +7 -8
- package/cjs/domain/session/sessionStateValidation.js.map +1 -1
- package/cjs/domain/session/sessionStore.d.ts +4 -33
- package/cjs/domain/session/sessionStore.js +42 -180
- package/cjs/domain/session/sessionStore.js.map +1 -1
- package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +7 -11
- package/cjs/domain/session/storeStrategies/sessionInCookie.js +89 -95
- package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +1 -1
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +1 -4
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +39 -38
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -1
- package/cjs/domain/session/storeStrategies/sessionInMemory.d.ts +12 -0
- package/cjs/domain/session/storeStrategies/sessionInMemory.js +35 -0
- package/cjs/domain/session/storeStrategies/sessionInMemory.js.map +1 -0
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -7
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +7 -4
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -1
- package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +9 -3
- package/cjs/domain/synthetics/syntheticsWorkerValues.js +33 -25
- package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +1 -1
- package/cjs/domain/tags.d.ts +0 -1
- package/cjs/domain/tags.js +22 -58
- package/cjs/domain/tags.js.map +1 -1
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js +8 -7
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +1 -1
- package/cjs/domain/telemetry/telemetry.d.ts +8 -8
- package/cjs/domain/telemetry/telemetry.js +196 -211
- package/cjs/domain/telemetry/telemetry.js.map +1 -1
- package/cjs/domain/telemetry/telemetryEvent.types.d.ts +97 -17
- package/cjs/domain/trackingConsent.d.ts +1 -0
- package/cjs/domain/trackingConsent.js +35 -24
- package/cjs/domain/trackingConsent.js.map +1 -1
- package/cjs/index.d.ts +25 -22
- package/cjs/index.js +281 -194
- package/cjs/tools/abstractLifeCycle.js +19 -26
- package/cjs/tools/abstractLifeCycle.js.map +1 -1
- package/cjs/tools/catchUserErrors.js +12 -12
- package/cjs/tools/catchUserErrors.js.map +1 -1
- package/cjs/tools/display.d.ts +1 -35
- package/cjs/tools/display.js +11 -43
- package/cjs/tools/display.js.map +1 -1
- package/cjs/tools/encoder.js +36 -37
- package/cjs/tools/encoder.js.map +1 -1
- package/cjs/tools/experimentalFeatures.d.ts +1 -4
- package/cjs/tools/experimentalFeatures.js +29 -40
- package/cjs/tools/experimentalFeatures.js.map +1 -1
- package/cjs/tools/getZoneJsOriginalValue.d.ts +1 -1
- package/cjs/tools/getZoneJsOriginalValue.js +22 -25
- package/cjs/tools/getZoneJsOriginalValue.js.map +1 -1
- package/cjs/tools/globalObject.d.ts +16 -15
- package/cjs/tools/globalObject.js +7 -43
- package/cjs/tools/globalObject.js.map +1 -1
- package/cjs/tools/instrumentMethod.d.ts +58 -1
- package/cjs/tools/instrumentMethod.js +174 -112
- package/cjs/tools/instrumentMethod.js.map +1 -1
- package/cjs/tools/matchOption.js +25 -29
- package/cjs/tools/matchOption.js.map +1 -1
- package/cjs/tools/mockable.d.ts +22 -0
- package/cjs/tools/mockable.js +28 -0
- package/cjs/tools/mockable.js.map +1 -0
- package/cjs/tools/monitor.d.ts +5 -7
- package/cjs/tools/monitor.js +13 -58
- package/cjs/tools/monitor.js.map +1 -1
- package/cjs/tools/observable.d.ts +3 -1
- package/cjs/tools/observable.js +75 -85
- package/cjs/tools/observable.js.map +1 -1
- package/cjs/tools/queueMicrotask.js +9 -14
- package/cjs/tools/queueMicrotask.js.map +1 -1
- package/cjs/tools/readBytesFromStream.d.ts +1 -6
- package/cjs/tools/readBytesFromStream.js +18 -25
- package/cjs/tools/readBytesFromStream.js.map +1 -1
- package/cjs/tools/requestIdleCallback.js +22 -29
- package/cjs/tools/requestIdleCallback.js.map +1 -1
- package/cjs/tools/sendToExtension.js +10 -8
- package/cjs/tools/sendToExtension.js.map +1 -1
- package/cjs/tools/serialisation/jsonStringify.js +37 -42
- package/cjs/tools/serialisation/jsonStringify.js.map +1 -1
- package/cjs/tools/serialisation/sanitize.d.ts +1 -0
- package/cjs/tools/serialisation/sanitize.js +111 -167
- package/cjs/tools/serialisation/sanitize.js.map +1 -1
- package/cjs/tools/serialisation/stringify.d.ts +2 -0
- package/cjs/tools/serialisation/stringify.js +18 -0
- package/cjs/tools/serialisation/stringify.js.map +1 -0
- package/cjs/tools/stackTrace/computeStackTrace.js +121 -159
- package/cjs/tools/stackTrace/computeStackTrace.js.map +1 -1
- package/cjs/tools/stackTrace/handlingStack.d.ts +1 -1
- package/cjs/tools/stackTrace/handlingStack.js +39 -38
- package/cjs/tools/stackTrace/handlingStack.js.map +1 -1
- package/cjs/tools/taskQueue.js +40 -49
- package/cjs/tools/taskQueue.js.map +1 -1
- package/cjs/tools/timer.d.ts +2 -1
- package/cjs/tools/timer.js +14 -13
- package/cjs/tools/timer.js.map +1 -1
- package/cjs/tools/utils/arrayUtils.d.ts +1 -0
- package/cjs/tools/utils/arrayUtils.js +17 -13
- package/cjs/tools/utils/arrayUtils.js.map +1 -1
- package/cjs/tools/utils/browserDetection.d.ts +1 -0
- package/cjs/tools/utils/browserDetection.js +25 -23
- package/cjs/tools/utils/browserDetection.js.map +1 -1
- package/cjs/tools/utils/byteUtils.js +20 -28
- package/cjs/tools/utils/byteUtils.js.map +1 -1
- package/cjs/tools/utils/functionUtils.js +33 -40
- package/cjs/tools/utils/functionUtils.js.map +1 -1
- package/cjs/tools/utils/numberUtils.js +15 -14
- package/cjs/tools/utils/numberUtils.js.map +1 -1
- package/cjs/tools/utils/objectUtils.d.ts +2 -0
- package/cjs/tools/utils/objectUtils.js +27 -14
- package/cjs/tools/utils/objectUtils.js.map +1 -1
- package/cjs/tools/utils/polyfills.js +12 -16
- package/cjs/tools/utils/polyfills.js.map +1 -1
- package/cjs/tools/utils/responseUtils.js +11 -12
- package/cjs/tools/utils/responseUtils.js.map +1 -1
- package/cjs/tools/utils/stringUtils.js +56 -77
- package/cjs/tools/utils/stringUtils.js.map +1 -1
- package/cjs/tools/utils/timezone.js +9 -10
- package/cjs/tools/utils/timezone.js.map +1 -1
- package/cjs/tools/utils/urlPolyfill.js +42 -46
- package/cjs/tools/utils/urlPolyfill.js.map +1 -1
- package/cjs/tools/valueHistory.d.ts +9 -1
- package/cjs/tools/valueHistory.js +110 -99
- package/cjs/tools/valueHistory.js.map +1 -1
- package/cjs/transport/batch.js +73 -106
- package/cjs/transport/batch.js.map +1 -1
- package/cjs/transport/eventBridge.d.ts +6 -2
- package/cjs/transport/eventBridge.js +53 -38
- package/cjs/transport/eventBridge.js.map +1 -1
- package/cjs/transport/flushController.d.ts +2 -12
- package/cjs/transport/flushController.js +98 -117
- package/cjs/transport/flushController.js.map +1 -1
- package/cjs/transport/httpRequest.d.ts +0 -1
- package/cjs/transport/httpRequest.js +51 -85
- package/cjs/transport/httpRequest.js.map +1 -1
- package/cjs/transport/index.d.ts +1 -0
- package/cjs/transport/sendWithRetryStrategy.js +133 -146
- package/cjs/transport/sendWithRetryStrategy.js.map +1 -1
- package/esm/boot/displayAlreadyInitializedError.mjs +9 -0
- package/esm/boot/displayAlreadyInitializedError.mjs.map +1 -0
- package/esm/boot/init.mjs +30 -0
- package/esm/boot/init.mjs.map +1 -0
- package/esm/browser/addEventListener.mjs +107 -0
- package/esm/browser/addEventListener.mjs.map +1 -0
- package/esm/browser/cookie.mjs +81 -0
- package/esm/browser/cookie.mjs.map +1 -0
- package/esm/browser/cookieAccess.mjs +111 -0
- package/esm/browser/cookieAccess.mjs.map +1 -0
- package/esm/browser/fetch.mjs +18 -0
- package/esm/browser/fetch.mjs.map +1 -0
- package/esm/browser/fetchObservable.mjs +90 -0
- package/esm/browser/fetchObservable.mjs.map +1 -0
- package/esm/browser/pageMayExitObservable.mjs +44 -0
- package/esm/browser/pageMayExitObservable.mjs.map +1 -0
- package/esm/browser/runOnReadyState.mjs +19 -0
- package/esm/browser/runOnReadyState.mjs.map +1 -0
- package/esm/browser/xhrObservable.mjs +74 -0
- package/esm/browser/xhrObservable.mjs.map +1 -0
- package/esm/domain/allowedTrackingOrigins.mjs +27 -0
- package/esm/domain/allowedTrackingOrigins.mjs.map +1 -0
- package/esm/domain/bufferedData.mjs +43 -0
- package/esm/domain/bufferedData.mjs.map +1 -0
- package/esm/domain/configuration/configuration.mjs +131 -0
- package/esm/domain/configuration/configuration.mjs.map +1 -0
- package/esm/domain/configuration/endpointBuilder.mjs +72 -0
- package/esm/domain/configuration/endpointBuilder.mjs.map +1 -0
- package/esm/domain/connectivity/connectivity.mjs +14 -0
- package/esm/domain/connectivity/connectivity.mjs.map +1 -0
- package/esm/domain/console/consoleObservable.mjs +69 -0
- package/esm/domain/console/consoleObservable.mjs.map +1 -0
- package/esm/domain/context/contextConstants.mjs +25 -0
- package/esm/domain/context/contextConstants.mjs.map +1 -0
- package/esm/domain/context/contextManager.mjs +55 -0
- package/esm/domain/context/contextManager.mjs.map +1 -0
- package/esm/domain/context/contextUtils.mjs +15 -0
- package/esm/domain/context/contextUtils.mjs.map +1 -0
- package/esm/domain/context/defineContextMethod.mjs +19 -0
- package/esm/domain/context/defineContextMethod.mjs.map +1 -0
- package/esm/domain/context/storeContextManager.mjs +36 -0
- package/esm/domain/context/storeContextManager.mjs.map +1 -0
- package/esm/domain/contexts/accountContext.mjs +29 -0
- package/esm/domain/contexts/accountContext.mjs.map +1 -0
- package/esm/domain/contexts/globalContext.mjs +20 -0
- package/esm/domain/contexts/globalContext.mjs.map +1 -0
- package/esm/domain/contexts/tabContext.mjs +27 -0
- package/esm/domain/contexts/tabContext.mjs.map +1 -0
- package/esm/domain/contexts/telemetrySessionContext.mjs +17 -0
- package/esm/domain/contexts/telemetrySessionContext.mjs.map +1 -0
- package/esm/domain/contexts/userContext.mjs +32 -0
- package/esm/domain/contexts/userContext.mjs.map +1 -0
- package/esm/domain/deflate/deflate.types.mjs +12 -0
- package/esm/domain/deflate/deflate.types.mjs.map +1 -0
- package/esm/domain/error/error.mjs +73 -0
- package/esm/domain/error/error.mjs.map +1 -0
- package/esm/domain/error/error.types.mjs +24 -0
- package/esm/domain/error/error.types.mjs.map +1 -0
- package/esm/domain/error/trackRuntimeError.mjs +48 -0
- package/esm/domain/error/trackRuntimeError.mjs.map +1 -0
- package/esm/domain/eventRateLimiter/createEventRateLimiter.mjs +36 -0
- package/esm/domain/eventRateLimiter/createEventRateLimiter.mjs.map +1 -0
- package/esm/domain/extension/extensionUtils.mjs +23 -0
- package/esm/domain/extension/extensionUtils.mjs.map +1 -0
- package/esm/domain/intakeSites.mjs +18 -0
- package/esm/domain/intakeSites.mjs.map +1 -0
- package/esm/domain/report/reportObservable.mjs +86 -0
- package/esm/domain/report/reportObservable.mjs.map +1 -0
- package/esm/domain/resourceUtils.mjs +21 -0
- package/esm/domain/resourceUtils.mjs.map +1 -0
- package/esm/domain/sampler.mjs +37 -0
- package/esm/domain/sampler.mjs.map +1 -0
- package/esm/domain/session/sessionConstants.mjs +18 -0
- package/esm/domain/session/sessionConstants.mjs.map +1 -0
- package/esm/domain/session/sessionManager.mjs +225 -0
- package/esm/domain/session/sessionManager.mjs.map +1 -0
- package/esm/domain/session/sessionState.mjs +76 -0
- package/esm/domain/session/sessionState.mjs.map +1 -0
- package/esm/domain/session/sessionStateValidation.mjs +9 -0
- package/esm/domain/session/sessionStateValidation.mjs.map +1 -0
- package/esm/domain/session/sessionStore.mjs +46 -0
- package/esm/domain/session/sessionStore.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInCookie.mjs +97 -0
- package/esm/domain/session/storeStrategies/sessionInCookie.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.mjs +42 -0
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInMemory.mjs +33 -0
- package/esm/domain/session/storeStrategies/sessionInMemory.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.mjs +7 -0
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.mjs.map +1 -0
- package/esm/domain/synthetics/syntheticsWorkerValues.mjs +37 -0
- package/esm/domain/synthetics/syntheticsWorkerValues.mjs.map +1 -0
- package/esm/domain/tags.mjs +28 -0
- package/esm/domain/tags.mjs.map +1 -0
- package/esm/domain/telemetry/rawTelemetryEvent.types.mjs +10 -0
- package/esm/domain/telemetry/rawTelemetryEvent.types.mjs.map +1 -0
- package/esm/domain/telemetry/telemetry.mjs +219 -0
- package/esm/domain/telemetry/telemetry.mjs.map +1 -0
- package/esm/domain/trackingConsent.mjs +38 -0
- package/esm/domain/trackingConsent.mjs.map +1 -0
- package/esm/index.mjs +81 -0
- package/esm/tools/abstractLifeCycle.mjs +21 -0
- package/esm/tools/abstractLifeCycle.mjs.map +1 -0
- package/esm/tools/catchUserErrors.mjs +15 -0
- package/esm/tools/catchUserErrors.mjs.map +1 -0
- package/esm/tools/display.mjs +10 -0
- package/esm/tools/display.mjs.map +1 -0
- package/esm/tools/encoder.mjs +39 -0
- package/esm/tools/encoder.mjs.map +1 -0
- package/esm/tools/experimentalFeatures.mjs +35 -0
- package/esm/tools/experimentalFeatures.mjs.map +1 -0
- package/esm/tools/getZoneJsOriginalValue.mjs +26 -0
- package/esm/tools/getZoneJsOriginalValue.mjs.map +1 -0
- package/esm/tools/globalObject.mjs +7 -0
- package/esm/tools/globalObject.mjs.map +1 -0
- package/esm/tools/instrumentMethod.mjs +178 -0
- package/esm/tools/instrumentMethod.mjs.map +1 -0
- package/esm/tools/matchOption.mjs +30 -0
- package/esm/tools/matchOption.mjs.map +1 -0
- package/esm/tools/mockable.mjs +28 -0
- package/esm/tools/mockable.mjs.map +1 -0
- package/esm/tools/monitor.mjs +13 -0
- package/esm/tools/monitor.mjs.map +1 -0
- package/esm/tools/observable.mjs +77 -0
- package/esm/tools/observable.mjs.map +1 -0
- package/esm/tools/queueMicrotask.mjs +12 -0
- package/esm/tools/queueMicrotask.mjs.map +1 -0
- package/esm/tools/readBytesFromStream.mjs +21 -0
- package/esm/tools/readBytesFromStream.mjs.map +1 -0
- package/esm/tools/requestIdleCallback.mjs +28 -0
- package/esm/tools/requestIdleCallback.mjs.map +1 -0
- package/esm/tools/sendToExtension.mjs +13 -0
- package/esm/tools/sendToExtension.mjs.map +1 -0
- package/esm/tools/serialisation/jsonStringify.mjs +42 -0
- package/esm/tools/serialisation/jsonStringify.mjs.map +1 -0
- package/esm/tools/serialisation/sanitize.mjs +131 -0
- package/esm/tools/serialisation/sanitize.mjs.map +1 -0
- package/esm/tools/serialisation/stringify.mjs +17 -0
- package/esm/tools/serialisation/stringify.mjs.map +1 -0
- package/esm/tools/stackTrace/computeStackTrace.mjs +148 -0
- package/esm/tools/stackTrace/computeStackTrace.mjs.map +1 -0
- package/esm/tools/stackTrace/handlingStack.mjs +45 -0
- package/esm/tools/stackTrace/handlingStack.mjs.map +1 -0
- package/esm/tools/taskQueue.mjs +45 -0
- package/esm/tools/taskQueue.mjs.map +1 -0
- package/esm/tools/timer.mjs +20 -0
- package/esm/tools/timer.mjs.map +1 -0
- package/esm/tools/utils/arrayUtils.mjs +21 -0
- package/esm/tools/utils/arrayUtils.mjs.map +1 -0
- package/esm/tools/utils/browserDetection.mjs +31 -0
- package/esm/tools/utils/browserDetection.mjs.map +1 -0
- package/esm/tools/utils/byteUtils.mjs +23 -0
- package/esm/tools/utils/byteUtils.mjs.map +1 -0
- package/esm/tools/utils/functionUtils.mjs +35 -0
- package/esm/tools/utils/functionUtils.mjs.map +1 -0
- package/esm/tools/utils/numberUtils.mjs +22 -0
- package/esm/tools/utils/numberUtils.mjs.map +1 -0
- package/esm/tools/utils/objectUtils.mjs +31 -0
- package/esm/tools/utils/objectUtils.mjs.map +1 -0
- package/esm/tools/utils/polyfills.mjs +17 -0
- package/esm/tools/utils/polyfills.mjs.map +1 -0
- package/esm/tools/utils/responseUtils.mjs +15 -0
- package/esm/tools/utils/responseUtils.mjs.map +1 -0
- package/esm/tools/utils/stringUtils.mjs +66 -0
- package/esm/tools/utils/stringUtils.mjs.map +1 -0
- package/esm/tools/utils/timezone.mjs +12 -0
- package/esm/tools/utils/timezone.mjs.map +1 -0
- package/esm/tools/utils/urlPolyfill.mjs +51 -0
- package/esm/tools/utils/urlPolyfill.mjs.map +1 -0
- package/esm/tools/valueHistory.mjs +114 -0
- package/esm/tools/valueHistory.mjs.map +1 -0
- package/esm/transport/batch.mjs +77 -0
- package/esm/transport/batch.mjs.map +1 -0
- package/esm/transport/eventBridge.mjs +58 -0
- package/esm/transport/eventBridge.mjs.map +1 -0
- package/esm/transport/flushController.mjs +104 -0
- package/esm/transport/flushController.mjs.map +1 -0
- package/esm/transport/httpRequest.mjs +60 -0
- package/esm/transport/httpRequest.mjs.map +1 -0
- package/esm/transport/sendWithRetryStrategy.mjs +149 -0
- package/esm/transport/sendWithRetryStrategy.mjs.map +1 -0
- package/package.json +15 -4
- package/src/boot/init.ts +2 -2
- package/src/browser/addEventListener.ts +37 -5
- package/src/browser/browser.types.ts +127 -13
- package/src/browser/cookie.ts +21 -27
- package/src/browser/cookieAccess.ts +150 -0
- package/src/browser/fetch.ts +14 -0
- package/src/browser/fetchObservable.ts +22 -22
- package/src/browser/pageMayExitObservable.ts +7 -4
- package/src/browser/runOnReadyState.ts +3 -8
- package/src/browser/xhrObservable.ts +22 -12
- package/src/domain/allowedTrackingOrigins.ts +5 -5
- package/src/domain/bufferedData.ts +41 -14
- package/src/domain/configuration/configuration.ts +87 -72
- package/src/domain/configuration/endpointBuilder.ts +82 -52
- package/src/domain/configuration/index.ts +2 -2
- package/src/domain/connectivity/connectivity.ts +3 -15
- package/src/domain/console/consoleObservable.ts +3 -3
- package/src/domain/context/contextManager.ts +1 -1
- package/src/domain/context/contextUtils.ts +1 -1
- package/src/domain/context/defineContextMethod.ts +3 -3
- package/src/domain/context/storeContextManager.ts +9 -6
- package/src/domain/contexts/accountContext.ts +5 -5
- package/src/domain/contexts/globalContext.ts +4 -5
- package/src/domain/contexts/tabContext.ts +43 -0
- package/src/domain/contexts/telemetrySessionContext.ts +26 -0
- package/src/domain/contexts/userContext.ts +7 -11
- package/src/domain/error/error.ts +53 -23
- package/src/domain/error/error.types.ts +1 -1
- package/src/domain/error/trackRuntimeError.ts +11 -4
- package/src/domain/eventRateLimiter/createEventRateLimiter.ts +1 -1
- package/src/domain/intakeSites.ts +8 -3
- package/src/domain/report/reportObservable.ts +11 -7
- package/src/domain/sampler.ts +64 -0
- package/src/domain/session/sessionConstants.ts +2 -1
- package/src/domain/session/sessionManager.ts +281 -176
- package/src/domain/session/sessionState.ts +64 -8
- package/src/domain/session/sessionStore.ts +57 -223
- package/src/domain/session/storeStrategies/sessionInCookie.ts +121 -107
- package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +33 -21
- package/src/domain/session/storeStrategies/sessionInMemory.ts +55 -0
- package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +28 -6
- package/src/domain/synthetics/syntheticsWorkerValues.ts +44 -13
- package/src/domain/tags.ts +0 -16
- package/src/domain/telemetry/telemetry.ts +38 -34
- package/src/domain/telemetry/telemetryEvent.types.ts +116 -20
- package/src/domain/trackingConsent.ts +18 -3
- package/src/index.ts +51 -31
- package/src/tools/display.ts +2 -50
- package/src/tools/experimentalFeatures.ts +1 -4
- package/src/tools/getZoneJsOriginalValue.ts +3 -3
- package/src/tools/globalObject.ts +27 -41
- package/src/tools/instrumentMethod.ts +230 -20
- package/src/tools/matchOption.ts +3 -1
- package/src/tools/mockable.ts +32 -0
- package/src/tools/monitor.ts +14 -62
- package/src/tools/observable.ts +9 -1
- package/src/tools/queueMicrotask.ts +6 -1
- package/src/tools/readBytesFromStream.ts +3 -12
- package/src/tools/requestIdleCallback.ts +1 -1
- package/src/tools/serialisation/sanitize.ts +67 -65
- package/src/tools/serialisation/stringify.ts +18 -0
- package/src/tools/stackTrace/computeStackTrace.ts +15 -13
- package/src/tools/stackTrace/handlingStack.ts +14 -1
- package/src/tools/taskQueue.ts +5 -3
- package/src/tools/timer.ts +7 -6
- package/src/tools/utils/arrayUtils.ts +7 -0
- package/src/tools/utils/browserDetection.ts +8 -0
- package/src/tools/utils/byteUtils.ts +1 -5
- package/src/tools/utils/functionUtils.ts +2 -2
- package/src/tools/utils/objectUtils.ts +20 -0
- package/src/tools/utils/stringUtils.ts +4 -1
- package/src/tools/utils/urlPolyfill.ts +5 -4
- package/src/tools/valueHistory.ts +39 -6
- package/src/transport/batch.ts +9 -18
- package/src/transport/eventBridge.ts +23 -10
- package/src/transport/flushController.ts +17 -24
- package/src/transport/httpRequest.ts +4 -36
- package/src/transport/index.ts +1 -0
- package/src/transport/sendWithRetryStrategy.ts +1 -1
- package/cjs/browser/browser.types.js +0 -6
- package/cjs/browser/browser.types.js.map +0 -1
- package/cjs/domain/configuration/index.js +0 -16
- package/cjs/domain/configuration/index.js.map +0 -1
- package/cjs/domain/configuration/transportConfiguration.d.ts +0 -20
- package/cjs/domain/configuration/transportConfiguration.js +0 -54
- package/cjs/domain/configuration/transportConfiguration.js.map +0 -1
- package/cjs/domain/connectivity/index.js +0 -18
- package/cjs/domain/connectivity/index.js.map +0 -1
- package/cjs/domain/contexts/rumInternalContext.type.js +0 -3
- package/cjs/domain/contexts/rumInternalContext.type.js.map +0 -1
- package/cjs/domain/deflate/index.js +0 -18
- package/cjs/domain/deflate/index.js.map +0 -1
- package/cjs/domain/report/browser.types.js +0 -3
- package/cjs/domain/report/browser.types.js.map +0 -1
- package/cjs/domain/session/oldCookiesMigration.d.ts +0 -11
- package/cjs/domain/session/oldCookiesMigration.js +0 -40
- package/cjs/domain/session/oldCookiesMigration.js.map +0 -1
- package/cjs/domain/session/sessionStoreOperations.d.ts +0 -12
- package/cjs/domain/session/sessionStoreOperations.js +0 -119
- package/cjs/domain/session/sessionStoreOperations.js.map +0 -1
- package/cjs/domain/telemetry/index.js +0 -28
- package/cjs/domain/telemetry/index.js.map +0 -1
- package/cjs/domain/telemetry/telemetryEvent.types.js +0 -7
- package/cjs/domain/telemetry/telemetryEvent.types.js.map +0 -1
- package/cjs/index.js.map +0 -1
- package/cjs/tools/abstractHooks.d.ts +0 -24
- package/cjs/tools/abstractHooks.js +0 -41
- package/cjs/tools/abstractHooks.js.map +0 -1
- package/cjs/tools/boundedBuffer.d.ts +0 -16
- package/cjs/tools/boundedBuffer.js +0 -32
- package/cjs/tools/boundedBuffer.js.map +0 -1
- package/cjs/tools/mergeInto.d.ts +0 -25
- package/cjs/tools/mergeInto.js +0 -98
- package/cjs/tools/mergeInto.js.map +0 -1
- package/cjs/tools/serialisation/context.js +0 -3
- package/cjs/tools/serialisation/context.js.map +0 -1
- package/cjs/tools/utils/timeUtils.d.ts +0 -53
- package/cjs/tools/utils/timeUtils.js +0 -101
- package/cjs/tools/utils/timeUtils.js.map +0 -1
- package/cjs/tools/utils/typeUtils.d.ts +0 -4
- package/cjs/tools/utils/typeUtils.js +0 -16
- package/cjs/tools/utils/typeUtils.js.map +0 -1
- package/cjs/transport/index.js +0 -15
- package/cjs/transport/index.js.map +0 -1
- package/esm/boot/displayAlreadyInitializedError.d.ts +0 -2
- package/esm/boot/displayAlreadyInitializedError.js +0 -7
- package/esm/boot/displayAlreadyInitializedError.js.map +0 -1
- package/esm/boot/init.d.ts +0 -14
- package/esm/boot/init.js +0 -35
- package/esm/boot/init.js.map +0 -1
- package/esm/browser/addEventListener.d.ts +0 -87
- package/esm/browser/addEventListener.js +0 -51
- package/esm/browser/addEventListener.js.map +0 -1
- package/esm/browser/browser.types.d.ts +0 -51
- package/esm/browser/browser.types.js +0 -5
- package/esm/browser/browser.types.js.map +0 -1
- package/esm/browser/cookie.d.ts +0 -28
- package/esm/browser/cookie.js +0 -103
- package/esm/browser/cookie.js.map +0 -1
- package/esm/browser/fetchObservable.d.ts +0 -38
- package/esm/browser/fetchObservable.js +0 -99
- package/esm/browser/fetchObservable.js.map +0 -1
- package/esm/browser/pageMayExitObservable.d.ts +0 -14
- package/esm/browser/pageMayExitObservable.js +0 -40
- package/esm/browser/pageMayExitObservable.js.map +0 -1
- package/esm/browser/runOnReadyState.d.ts +0 -5
- package/esm/browser/runOnReadyState.js +0 -16
- package/esm/browser/runOnReadyState.js.map +0 -1
- package/esm/browser/xhrObservable.d.ts +0 -24
- package/esm/browser/xhrObservable.js +0 -83
- package/esm/browser/xhrObservable.js.map +0 -1
- package/esm/domain/allowedTrackingOrigins.d.ts +0 -4
- package/esm/domain/allowedTrackingOrigins.js +0 -21
- package/esm/domain/allowedTrackingOrigins.js.map +0 -1
- package/esm/domain/bufferedData.d.ts +0 -14
- package/esm/domain/bufferedData.js +0 -19
- package/esm/domain/bufferedData.js.map +0 -1
- package/esm/domain/configuration/configuration.d.ts +0 -312
- package/esm/domain/configuration/configuration.js +0 -132
- package/esm/domain/configuration/configuration.js.map +0 -1
- package/esm/domain/configuration/endpointBuilder.d.ts +0 -12
- package/esm/domain/configuration/endpointBuilder.js +0 -77
- package/esm/domain/configuration/endpointBuilder.js.map +0 -1
- package/esm/domain/configuration/index.d.ts +0 -5
- package/esm/domain/configuration/index.js +0 -4
- package/esm/domain/configuration/index.js.map +0 -1
- package/esm/domain/configuration/transportConfiguration.d.ts +0 -20
- package/esm/domain/configuration/transportConfiguration.js +0 -50
- package/esm/domain/configuration/transportConfiguration.js.map +0 -1
- package/esm/domain/connectivity/connectivity.d.ts +0 -14
- package/esm/domain/connectivity/connectivity.js +0 -11
- package/esm/domain/connectivity/connectivity.js.map +0 -1
- package/esm/domain/connectivity/index.d.ts +0 -1
- package/esm/domain/connectivity/index.js +0 -2
- package/esm/domain/connectivity/index.js.map +0 -1
- package/esm/domain/console/consoleObservable.d.ts +0 -21
- package/esm/domain/console/consoleObservable.js +0 -80
- package/esm/domain/console/consoleObservable.js.map +0 -1
- package/esm/domain/context/contextConstants.d.ts +0 -21
- package/esm/domain/context/contextConstants.js +0 -15
- package/esm/domain/context/contextConstants.js.map +0 -1
- package/esm/domain/context/contextManager.d.ts +0 -19
- package/esm/domain/context/contextManager.js +0 -57
- package/esm/domain/context/contextManager.js.map +0 -1
- package/esm/domain/context/contextUtils.d.ts +0 -5
- package/esm/domain/context/contextUtils.js +0 -13
- package/esm/domain/context/contextUtils.js.map +0 -1
- package/esm/domain/context/defineContextMethod.d.ts +0 -6
- package/esm/domain/context/defineContextMethod.js +0 -17
- package/esm/domain/context/defineContextMethod.js.map +0 -1
- package/esm/domain/context/storeContextManager.d.ts +0 -6
- package/esm/domain/context/storeContextManager.js +0 -35
- package/esm/domain/context/storeContextManager.js.map +0 -1
- package/esm/domain/contexts/accountContext.d.ts +0 -26
- package/esm/domain/contexts/accountContext.js +0 -29
- package/esm/domain/contexts/accountContext.js.map +0 -1
- package/esm/domain/contexts/globalContext.d.ts +0 -18
- package/esm/domain/contexts/globalContext.js +0 -17
- package/esm/domain/contexts/globalContext.js.map +0 -1
- package/esm/domain/contexts/rumInternalContext.type.d.ts +0 -14
- package/esm/domain/contexts/rumInternalContext.type.js +0 -2
- package/esm/domain/contexts/rumInternalContext.type.js.map +0 -1
- package/esm/domain/contexts/userContext.d.ts +0 -29
- package/esm/domain/contexts/userContext.js +0 -41
- package/esm/domain/contexts/userContext.js.map +0 -1
- package/esm/domain/deflate/deflate.types.d.ts +0 -40
- package/esm/domain/deflate/deflate.types.js +0 -2
- package/esm/domain/deflate/deflate.types.js.map +0 -1
- package/esm/domain/deflate/index.d.ts +0 -1
- package/esm/domain/deflate/index.js +0 -2
- package/esm/domain/deflate/index.js.map +0 -1
- package/esm/domain/error/error.d.ts +0 -23
- package/esm/domain/error/error.js +0 -65
- package/esm/domain/error/error.js.map +0 -1
- package/esm/domain/error/error.types.d.ts +0 -47
- package/esm/domain/error/error.types.js +0 -10
- package/esm/domain/error/error.types.js.map +0 -1
- package/esm/domain/error/trackRuntimeError.d.ts +0 -11
- package/esm/domain/error/trackRuntimeError.js +0 -43
- package/esm/domain/error/trackRuntimeError.js.map +0 -1
- package/esm/domain/eventRateLimiter/createEventRateLimiter.d.ts +0 -5
- package/esm/domain/eventRateLimiter/createEventRateLimiter.js +0 -38
- package/esm/domain/eventRateLimiter/createEventRateLimiter.js.map +0 -1
- package/esm/domain/extension/extensionUtils.d.ts +0 -10
- package/esm/domain/extension/extensionUtils.js +0 -25
- package/esm/domain/extension/extensionUtils.js.map +0 -1
- package/esm/domain/intakeSites.d.ts +0 -8
- package/esm/domain/intakeSites.js +0 -8
- package/esm/domain/intakeSites.js.map +0 -1
- package/esm/domain/report/browser.types.d.ts +0 -34
- package/esm/domain/report/browser.types.js +0 -2
- package/esm/domain/report/browser.types.js.map +0 -1
- package/esm/domain/report/reportObservable.d.ts +0 -14
- package/esm/domain/report/reportObservable.js +0 -95
- package/esm/domain/report/reportObservable.js.map +0 -1
- package/esm/domain/resourceUtils.d.ts +0 -18
- package/esm/domain/resourceUtils.js +0 -17
- package/esm/domain/resourceUtils.js.map +0 -1
- package/esm/domain/session/oldCookiesMigration.d.ts +0 -11
- package/esm/domain/session/oldCookiesMigration.js +0 -36
- package/esm/domain/session/oldCookiesMigration.js.map +0 -1
- package/esm/domain/session/sessionConstants.d.ts +0 -15
- package/esm/domain/session/sessionConstants.js +0 -13
- package/esm/domain/session/sessionConstants.js.map +0 -1
- package/esm/domain/session/sessionManager.d.ts +0 -28
- package/esm/domain/session/sessionManager.js +0 -196
- package/esm/domain/session/sessionManager.js.map +0 -1
- package/esm/domain/session/sessionState.d.ts +0 -16
- package/esm/domain/session/sessionState.js +0 -60
- package/esm/domain/session/sessionState.js.map +0 -1
- package/esm/domain/session/sessionStateValidation.d.ts +0 -3
- package/esm/domain/session/sessionStateValidation.js +0 -7
- package/esm/domain/session/sessionStateValidation.js.map +0 -1
- package/esm/domain/session/sessionStore.d.ts +0 -38
- package/esm/domain/session/sessionStore.js +0 -179
- package/esm/domain/session/sessionStore.js.map +0 -1
- package/esm/domain/session/sessionStoreOperations.d.ts +0 -12
- package/esm/domain/session/sessionStoreOperations.js +0 -114
- package/esm/domain/session/sessionStoreOperations.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +0 -12
- package/esm/domain/session/storeStrategies/sessionInCookie.js +0 -98
- package/esm/domain/session/storeStrategies/sessionInCookie.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +0 -6
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +0 -37
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -16
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.js +0 -2
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.js.map +0 -1
- package/esm/domain/synthetics/syntheticsWorkerValues.d.ts +0 -12
- package/esm/domain/synthetics/syntheticsWorkerValues.js +0 -24
- package/esm/domain/synthetics/syntheticsWorkerValues.js.map +0 -1
- package/esm/domain/tags.d.ts +0 -6
- package/esm/domain/tags.js +0 -60
- package/esm/domain/tags.js.map +0 -1
- package/esm/domain/telemetry/index.d.ts +0 -4
- package/esm/domain/telemetry/index.js +0 -3
- package/esm/domain/telemetry/index.js.map +0 -1
- package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +0 -18
- package/esm/domain/telemetry/rawTelemetryEvent.types.js +0 -6
- package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +0 -1
- package/esm/domain/telemetry/telemetry.d.ts +0 -56
- package/esm/domain/telemetry/telemetry.js +0 -228
- package/esm/domain/telemetry/telemetry.js.map +0 -1
- package/esm/domain/telemetry/telemetryEvent.types.d.ts +0 -866
- package/esm/domain/telemetry/telemetryEvent.types.js +0 -6
- package/esm/domain/telemetry/telemetryEvent.types.js.map +0 -1
- package/esm/domain/trackingConsent.d.ts +0 -13
- package/esm/domain/trackingConsent.js +0 -24
- package/esm/domain/trackingConsent.js.map +0 -1
- package/esm/index.d.ts +0 -100
- package/esm/index.js +0 -76
- package/esm/index.js.map +0 -1
- package/esm/tools/abstractHooks.d.ts +0 -24
- package/esm/tools/abstractHooks.js +0 -37
- package/esm/tools/abstractHooks.js.map +0 -1
- package/esm/tools/abstractLifeCycle.d.ts +0 -23
- package/esm/tools/abstractLifeCycle.js +0 -24
- package/esm/tools/abstractLifeCycle.js.map +0 -1
- package/esm/tools/boundedBuffer.d.ts +0 -16
- package/esm/tools/boundedBuffer.js +0 -29
- package/esm/tools/boundedBuffer.js.map +0 -1
- package/esm/tools/catchUserErrors.d.ts +0 -1
- package/esm/tools/catchUserErrors.js +0 -12
- package/esm/tools/catchUserErrors.js.map +0 -1
- package/esm/tools/display.d.ts +0 -38
- package/esm/tools/display.js +0 -41
- package/esm/tools/display.js.map +0 -1
- package/esm/tools/encoder.d.ts +0 -54
- package/esm/tools/encoder.js +0 -37
- package/esm/tools/encoder.js.map +0 -1
- package/esm/tools/experimentalFeatures.d.ts +0 -21
- package/esm/tools/experimentalFeatures.js +0 -42
- package/esm/tools/experimentalFeatures.js.map +0 -1
- package/esm/tools/getZoneJsOriginalValue.d.ts +0 -19
- package/esm/tools/getZoneJsOriginalValue.js +0 -26
- package/esm/tools/getZoneJsOriginalValue.js.map +0 -1
- package/esm/tools/globalObject.d.ts +0 -19
- package/esm/tools/globalObject.js +0 -40
- package/esm/tools/globalObject.js.map +0 -1
- package/esm/tools/instrumentMethod.d.ts +0 -75
- package/esm/tools/instrumentMethod.js +0 -114
- package/esm/tools/instrumentMethod.js.map +0 -1
- package/esm/tools/matchOption.d.ts +0 -8
- package/esm/tools/matchOption.js +0 -31
- package/esm/tools/matchOption.js.map +0 -1
- package/esm/tools/mergeInto.d.ts +0 -25
- package/esm/tools/mergeInto.js +0 -93
- package/esm/tools/mergeInto.js.map +0 -1
- package/esm/tools/monitor.d.ts +0 -9
- package/esm/tools/monitor.js +0 -52
- package/esm/tools/monitor.js.map +0 -1
- package/esm/tools/observable.d.ts +0 -30
- package/esm/tools/observable.js +0 -83
- package/esm/tools/observable.js.map +0 -1
- package/esm/tools/queueMicrotask.d.ts +0 -1
- package/esm/tools/queueMicrotask.js +0 -14
- package/esm/tools/queueMicrotask.js.map +0 -1
- package/esm/tools/readBytesFromStream.d.ts +0 -10
- package/esm/tools/readBytesFromStream.js +0 -25
- package/esm/tools/readBytesFromStream.js.map +0 -1
- package/esm/tools/requestIdleCallback.d.ts +0 -12
- package/esm/tools/requestIdleCallback.js +0 -30
- package/esm/tools/requestIdleCallback.js.map +0 -1
- package/esm/tools/sendToExtension.d.ts +0 -3
- package/esm/tools/sendToExtension.js +0 -8
- package/esm/tools/sendToExtension.js.map +0 -1
- package/esm/tools/serialisation/context.d.ts +0 -9
- package/esm/tools/serialisation/context.js +0 -2
- package/esm/tools/serialisation/context.js.map +0 -1
- package/esm/tools/serialisation/jsonStringify.d.ts +0 -13
- package/esm/tools/serialisation/jsonStringify.js +0 -44
- package/esm/tools/serialisation/jsonStringify.js.map +0 -1
- package/esm/tools/serialisation/sanitize.d.ts +0 -18
- package/esm/tools/serialisation/sanitize.js +0 -185
- package/esm/tools/serialisation/sanitize.js.map +0 -1
- package/esm/tools/stackTrace/computeStackTrace.d.ts +0 -25
- package/esm/tools/stackTrace/computeStackTrace.js +0 -183
- package/esm/tools/stackTrace/computeStackTrace.js.map +0 -1
- package/esm/tools/stackTrace/handlingStack.d.ts +0 -10
- package/esm/tools/stackTrace/handlingStack.js +0 -41
- package/esm/tools/stackTrace/handlingStack.js.map +0 -1
- package/esm/tools/taskQueue.d.ts +0 -15
- package/esm/tools/taskQueue.js +0 -50
- package/esm/tools/taskQueue.js.map +0 -1
- package/esm/tools/timer.d.ts +0 -5
- package/esm/tools/timer.js +0 -16
- package/esm/tools/timer.js.map +0 -1
- package/esm/tools/utils/arrayUtils.d.ts +0 -3
- package/esm/tools/utils/arrayUtils.js +0 -15
- package/esm/tools/utils/arrayUtils.js.map +0 -1
- package/esm/tools/utils/browserDetection.d.ts +0 -8
- package/esm/tools/utils/browserDetection.js +0 -28
- package/esm/tools/utils/browserDetection.js.map +0 -1
- package/esm/tools/utils/byteUtils.d.ts +0 -8
- package/esm/tools/utils/byteUtils.js +0 -29
- package/esm/tools/utils/byteUtils.js.map +0 -1
- package/esm/tools/utils/functionUtils.d.ts +0 -8
- package/esm/tools/utils/functionUtils.js +0 -39
- package/esm/tools/utils/functionUtils.js.map +0 -1
- package/esm/tools/utils/numberUtils.d.ts +0 -9
- package/esm/tools/utils/numberUtils.js +0 -18
- package/esm/tools/utils/numberUtils.js.map +0 -1
- package/esm/tools/utils/objectUtils.d.ts +0 -10
- package/esm/tools/utils/objectUtils.js +0 -17
- package/esm/tools/utils/objectUtils.js.map +0 -1
- package/esm/tools/utils/polyfills.d.ts +0 -7
- package/esm/tools/utils/polyfills.js +0 -18
- package/esm/tools/utils/polyfills.js.map +0 -1
- package/esm/tools/utils/responseUtils.d.ts +0 -2
- package/esm/tools/utils/responseUtils.js +0 -13
- package/esm/tools/utils/responseUtils.js.map +0 -1
- package/esm/tools/utils/stringUtils.d.ts +0 -23
- package/esm/tools/utils/stringUtils.js +0 -84
- package/esm/tools/utils/stringUtils.js.map +0 -1
- package/esm/tools/utils/timeUtils.d.ts +0 -53
- package/esm/tools/utils/timeUtils.js +0 -84
- package/esm/tools/utils/timeUtils.js.map +0 -1
- package/esm/tools/utils/timezone.d.ts +0 -1
- package/esm/tools/utils/timezone.js +0 -10
- package/esm/tools/utils/timezone.js.map +0 -1
- package/esm/tools/utils/typeUtils.d.ts +0 -4
- package/esm/tools/utils/typeUtils.js +0 -13
- package/esm/tools/utils/typeUtils.js.map +0 -1
- package/esm/tools/utils/urlPolyfill.d.ts +0 -5
- package/esm/tools/utils/urlPolyfill.js +0 -52
- package/esm/tools/utils/urlPolyfill.js.map +0 -1
- package/esm/tools/valueHistory.d.ts +0 -27
- package/esm/tools/valueHistory.js +0 -100
- package/esm/tools/valueHistory.js.map +0 -1
- package/esm/transport/batch.d.ts +0 -16
- package/esm/transport/batch.js +0 -106
- package/esm/transport/batch.js.map +0 -1
- package/esm/transport/eventBridge.d.ts +0 -21
- package/esm/transport/eventBridge.js +0 -41
- package/esm/transport/eventBridge.js.map +0 -1
- package/esm/transport/flushController.d.ts +0 -65
- package/esm/transport/flushController.js +0 -119
- package/esm/transport/flushController.js.map +0 -1
- package/esm/transport/httpRequest.d.ts +0 -56
- package/esm/transport/httpRequest.js +0 -89
- package/esm/transport/httpRequest.js.map +0 -1
- package/esm/transport/index.d.ts +0 -7
- package/esm/transport/index.js +0 -5
- package/esm/transport/index.js.map +0 -1
- package/esm/transport/sendWithRetryStrategy.d.ts +0 -41
- package/esm/transport/sendWithRetryStrategy.js +0 -158
- package/esm/transport/sendWithRetryStrategy.js.map +0 -1
- package/src/boot/displayAlreadyInitializedError.spec.ts +0 -18
- package/src/boot/init.spec.ts +0 -50
- package/src/browser/addEventListener.spec.ts +0 -141
- package/src/browser/cookie.spec.ts +0 -53
- package/src/browser/fetchObservable.spec.ts +0 -334
- package/src/browser/pageMayExitObservable.spec.ts +0 -56
- package/src/browser/xhrObservable.spec.ts +0 -405
- package/src/domain/allowedTrackingOrigins.spec.ts +0 -210
- package/src/domain/bufferedData.spec.ts +0 -34
- package/src/domain/configuration/configuration.spec.ts +0 -236
- package/src/domain/configuration/endpointBuilder.spec.ts +0 -173
- package/src/domain/configuration/transportConfiguration.spec.ts +0 -130
- package/src/domain/configuration/transportConfiguration.ts +0 -78
- package/src/domain/connectivity/connectivity.spec.ts +0 -50
- package/src/domain/console/consoleObservable.spec.ts +0 -151
- package/src/domain/context/contextManager.spec.ts +0 -152
- package/src/domain/context/contextUtils.spec.ts +0 -26
- package/src/domain/context/storeContextManager.spec.ts +0 -103
- package/src/domain/contexts/accountContext.spec.ts +0 -99
- package/src/domain/contexts/globalContext.spec.ts +0 -88
- package/src/domain/contexts/userContext.spec.ts +0 -156
- package/src/domain/error/error.spec.ts +0 -294
- package/src/domain/error/trackRuntimeError.spec.ts +0 -343
- package/src/domain/eventRateLimiter/createEventRateLimiter.spec.ts +0 -119
- package/src/domain/extension/extensionUtils.spec.ts +0 -47
- package/src/domain/report/reportObservable.spec.ts +0 -71
- package/src/domain/session/oldCookiesMigration.spec.ts +0 -76
- package/src/domain/session/oldCookiesMigration.ts +0 -42
- package/src/domain/session/sessionManager.spec.ts +0 -684
- package/src/domain/session/sessionState.spec.ts +0 -88
- package/src/domain/session/sessionStore.spec.ts +0 -647
- package/src/domain/session/sessionStoreOperations.spec.ts +0 -234
- package/src/domain/session/sessionStoreOperations.ts +0 -131
- package/src/domain/session/storeStrategies/sessionInCookie.spec.ts +0 -228
- package/src/domain/session/storeStrategies/sessionInLocalStorage.spec.ts +0 -75
- package/src/domain/synthetics/syntheticsWorkerValues.spec.ts +0 -82
- package/src/domain/tags.spec.ts +0 -74
- package/src/domain/telemetry/telemetry.spec.ts +0 -494
- package/src/domain/trackingConsent.spec.ts +0 -44
- package/src/tools/abstractHooks.spec.ts +0 -76
- package/src/tools/abstractHooks.ts +0 -72
- package/src/tools/abstractLifeCycle.spec.ts +0 -46
- package/src/tools/boundedBuffer.spec.ts +0 -40
- package/src/tools/boundedBuffer.ts +0 -45
- package/src/tools/catchUserErrors.spec.ts +0 -20
- package/src/tools/encoder.spec.ts +0 -112
- package/src/tools/experimentalFeatures.spec.ts +0 -60
- package/src/tools/getZoneJsOriginalValue.spec.ts +0 -36
- package/src/tools/instrumentMethod.spec.ts +0 -381
- package/src/tools/matchOption.spec.ts +0 -41
- package/src/tools/mergeInto.spec.ts +0 -198
- package/src/tools/mergeInto.ts +0 -177
- package/src/tools/monitor.spec.ts +0 -172
- package/src/tools/observable.spec.ts +0 -259
- package/src/tools/queueMicrotask.spec.ts +0 -24
- package/src/tools/readBytesFromStream.spec.ts +0 -62
- package/src/tools/requestIdleCallback.spec.ts +0 -65
- package/src/tools/serialisation/jsonStringify.spec.ts +0 -76
- package/src/tools/serialisation/sanitize.spec.ts +0 -284
- package/src/tools/stackTrace/capturedExceptions.specHelper.ts +0 -316
- package/src/tools/stackTrace/computeStackTrace.spec.ts +0 -1007
- package/src/tools/stackTrace/handlingStack.spec.ts +0 -20
- package/src/tools/taskQueue.spec.ts +0 -60
- package/src/tools/timer.spec.ts +0 -76
- package/src/tools/utils/browserDetection.spec.ts +0 -120
- package/src/tools/utils/byteUtils.spec.ts +0 -29
- package/src/tools/utils/functionUtils.spec.ts +0 -229
- package/src/tools/utils/numberUtils.spec.ts +0 -27
- package/src/tools/utils/stringUtils.spec.ts +0 -74
- package/src/tools/utils/timeUtils.ts +0 -117
- package/src/tools/utils/typeUtils.spec.ts +0 -25
- package/src/tools/utils/typeUtils.ts +0 -12
- package/src/tools/utils/urlPolyfill.spec.ts +0 -55
- package/src/tools/valueHistory.spec.ts +0 -180
- package/src/transport/batch.spec.ts +0 -261
- package/src/transport/eventBridge.spec.ts +0 -90
- package/src/transport/flushController.spec.ts +0 -267
- package/src/transport/httpRequest.spec.ts +0 -400
- package/src/transport/sendWithRetryStrategy.spec.ts +0 -393
package/src/index.ts
CHANGED
|
@@ -5,8 +5,9 @@ export {
|
|
|
5
5
|
TraceContextInjection,
|
|
6
6
|
serializeConfiguration,
|
|
7
7
|
isSampleRate,
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
buildEndpointUrl,
|
|
9
|
+
createEndpointBuilder,
|
|
10
|
+
createReplicaEndpointBuilder,
|
|
10
11
|
} from './domain/configuration'
|
|
11
12
|
export * from './domain/intakeSites'
|
|
12
13
|
export type { TrackingConsentState } from './domain/trackingConsent'
|
|
@@ -14,7 +15,6 @@ export { TrackingConsent, createTrackingConsentState } from './domain/trackingCo
|
|
|
14
15
|
export {
|
|
15
16
|
isExperimentalFeatureEnabled,
|
|
16
17
|
addExperimentalFeatures,
|
|
17
|
-
resetExperimentalFeatures,
|
|
18
18
|
getExperimentalFeatures,
|
|
19
19
|
initFeatureFlags,
|
|
20
20
|
ExperimentalFeature,
|
|
@@ -42,24 +42,31 @@ export {
|
|
|
42
42
|
startTelemetry,
|
|
43
43
|
addTelemetryDebug,
|
|
44
44
|
addTelemetryError,
|
|
45
|
-
resetTelemetry,
|
|
46
45
|
TelemetryService,
|
|
47
46
|
TelemetryMetrics,
|
|
48
47
|
addTelemetryConfiguration,
|
|
49
48
|
addTelemetryUsage,
|
|
50
49
|
addTelemetryMetrics,
|
|
51
50
|
} from './domain/telemetry'
|
|
52
|
-
export { monitored, monitor, callMonitored,
|
|
51
|
+
export { monitored, monitor, callMonitored, monitorError } from './tools/monitor'
|
|
53
52
|
export type { Subscription } from './tools/observable'
|
|
54
53
|
export { Observable, BufferedObservable } from './tools/observable'
|
|
55
|
-
export type { SessionManager } from './domain/session/sessionManager'
|
|
56
|
-
export { startSessionManager, stopSessionManager } from './domain/session/sessionManager'
|
|
54
|
+
export type { SessionManager, SessionContext } from './domain/session/sessionManager'
|
|
55
|
+
export { startSessionManager, startSessionManagerStub, stopSessionManager } from './domain/session/sessionManager'
|
|
57
56
|
export {
|
|
58
57
|
SESSION_TIME_OUT_DELAY, // Exposed for tests
|
|
59
58
|
SESSION_NOT_TRACKED,
|
|
60
59
|
SessionPersistence,
|
|
61
60
|
} from './domain/session/sessionConstants'
|
|
62
|
-
export type {
|
|
61
|
+
export type {
|
|
62
|
+
Batch,
|
|
63
|
+
BandwidthStats,
|
|
64
|
+
HttpRequest,
|
|
65
|
+
HttpRequestEvent,
|
|
66
|
+
Payload,
|
|
67
|
+
FlushEvent,
|
|
68
|
+
FlushReason,
|
|
69
|
+
} from './transport'
|
|
63
70
|
export {
|
|
64
71
|
createHttpRequest,
|
|
65
72
|
canUseEventBridge,
|
|
@@ -74,8 +81,8 @@ export * from './tools/display'
|
|
|
74
81
|
export type { Encoder, EncoderResult } from './tools/encoder'
|
|
75
82
|
export { createIdentityEncoder } from './tools/encoder'
|
|
76
83
|
export * from './tools/utils/urlPolyfill'
|
|
77
|
-
export * from './tools/utils/timeUtils'
|
|
78
84
|
export * from './tools/utils/arrayUtils'
|
|
85
|
+
|
|
79
86
|
export * from './tools/serialisation/sanitize'
|
|
80
87
|
export * from './tools/globalObject'
|
|
81
88
|
export { AbstractLifeCycle } from './tools/abstractLifeCycle'
|
|
@@ -84,8 +91,9 @@ export * from './tools/utils/browserDetection'
|
|
|
84
91
|
export { sendToExtension } from './tools/sendToExtension'
|
|
85
92
|
export { runOnReadyState, asyncRunOnReadyState } from './browser/runOnReadyState'
|
|
86
93
|
export { getZoneJsOriginalValue } from './tools/getZoneJsOriginalValue'
|
|
87
|
-
export
|
|
88
|
-
export {
|
|
94
|
+
export { mockable } from './tools/mockable'
|
|
95
|
+
export type { InstrumentedMethodCall, InstrumentedConstructorCall } from './tools/instrumentMethod'
|
|
96
|
+
export { instrumentMethod, instrumentConstructor, instrumentSetter } from './tools/instrumentMethod'
|
|
89
97
|
export {
|
|
90
98
|
computeRawError,
|
|
91
99
|
getFileFromStackTraceString,
|
|
@@ -94,19 +102,31 @@ export {
|
|
|
94
102
|
} from './domain/error/error'
|
|
95
103
|
export { NonErrorPrefix } from './domain/error/error.types'
|
|
96
104
|
export type { Context, ContextArray, ContextValue } from './tools/serialisation/context'
|
|
97
|
-
export {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
export { getCookie, getInitCookie, setCookie, deleteCookie, resetInitCookies } from './browser/cookie'
|
|
106
|
+
export { isCookieStoreSupported } from './browser/cookieAccess'
|
|
107
|
+
export type {
|
|
108
|
+
CookieStore,
|
|
109
|
+
WeakRef,
|
|
110
|
+
WeakRefConstructor,
|
|
111
|
+
NetworkInformation,
|
|
112
|
+
BrowserNavigator,
|
|
113
|
+
NetworkInterface,
|
|
114
|
+
EffectiveType,
|
|
115
|
+
Profiler,
|
|
116
|
+
ProfilerConstructor,
|
|
117
|
+
ProfilerTrace,
|
|
118
|
+
ProfilerInitOptions,
|
|
119
|
+
ProfilerFrame,
|
|
120
|
+
ProfilerStack,
|
|
121
|
+
ProfilerSample,
|
|
122
|
+
ProfilerResource,
|
|
123
|
+
SampleBufferFullEvent,
|
|
124
|
+
} from './browser/browser.types'
|
|
125
|
+
export type { XhrCompleteContext, XhrStartContext, XhrContext } from './browser/xhrObservable'
|
|
107
126
|
export { initXhrObservable } from './browser/xhrObservable'
|
|
108
127
|
export type { FetchResolveContext, FetchStartContext, FetchContext } from './browser/fetchObservable'
|
|
109
|
-
export { initFetchObservable,
|
|
128
|
+
export { initFetchObservable, ResponseBodyAction } from './browser/fetchObservable'
|
|
129
|
+
export { fetch } from './browser/fetch'
|
|
110
130
|
export type { PageMayExitEvent } from './browser/pageMayExitObservable'
|
|
111
131
|
export { createPageMayExitObservable, PageExitReason, isPageExitReason } from './browser/pageMayExitObservable'
|
|
112
132
|
export * from './browser/addEventListener'
|
|
@@ -114,15 +134,14 @@ export { requestIdleCallback } from './tools/requestIdleCallback'
|
|
|
114
134
|
export * from './tools/taskQueue'
|
|
115
135
|
export * from './tools/timer'
|
|
116
136
|
export type { ConsoleLog } from './domain/console/consoleObservable'
|
|
117
|
-
export { initConsoleObservable
|
|
118
|
-
export type { BoundedBuffer } from './tools/boundedBuffer'
|
|
119
|
-
export { createBoundedBuffer } from './tools/boundedBuffer'
|
|
137
|
+
export { initConsoleObservable } from './domain/console/consoleObservable'
|
|
120
138
|
export { catchUserErrors } from './tools/catchUserErrors'
|
|
121
139
|
export type { ContextManager } from './domain/context/contextManager'
|
|
122
140
|
export { createContextManager } from './domain/context/contextManager'
|
|
123
141
|
export { defineContextMethod, bufferContextCalls } from './domain/context/defineContextMethod'
|
|
124
142
|
export { storeContextManager, removeStorageListeners } from './domain/context/storeContextManager'
|
|
125
143
|
export { startAccountContext, buildAccountContextManager } from './domain/contexts/accountContext'
|
|
144
|
+
export { startTabContext } from './domain/contexts/tabContext'
|
|
126
145
|
export { startGlobalContext, buildGlobalContextManager } from './domain/contexts/globalContext'
|
|
127
146
|
export { startUserContext, buildUserContextManager } from './domain/contexts/userContext'
|
|
128
147
|
export type { User } from './domain/contexts/userContext'
|
|
@@ -133,14 +152,15 @@ export type { ValueHistory, ValueHistoryEntry } from './tools/valueHistory'
|
|
|
133
152
|
export { createValueHistory, CLEAR_OLD_VALUES_INTERVAL } from './tools/valueHistory'
|
|
134
153
|
export { readBytesFromStream } from './tools/readBytesFromStream'
|
|
135
154
|
export type { SessionState } from './domain/session/sessionState'
|
|
136
|
-
export { STORAGE_POLL_DELAY } from './domain/session/sessionStore'
|
|
137
155
|
export { SESSION_STORE_KEY } from './domain/session/storeStrategies/sessionStoreStrategy'
|
|
156
|
+
export type { MemorySession } from './domain/session/storeStrategies/sessionInMemory'
|
|
157
|
+
export { MEMORY_SESSION_STORE_KEY } from './domain/session/storeStrategies/sessionInMemory'
|
|
138
158
|
export {
|
|
139
159
|
willSyntheticsInjectRum,
|
|
140
|
-
|
|
141
|
-
getSyntheticsResultId,
|
|
160
|
+
getSyntheticsContext,
|
|
142
161
|
isSyntheticsTest,
|
|
143
162
|
} from './domain/synthetics/syntheticsWorkerValues'
|
|
163
|
+
export type { SyntheticsContext } from './domain/synthetics/syntheticsWorkerValues'
|
|
144
164
|
export { checkContext } from './domain/context/contextUtils'
|
|
145
165
|
export * from './domain/resourceUtils'
|
|
146
166
|
export * from './domain/bufferedData'
|
|
@@ -151,15 +171,15 @@ export * from './tools/utils/byteUtils'
|
|
|
151
171
|
export * from './tools/utils/objectUtils'
|
|
152
172
|
export * from './tools/utils/functionUtils'
|
|
153
173
|
export * from './tools/serialisation/jsonStringify'
|
|
154
|
-
export * from './tools/
|
|
174
|
+
export * from './tools/serialisation/stringify'
|
|
155
175
|
export * from './tools/utils/stringUtils'
|
|
156
176
|
export * from './tools/matchOption'
|
|
157
177
|
export * from './tools/utils/responseUtils'
|
|
158
|
-
export * from './tools/utils/typeUtils'
|
|
159
178
|
export type { RawError, RawErrorCause, ErrorWithCause, Csp } from './domain/error/error.types'
|
|
160
179
|
export { ErrorHandling, ErrorSource } from './domain/error/error.types'
|
|
161
180
|
export * from './domain/deflate'
|
|
162
181
|
export * from './domain/connectivity'
|
|
163
182
|
export * from './tools/stackTrace/handlingStack'
|
|
164
|
-
export * from './tools/abstractHooks'
|
|
165
183
|
export * from './domain/tags'
|
|
184
|
+
export { correctedChildSampleRate, isSampled, resetSampleDecisionCache, sampleUsingKnuthFactor } from './domain/sampler'
|
|
185
|
+
export { startTelemetrySessionContext } from './domain/contexts/telemetrySessionContext'
|
package/src/tools/display.ts
CHANGED
|
@@ -1,55 +1,7 @@
|
|
|
1
1
|
/* eslint-disable local-rules/disallow-side-effects */
|
|
2
|
-
|
|
3
|
-
* Keep references on console methods to avoid triggering patched behaviors
|
|
4
|
-
*
|
|
5
|
-
* NB: in some setup, console could already be patched by another SDK.
|
|
6
|
-
* In this case, some display messages can be sent by the other SDK
|
|
7
|
-
* but we should be safe from infinite loop nonetheless.
|
|
8
|
-
*/
|
|
2
|
+
import { createDisplay } from '@openobserve/js-core/util'
|
|
9
3
|
|
|
10
|
-
export const
|
|
11
|
-
log: 'log',
|
|
12
|
-
debug: 'debug',
|
|
13
|
-
info: 'info',
|
|
14
|
-
warn: 'warn',
|
|
15
|
-
error: 'error',
|
|
16
|
-
} as const
|
|
17
|
-
|
|
18
|
-
export type ConsoleApiName = (typeof ConsoleApiName)[keyof typeof ConsoleApiName]
|
|
19
|
-
|
|
20
|
-
interface Display {
|
|
21
|
-
debug: typeof console.debug
|
|
22
|
-
log: typeof console.log
|
|
23
|
-
info: typeof console.info
|
|
24
|
-
warn: typeof console.warn
|
|
25
|
-
error: typeof console.error
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* When building JS bundles, some users might use a plugin[1] or configuration[2] to remove
|
|
30
|
-
* "console.*" references. This causes some issue as we expect `console.*` to be defined.
|
|
31
|
-
* As a workaround, let's use a variable alias, so those expressions won't be taken into account by
|
|
32
|
-
* simple static analysis.
|
|
33
|
-
*
|
|
34
|
-
* [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/
|
|
35
|
-
* [2]: https://github.com/terser/terser#compress-options (look for drop_console)
|
|
36
|
-
*/
|
|
37
|
-
export const globalConsole = console
|
|
38
|
-
|
|
39
|
-
export const originalConsoleMethods = {} as Display
|
|
40
|
-
Object.keys(ConsoleApiName).forEach((name) => {
|
|
41
|
-
originalConsoleMethods[name as ConsoleApiName] = globalConsole[name as ConsoleApiName]
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
const PREFIX = 'Openobserve Browser SDK:'
|
|
45
|
-
|
|
46
|
-
export const display: Display = {
|
|
47
|
-
debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),
|
|
48
|
-
log: originalConsoleMethods.log.bind(globalConsole, PREFIX),
|
|
49
|
-
info: originalConsoleMethods.info.bind(globalConsole, PREFIX),
|
|
50
|
-
warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),
|
|
51
|
-
error: originalConsoleMethods.error.bind(globalConsole, PREFIX),
|
|
52
|
-
}
|
|
4
|
+
export const display = createDisplay('OpenObserve Browser SDK:')
|
|
53
5
|
|
|
54
6
|
export const DOCS_ORIGIN = 'https://openobserve.ai'
|
|
55
7
|
export const DOCS_TROUBLESHOOTING = `${DOCS_ORIGIN}/docs/user-guide/rum/`
|
|
@@ -15,10 +15,7 @@ import { objectHasValue } from './utils/objectUtils'
|
|
|
15
15
|
// eslint-disable-next-line no-restricted-syntax
|
|
16
16
|
export enum ExperimentalFeature {
|
|
17
17
|
TRACK_INTAKE_REQUESTS = 'track_intake_requests',
|
|
18
|
-
|
|
19
|
-
FEATURE_OPERATION_VITAL = 'feature_operation_vital',
|
|
20
|
-
SHORT_SESSION_INVESTIGATION = 'short_session_investigation',
|
|
21
|
-
AVOID_FETCH_KEEPALIVE = 'avoid_fetch_keepalive',
|
|
18
|
+
PARTIAL_VIEW_UPDATES = 'partial_view_updates',
|
|
22
19
|
}
|
|
23
20
|
|
|
24
21
|
const enabledExperimentalFeatures: Set<ExperimentalFeature> = new Set()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { globalObject } from './globalObject'
|
|
2
2
|
|
|
3
|
-
export interface BrowserWindowWithZoneJs
|
|
3
|
+
export interface BrowserWindowWithZoneJs {
|
|
4
4
|
Zone?: {
|
|
5
5
|
// All Zone.js versions expose the __symbol__ method, but we observed that some website have a
|
|
6
6
|
// 'Zone' global variable unrelated to Zone.js, so let's consider this method optional
|
|
@@ -26,7 +26,7 @@ export function getZoneJsOriginalValue<Target, Name extends keyof Target & strin
|
|
|
26
26
|
target: Target,
|
|
27
27
|
name: Name
|
|
28
28
|
): Target[Name] {
|
|
29
|
-
const browserWindow =
|
|
29
|
+
const browserWindow = globalObject as BrowserWindowWithZoneJs
|
|
30
30
|
let original: Target[Name] | undefined
|
|
31
31
|
if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {
|
|
32
32
|
original = (target as any)[browserWindow.Zone.__symbol__(name)]
|
|
@@ -1,51 +1,37 @@
|
|
|
1
|
+
// eslint-disable-next-line no-restricted-imports
|
|
2
|
+
import type { BrowserNavigator, CookieStore, ProfilerConstructor } from '../browser/browser.types'
|
|
3
|
+
|
|
1
4
|
/**
|
|
2
|
-
*
|
|
5
|
+
* Reflects values available in the global object (e.g. window or self). We use our own type to
|
|
6
|
+
* adjust the expectations across the codebase when the native types offered by TypeScript aren't
|
|
7
|
+
* sufficient.
|
|
8
|
+
*
|
|
9
|
+
* For example, we can mark a property as optional when it is not available in all browsers, or add
|
|
10
|
+
* new browser APIs that are not yet typed properly in the typescript lib.
|
|
11
|
+
*
|
|
12
|
+
* Feel free to add more properties as needed, or mark some properties as optional when they are.
|
|
3
13
|
*/
|
|
14
|
+
export interface GlobalObject extends Omit<
|
|
15
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
16
|
+
typeof globalThis,
|
|
17
|
+
'queueMicrotask' | 'cookieStore' | 'Profiler' | 'window'
|
|
18
|
+
> {
|
|
19
|
+
navigator: BrowserNavigator
|
|
4
20
|
|
|
5
|
-
//
|
|
6
|
-
|
|
7
|
-
empty: never
|
|
8
|
-
}
|
|
21
|
+
// cookieStore is not available in all browsers yet
|
|
22
|
+
cookieStore?: CookieStore
|
|
9
23
|
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
type XOR<T, U> = T | U extends object ? (Without<T, U> & U) | (Without<U, T> & T) : T | U
|
|
24
|
+
// queueMicrotask is not available in all browsers yet
|
|
25
|
+
queueMicrotask?: typeof queueMicrotask
|
|
13
26
|
|
|
14
|
-
|
|
27
|
+
// Profiler is not available in all browsers yet
|
|
28
|
+
Profiler?: ProfilerConstructor
|
|
15
29
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return globalThis as unknown as T
|
|
19
|
-
}
|
|
20
|
-
Object.defineProperty(Object.prototype, '_oo_temp_', {
|
|
21
|
-
get() {
|
|
22
|
-
return this as object
|
|
23
|
-
},
|
|
24
|
-
configurable: true,
|
|
25
|
-
})
|
|
26
|
-
// @ts-ignore _oo_temp is defined using defineProperty
|
|
27
|
-
let globalObject: unknown = _oo_temp_
|
|
28
|
-
// @ts-ignore _oo_temp is defined using defineProperty
|
|
29
|
-
delete Object.prototype._oo_temp_
|
|
30
|
-
if (typeof globalObject !== 'object') {
|
|
31
|
-
// on safari _oo_temp_ is available on window but not globally
|
|
32
|
-
// fallback on other browser globals check
|
|
33
|
-
if (typeof self === 'object') {
|
|
34
|
-
globalObject = self
|
|
35
|
-
} else if (typeof window === 'object') {
|
|
36
|
-
globalObject = window
|
|
37
|
-
} else {
|
|
38
|
-
globalObject = {}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return globalObject as T
|
|
30
|
+
// window is not available in SSR environments
|
|
31
|
+
window?: Window
|
|
42
32
|
}
|
|
43
33
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
* re-evaluating the heavyweight fallback logic in `getGlobalObject()`.
|
|
47
|
-
*/
|
|
48
|
-
// eslint-disable-next-line local-rules/disallow-side-effects
|
|
49
|
-
export const globalObject = getGlobalObject<GlobalObject>()
|
|
34
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
35
|
+
export const globalObject = globalThis as GlobalObject
|
|
50
36
|
|
|
51
37
|
export const isWorkerEnvironment = 'WorkerGlobalScope' in globalObject
|
|
@@ -36,6 +36,35 @@ type PostCallCallback<TARGET extends { [key: string]: any }, METHOD extends keyo
|
|
|
36
36
|
result: ReturnType<TARGET[METHOD]>
|
|
37
37
|
) => void
|
|
38
38
|
|
|
39
|
+
type ConstructorParametersOf<CONSTRUCTOR> = CONSTRUCTOR extends new (...args: infer P) => any ? P : never
|
|
40
|
+
type ConstructorInstanceOf<CONSTRUCTOR> = CONSTRUCTOR extends new (...args: any[]) => infer R ? R : never
|
|
41
|
+
|
|
42
|
+
type AnyConstructor = abstract new (...args: any[]) => any
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Object passed to the callback of an instrumented constructor call. See `instrumentConstructor`
|
|
46
|
+
* for more info.
|
|
47
|
+
*/
|
|
48
|
+
export interface InstrumentedConstructorCall<CONSTRUCTOR> {
|
|
49
|
+
/**
|
|
50
|
+
* The parameters with which the constructor was called.
|
|
51
|
+
*
|
|
52
|
+
* Note: if needed, parameters can be mutated by the instrumentation
|
|
53
|
+
*/
|
|
54
|
+
parameters: ConstructorParametersOf<CONSTRUCTOR>
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Registers a callback that will be called after the original constructor is called, with the
|
|
58
|
+
* constructed instance passed as argument.
|
|
59
|
+
*/
|
|
60
|
+
onPostCall: (callback: (result: ConstructorInstanceOf<CONSTRUCTOR>) => void) => void
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* The stack trace of the constructor call.
|
|
64
|
+
*/
|
|
65
|
+
handlingStack?: string
|
|
66
|
+
}
|
|
67
|
+
|
|
39
68
|
/**
|
|
40
69
|
* Instruments a method on a object, calling the given callback before the original method is
|
|
41
70
|
* invoked. The callback receives an object with information about the method call.
|
|
@@ -57,6 +86,8 @@ type PostCallCallback<TARGET extends { [key: string]: any }, METHOD extends keyo
|
|
|
57
86
|
* * if the event handler is set by a third party after us, we need to keep it in place when
|
|
58
87
|
* removing ours.
|
|
59
88
|
*
|
|
89
|
+
* To instrument a constructor @see {@link instrumentConstructor}.
|
|
90
|
+
*
|
|
60
91
|
* @example
|
|
61
92
|
*
|
|
62
93
|
* instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {
|
|
@@ -67,7 +98,7 @@ type PostCallCallback<TARGET extends { [key: string]: any }, METHOD extends keyo
|
|
|
67
98
|
* })
|
|
68
99
|
* })
|
|
69
100
|
*/
|
|
70
|
-
export function instrumentMethod<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET
|
|
101
|
+
export function instrumentMethod<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET>(
|
|
71
102
|
targetPrototype: TARGET,
|
|
72
103
|
method: METHOD,
|
|
73
104
|
onPreCall: (this: null, callInfos: InstrumentedMethodCall<TARGET, METHOD>) => void,
|
|
@@ -76,7 +107,7 @@ export function instrumentMethod<TARGET extends { [key: string]: any }, METHOD e
|
|
|
76
107
|
let original = targetPrototype[method]
|
|
77
108
|
|
|
78
109
|
if (typeof original !== 'function') {
|
|
79
|
-
if (method in targetPrototype && method.startsWith('on')) {
|
|
110
|
+
if (method in targetPrototype && typeof method === 'string' && method.startsWith('on')) {
|
|
80
111
|
original = noop as TARGET[METHOD]
|
|
81
112
|
} else {
|
|
82
113
|
return { stop: noop }
|
|
@@ -85,43 +116,141 @@ export function instrumentMethod<TARGET extends { [key: string]: any }, METHOD e
|
|
|
85
116
|
|
|
86
117
|
let stopped = false
|
|
87
118
|
|
|
88
|
-
const instrumentation = function (this: TARGET): ReturnType<TARGET[METHOD]>
|
|
119
|
+
const instrumentation = function (this: TARGET): ReturnType<TARGET[METHOD]> {
|
|
89
120
|
if (stopped) {
|
|
90
121
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
|
|
91
|
-
return original.apply(this, arguments
|
|
122
|
+
return original.apply(this, arguments)
|
|
92
123
|
}
|
|
93
124
|
|
|
94
125
|
const parameters = Array.from(arguments) as Parameters<TARGET[METHOD]>
|
|
95
126
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
callMonitored(onPreCall, null, [
|
|
127
|
+
return notifyInstrumentation<InstrumentedMethodCall<TARGET, METHOD>, ReturnType<TARGET[METHOD]>>(
|
|
128
|
+
onPreCall,
|
|
99
129
|
{
|
|
100
130
|
target: this,
|
|
101
131
|
parameters,
|
|
102
|
-
onPostCall: (callback) => {
|
|
103
|
-
postCallCallback = callback
|
|
104
|
-
},
|
|
105
132
|
handlingStack: computeHandlingStack ? createHandlingStack('instrumented method') : undefined,
|
|
106
133
|
},
|
|
107
|
-
|
|
134
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call -- TARGET[METHOD] is any under the index signature; value is verified as a function above
|
|
135
|
+
() => original.apply(this, parameters)
|
|
136
|
+
)
|
|
137
|
+
} as TARGET[METHOD]
|
|
108
138
|
|
|
109
|
-
|
|
110
|
-
const result = original.apply(this, parameters)
|
|
139
|
+
const { stop: restoreOriginal } = replaceWithInstrumentation(targetPrototype, method, original, instrumentation)
|
|
111
140
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
141
|
+
return {
|
|
142
|
+
stop: () => {
|
|
143
|
+
stopped = true
|
|
144
|
+
restoreOriginal()
|
|
145
|
+
},
|
|
146
|
+
}
|
|
147
|
+
}
|
|
115
148
|
|
|
116
|
-
|
|
117
|
-
|
|
149
|
+
/**
|
|
150
|
+
* Instruments a constructor on an object (typically a global, e.g. `window.WebSocket`), calling the
|
|
151
|
+
* given callback before the original constructor is invoked. The callback receives an object with
|
|
152
|
+
* information about the constructor call, and can register an `onPostCall` callback to be notified
|
|
153
|
+
* with the constructed instance.
|
|
154
|
+
*
|
|
155
|
+
* Like `instrumentMethod`, this is a "good citizen" regarding third party instrumentations: stopping
|
|
156
|
+
* restores the original constructor unless a third party replaced it afterwards.
|
|
157
|
+
*
|
|
158
|
+
* The wrapper preserves the original prototype (so `instanceof` keeps working), the original
|
|
159
|
+
* `new.target` (so constructors that inspect it behave as if not instrumented), the original
|
|
160
|
+
* static members (e.g. `WebSocket.OPEN`), and `instance.constructor ===` so checks like
|
|
161
|
+
* `new WebSocket(url).constructor === WebSocket` stay true.
|
|
162
|
+
*
|
|
163
|
+
* @see {@link preserveConstructorShape} for limitations on static members preservation.
|
|
164
|
+
* @example
|
|
165
|
+
*
|
|
166
|
+
* instrumentConstructor(window, 'WebSocket', ({ parameters, onPostCall }) => {
|
|
167
|
+
* console.log('Before constructing WebSocket with parameters', parameters)
|
|
168
|
+
*
|
|
169
|
+
* onPostCall((instance) => {
|
|
170
|
+
* console.log('Constructed WebSocket instance', instance)
|
|
171
|
+
* })
|
|
172
|
+
* })
|
|
173
|
+
*/
|
|
174
|
+
export function instrumentConstructor<CONTAINER extends { [key: string]: any }, CONSTRUCTOR extends keyof CONTAINER>(
|
|
175
|
+
container: CONTAINER,
|
|
176
|
+
constructor: CONSTRUCTOR,
|
|
177
|
+
onPreCall: (this: null, callInfos: InstrumentedConstructorCall<CONTAINER[CONSTRUCTOR]>) => void,
|
|
178
|
+
{ computeHandlingStack }: { computeHandlingStack?: boolean } = {}
|
|
179
|
+
) {
|
|
180
|
+
const original = container[constructor]
|
|
181
|
+
|
|
182
|
+
if (typeof original !== 'function') {
|
|
183
|
+
return { stop: noop }
|
|
118
184
|
}
|
|
119
185
|
|
|
120
|
-
|
|
186
|
+
let stopped = false
|
|
187
|
+
|
|
188
|
+
const instrumentation = function (this: unknown): ConstructorInstanceOf<CONTAINER[CONSTRUCTOR]> {
|
|
189
|
+
// Bare `[[Call]]` (no `new`): delegate through `[[Call]]` and skip `onPreCall`. Otherwise we
|
|
190
|
+
// would notify instrumentation before the original rejects or returns, unlike the native
|
|
191
|
+
// constructor (e.g. `WebSocket(url)` or `class {}()` without `new`).
|
|
192
|
+
if (!new.target) {
|
|
193
|
+
return Reflect.apply(original, this, Array.from(arguments)) as ConstructorInstanceOf<CONTAINER[CONSTRUCTOR]>
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// When `new` is used on this instrumented property, `new.target` is this wrapper. Passing
|
|
197
|
+
// it through to Reflect.construct would expose the wrong new.target inside the original
|
|
198
|
+
// body. If a subclass extends the wrapper, or a third party wraps us and their class is
|
|
199
|
+
// instantiated, `new.target` is that outer constructor and must be preserved.
|
|
200
|
+
const newTarget = new.target === instrumentation ? original : new.target
|
|
201
|
+
|
|
202
|
+
if (stopped) {
|
|
203
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
204
|
+
return Reflect.construct(
|
|
205
|
+
original,
|
|
206
|
+
arguments as unknown as ConstructorParametersOf<CONTAINER[CONSTRUCTOR]>,
|
|
207
|
+
newTarget
|
|
208
|
+
)
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
const parameters = Array.from(arguments) as ConstructorParametersOf<CONTAINER[CONSTRUCTOR]>
|
|
212
|
+
|
|
213
|
+
return notifyInstrumentation<
|
|
214
|
+
InstrumentedConstructorCall<CONTAINER[CONSTRUCTOR]>,
|
|
215
|
+
ConstructorInstanceOf<CONTAINER[CONSTRUCTOR]>
|
|
216
|
+
>(
|
|
217
|
+
onPreCall,
|
|
218
|
+
{
|
|
219
|
+
parameters,
|
|
220
|
+
handlingStack: computeHandlingStack ? createHandlingStack('instrumented constructor') : undefined,
|
|
221
|
+
},
|
|
222
|
+
() =>
|
|
223
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
224
|
+
Reflect.construct(original, parameters, newTarget)
|
|
225
|
+
)
|
|
226
|
+
} as CONTAINER[CONSTRUCTOR]
|
|
227
|
+
|
|
228
|
+
const restorePrototypeConstructor = preserveConstructorShape(instrumentation, original)
|
|
229
|
+
const { stop: restoreOriginal } = replaceWithInstrumentation(container, constructor, original, instrumentation)
|
|
121
230
|
|
|
122
231
|
return {
|
|
123
232
|
stop: () => {
|
|
124
233
|
stopped = true
|
|
234
|
+
restorePrototypeConstructor()
|
|
235
|
+
restoreOriginal()
|
|
236
|
+
},
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Replaces `targetPrototype[method]` with the provided instrumentation and
|
|
242
|
+
* returns a `stop` function restoring the original (unless a third party replaced us afterwards).
|
|
243
|
+
*/
|
|
244
|
+
function replaceWithInstrumentation<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET>(
|
|
245
|
+
targetPrototype: TARGET,
|
|
246
|
+
method: METHOD,
|
|
247
|
+
original: TARGET[METHOD],
|
|
248
|
+
instrumentation: TARGET[METHOD]
|
|
249
|
+
) {
|
|
250
|
+
targetPrototype[method] = instrumentation
|
|
251
|
+
|
|
252
|
+
return {
|
|
253
|
+
stop: () => {
|
|
125
254
|
// If the instrumentation has been removed by a third party, keep the last one
|
|
126
255
|
if (targetPrototype[method] === instrumentation) {
|
|
127
256
|
targetPrototype[method] = original
|
|
@@ -130,13 +259,94 @@ export function instrumentMethod<TARGET extends { [key: string]: any }, METHOD e
|
|
|
130
259
|
}
|
|
131
260
|
}
|
|
132
261
|
|
|
262
|
+
/**
|
|
263
|
+
* Runs the pre-call callback (injecting the `onPostCall` registration), invokes the original
|
|
264
|
+
* method/constructor, then runs the registered post-call callback with the result.
|
|
265
|
+
*
|
|
266
|
+
* Note: the handling stack must be computed by the caller (at the topmost position of the call
|
|
267
|
+
* stack), so it is part of `baseCallInfo` rather than computed here.
|
|
268
|
+
*/
|
|
269
|
+
function notifyInstrumentation<CALL_INFO extends InstrumentationCallbacks<RESULT>, RESULT>(
|
|
270
|
+
onPreCall: (this: null, callInfo: CALL_INFO) => void,
|
|
271
|
+
baseCallInfo: Omit<CALL_INFO, 'onPostCall'>,
|
|
272
|
+
invokeOriginal: () => RESULT
|
|
273
|
+
): RESULT {
|
|
274
|
+
let postCallCallback: ((result: RESULT) => void) | undefined
|
|
275
|
+
|
|
276
|
+
callMonitored(onPreCall, null, [
|
|
277
|
+
{
|
|
278
|
+
...baseCallInfo,
|
|
279
|
+
onPostCall: (callback: (result: RESULT) => void) => {
|
|
280
|
+
postCallCallback = callback
|
|
281
|
+
},
|
|
282
|
+
} as CALL_INFO,
|
|
283
|
+
])
|
|
284
|
+
|
|
285
|
+
const result = invokeOriginal()
|
|
286
|
+
|
|
287
|
+
if (postCallCallback) {
|
|
288
|
+
callMonitored(postCallCallback, null, [result])
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
return result
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
interface InstrumentationCallbacks<RESULT> {
|
|
295
|
+
onPostCall: (callback: (result: RESULT) => void) => void
|
|
296
|
+
handlingStack?: string
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Copies the original constructor prototype and other static members onto the instrumentation, so that
|
|
301
|
+
* `instanceof` checks keep working and statics such as `WebSocket.OPEN` remain available while
|
|
302
|
+
* instrumented.
|
|
303
|
+
*
|
|
304
|
+
* Returns a function that restores `prototype.constructor` to its prior descriptor; call it
|
|
305
|
+
* before restoring the global property in `stop()`.
|
|
306
|
+
*/
|
|
307
|
+
function preserveConstructorShape(instrumentation: AnyConstructor, original: AnyConstructor): () => void {
|
|
308
|
+
/**
|
|
309
|
+
* Limitation: Only the original's *own* static members are copied. Statics inherited through the
|
|
310
|
+
* constructor's prototype chain (e.g. `class Child extends Parent` where `Parent` defines statics)
|
|
311
|
+
* are not preserved, since the instrumentation still inherits from `Function.prototype`. This is
|
|
312
|
+
* acceptable for the globals we instrument (e.g. `WebSocket`, whose own statics are the only ones
|
|
313
|
+
* that matter), but we would need to delegate the static prototype chain to support subclassed
|
|
314
|
+
* constructors with meaningful inherited statics.
|
|
315
|
+
*/
|
|
316
|
+
for (const key of ([] as PropertyKey[]).concat(
|
|
317
|
+
Object.getOwnPropertyNames(original),
|
|
318
|
+
Object.getOwnPropertySymbols(original)
|
|
319
|
+
)) {
|
|
320
|
+
const descriptor = Object.getOwnPropertyDescriptor(original, key) as PropertyDescriptor
|
|
321
|
+
Object.defineProperty(instrumentation, key, descriptor)
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/*
|
|
325
|
+
* Limitation: Repointing `constructor` on this shared prototype affects every instance whose
|
|
326
|
+
* `[[Prototype]]` is this object, including instances created before instrumentation, because
|
|
327
|
+
* `constructor` is inherited rather than snapshotted per instance. Code that held `original` (or
|
|
328
|
+
* whatever was in `prototype.constructor` before) as the canonical constructor and expects reference
|
|
329
|
+
* equality to that value for the lifetime of the page can observe a behavior change while RUM is
|
|
330
|
+
* active; restoring on `stop()` fixes this. In practice the SDK initializes as early as possible,
|
|
331
|
+
* which narrows the window where pre-instrument instances exist.
|
|
332
|
+
*/
|
|
333
|
+
const { stop: restoreOriginalConstructor } = replaceWithInstrumentation(
|
|
334
|
+
original.prototype,
|
|
335
|
+
'constructor',
|
|
336
|
+
original.prototype.constructor,
|
|
337
|
+
instrumentation
|
|
338
|
+
)
|
|
339
|
+
|
|
340
|
+
return restoreOriginalConstructor
|
|
341
|
+
}
|
|
342
|
+
|
|
133
343
|
export function instrumentSetter<TARGET extends { [key: string]: any }, PROPERTY extends keyof TARGET>(
|
|
134
344
|
targetPrototype: TARGET,
|
|
135
345
|
property: PROPERTY,
|
|
136
346
|
after: (target: TARGET, value: TARGET[PROPERTY]) => void
|
|
137
347
|
) {
|
|
138
348
|
const originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property)
|
|
139
|
-
if (!originalDescriptor
|
|
349
|
+
if (!originalDescriptor?.set || !originalDescriptor.configurable) {
|
|
140
350
|
return { stop: noop }
|
|
141
351
|
}
|
|
142
352
|
|