@openobserve/browser-core 0.2.11 → 0.2.12-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -5
- package/src/boot/displayAlreadyInitializedError.ts +8 -0
- package/src/boot/init.ts +29 -15
- package/src/browser/addEventListener.ts +44 -35
- package/src/browser/{types.ts → browser.types.ts} +42 -0
- package/src/browser/cookie.ts +69 -15
- package/src/browser/fetchObservable.ts +97 -42
- package/src/browser/{pageExitObservable.ts → pageMayExitObservable.ts} +11 -24
- package/src/browser/runOnReadyState.ts +14 -4
- package/src/browser/xhrObservable.ts +45 -38
- package/src/domain/allowedTrackingOrigins.ts +30 -0
- package/src/domain/bufferedData.ts +32 -0
- package/src/domain/configuration/configuration.ts +366 -95
- package/src/domain/configuration/endpointBuilder.ts +48 -64
- package/src/domain/configuration/index.ts +6 -4
- package/src/domain/configuration/transportConfiguration.ts +42 -35
- package/src/domain/connectivity/connectivity.ts +31 -0
- package/src/domain/connectivity/index.ts +1 -0
- package/src/domain/console/consoleObservable.ts +59 -27
- package/src/domain/context/contextConstants.ts +27 -0
- package/src/domain/context/contextManager.ts +85 -0
- package/src/domain/context/contextUtils.ts +14 -0
- package/src/domain/context/defineContextMethod.ts +31 -0
- package/src/domain/context/storeContextManager.ts +55 -0
- package/src/domain/contexts/accountContext.ts +47 -0
- package/src/domain/contexts/globalContext.ts +30 -0
- package/src/domain/contexts/rumInternalContext.type.ts +15 -0
- package/src/domain/contexts/userContext.ts +64 -0
- package/src/domain/deflate/{types.ts → deflate.types.ts} +18 -2
- package/src/domain/deflate/index.ts +1 -1
- package/src/domain/error/error.ts +28 -84
- package/src/domain/error/error.types.ts +21 -4
- package/src/domain/error/trackRuntimeError.ts +37 -8
- package/src/domain/eventRateLimiter/createEventRateLimiter.ts +5 -2
- package/src/domain/extension/extensionUtils.ts +28 -0
- package/src/domain/intakeSites.ts +18 -0
- package/src/domain/report/browser.types.ts +12 -0
- package/src/domain/report/reportObservable.ts +37 -30
- package/src/domain/resourceUtils.ts +20 -16
- package/src/domain/session/README.md +193 -0
- package/src/domain/session/oldCookiesMigration.ts +7 -7
- package/src/domain/session/sessionConstants.ts +16 -1
- package/src/domain/session/sessionManager.ts +179 -15
- package/src/domain/session/sessionState.ts +49 -17
- package/src/domain/session/sessionStateValidation.ts +9 -0
- package/src/domain/session/sessionStore.ts +118 -55
- package/src/domain/session/sessionStoreOperations.ts +51 -32
- package/src/domain/session/storeStrategies/sessionInCookie.ts +113 -23
- package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +11 -8
- package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +6 -2
- package/src/domain/synthetics/syntheticsWorkerValues.ts +15 -4
- package/src/domain/tags.ts +76 -0
- package/src/domain/telemetry/index.ts +12 -4
- package/src/domain/telemetry/rawTelemetryEvent.types.ts +11 -3
- package/src/domain/telemetry/telemetry.ts +242 -98
- package/src/domain/telemetry/telemetryEvent.types.ts +530 -5
- package/src/domain/trackingConsent.ts +34 -0
- package/src/index.ts +92 -55
- package/src/tools/abstractHooks.ts +72 -0
- package/src/tools/abstractLifeCycle.ts +1 -0
- package/src/tools/boundedBuffer.ts +36 -8
- package/src/tools/display.ts +18 -13
- package/src/tools/encoder.ts +103 -0
- package/src/tools/experimentalFeatures.ts +18 -9
- package/src/tools/getZoneJsOriginalValue.ts +1 -1
- package/src/tools/{getGlobalObject.ts → globalObject.ts} +20 -0
- package/src/tools/instrumentMethod.ts +127 -66
- package/src/tools/matchOption.ts +1 -2
- package/src/tools/mergeInto.ts +16 -16
- package/src/tools/monitor.ts +14 -10
- package/src/tools/observable.ts +79 -15
- package/src/tools/queueMicrotask.ts +13 -0
- package/src/tools/readBytesFromStream.ts +24 -64
- package/src/tools/requestIdleCallback.ts +40 -0
- package/src/tools/sendToExtension.ts +3 -1
- package/src/tools/serialisation/context.ts +4 -1
- package/src/tools/serialisation/sanitize.ts +32 -14
- package/src/tools/stackTrace/computeStackTrace.ts +250 -0
- package/src/tools/stackTrace/handlingStack.ts +48 -0
- package/src/tools/taskQueue.ts +63 -0
- package/src/tools/timer.ts +1 -1
- package/src/tools/utils/arrayUtils.ts +11 -3
- package/src/tools/utils/browserDetection.ts +35 -3
- package/src/tools/utils/byteUtils.ts +13 -2
- package/src/tools/utils/functionUtils.ts +0 -2
- package/src/tools/utils/numberUtils.ts +2 -1
- package/src/tools/utils/objectUtils.ts +1 -3
- package/src/tools/utils/polyfills.ts +6 -110
- package/src/tools/utils/responseUtils.ts +1 -1
- package/src/tools/utils/stringUtils.ts +62 -4
- package/src/tools/utils/timeUtils.ts +18 -13
- package/src/tools/utils/timezone.ts +9 -0
- package/src/tools/utils/urlPolyfill.ts +29 -59
- package/src/tools/valueHistory.ts +66 -35
- package/src/transport/batch.ts +113 -61
- package/src/transport/eventBridge.ts +24 -5
- package/src/transport/flushController.ts +44 -23
- package/src/transport/httpRequest.ts +99 -71
- package/src/transport/index.ts +7 -4
- package/src/transport/sendWithRetryStrategy.ts +60 -41
- package/cjs/boot/init.d.ts +0 -5
- package/cjs/boot/init.js +0 -36
- package/cjs/boot/init.js.map +0 -1
- package/cjs/browser/addEventListener.d.ts +0 -76
- package/cjs/browser/addEventListener.js +0 -52
- package/cjs/browser/addEventListener.js.map +0 -1
- package/cjs/browser/cookie.d.ts +0 -10
- package/cjs/browser/cookie.js +0 -69
- package/cjs/browser/cookie.js.map +0 -1
- package/cjs/browser/fetchObservable.d.ts +0 -23
- package/cjs/browser/fetchObservable.js +0 -74
- package/cjs/browser/fetchObservable.js.map +0 -1
- package/cjs/browser/pageExitObservable.d.ts +0 -14
- package/cjs/browser/pageExitObservable.js +0 -58
- package/cjs/browser/pageExitObservable.js.map +0 -1
- package/cjs/browser/runOnReadyState.d.ts +0 -2
- package/cjs/browser/runOnReadyState.js +0 -15
- package/cjs/browser/runOnReadyState.js.map +0 -1
- package/cjs/browser/types.d.ts +0 -19
- package/cjs/browser/types.js +0 -6
- package/cjs/browser/types.js.map +0 -1
- package/cjs/browser/xhrObservable.d.ts +0 -22
- package/cjs/browser/xhrObservable.js +0 -93
- package/cjs/browser/xhrObservable.js.map +0 -1
- package/cjs/domain/configuration/configuration.d.ts +0 -67
- package/cjs/domain/configuration/configuration.js +0 -95
- package/cjs/domain/configuration/configuration.js.map +0 -1
- package/cjs/domain/configuration/endpointBuilder.d.ts +0 -14
- package/cjs/domain/configuration/endpointBuilder.js +0 -94
- package/cjs/domain/configuration/endpointBuilder.js.map +0 -1
- package/cjs/domain/configuration/index.d.ts +0 -3
- package/cjs/domain/configuration/index.js +0 -25
- package/cjs/domain/configuration/index.js.map +0 -1
- package/cjs/domain/configuration/intakeSites.d.ts +0 -5
- package/cjs/domain/configuration/intakeSites.js +0 -9
- package/cjs/domain/configuration/intakeSites.js.map +0 -1
- package/cjs/domain/configuration/tags.d.ts +0 -4
- package/cjs/domain/configuration/tags.js +0 -39
- package/cjs/domain/configuration/tags.js.map +0 -1
- package/cjs/domain/configuration/transportConfiguration.d.ts +0 -16
- package/cjs/domain/configuration/transportConfiguration.js +0 -42
- package/cjs/domain/configuration/transportConfiguration.js.map +0 -1
- package/cjs/domain/console/consoleObservable.d.ts +0 -11
- package/cjs/domain/console/consoleObservable.js +0 -75
- package/cjs/domain/console/consoleObservable.js.map +0 -1
- package/cjs/domain/deflate/index.d.ts +0 -1
- package/cjs/domain/deflate/index.js +0 -18
- package/cjs/domain/deflate/index.js.map +0 -1
- package/cjs/domain/deflate/types.d.ts +0 -26
- package/cjs/domain/deflate/types.js +0 -3
- package/cjs/domain/deflate/types.js.map +0 -1
- package/cjs/domain/error/error.d.ts +0 -28
- package/cjs/domain/error/error.js +0 -131
- package/cjs/domain/error/error.js.map +0 -1
- package/cjs/domain/error/error.types.d.ts +0 -40
- package/cjs/domain/error/error.types.js +0 -13
- package/cjs/domain/error/error.types.js.map +0 -1
- package/cjs/domain/error/trackRuntimeError.d.ts +0 -5
- package/cjs/domain/error/trackRuntimeError.js +0 -21
- package/cjs/domain/error/trackRuntimeError.js.map +0 -1
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.d.ts +0 -5
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +0 -40
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +0 -1
- package/cjs/domain/report/browser.types.d.ts +0 -24
- package/cjs/domain/report/browser.types.js +0 -3
- package/cjs/domain/report/browser.types.js.map +0 -1
- package/cjs/domain/report/reportObservable.d.ts +0 -15
- package/cjs/domain/report/reportObservable.js +0 -94
- package/cjs/domain/report/reportObservable.js.map +0 -1
- package/cjs/domain/resourceUtils.d.ts +0 -16
- package/cjs/domain/resourceUtils.js +0 -3
- package/cjs/domain/resourceUtils.js.map +0 -1
- package/cjs/domain/session/oldCookiesMigration.d.ts +0 -11
- package/cjs/domain/session/oldCookiesMigration.js +0 -40
- package/cjs/domain/session/oldCookiesMigration.js.map +0 -1
- package/cjs/domain/session/sessionConstants.d.ts +0 -2
- package/cjs/domain/session/sessionConstants.js +0 -7
- package/cjs/domain/session/sessionConstants.js.map +0 -1
- package/cjs/domain/session/sessionManager.d.ts +0 -20
- package/cjs/domain/session/sessionManager.js +0 -65
- package/cjs/domain/session/sessionManager.js.map +0 -1
- package/cjs/domain/session/sessionState.d.ts +0 -11
- package/cjs/domain/session/sessionState.js +0 -45
- package/cjs/domain/session/sessionState.js.map +0 -1
- package/cjs/domain/session/sessionStore.d.ts +0 -34
- package/cjs/domain/session/sessionStore.js +0 -144
- package/cjs/domain/session/sessionStore.js.map +0 -1
- package/cjs/domain/session/sessionStoreOperations.d.ts +0 -15
- package/cjs/domain/session/sessionStoreOperations.js +0 -104
- package/cjs/domain/session/sessionStoreOperations.js.map +0 -1
- package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +0 -6
- package/cjs/domain/session/storeStrategies/sessionInCookie.js +0 -48
- package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +0 -1
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +0 -3
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +0 -40
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -14
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +0 -5
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +0 -1
- package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +0 -11
- package/cjs/domain/synthetics/syntheticsWorkerValues.js +0 -22
- package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +0 -1
- package/cjs/domain/telemetry/index.d.ts +0 -3
- package/cjs/domain/telemetry/index.js +0 -28
- package/cjs/domain/telemetry/index.js.map +0 -1
- package/cjs/domain/telemetry/rawTelemetryEvent.types.d.ts +0 -11
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js +0 -8
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +0 -1
- package/cjs/domain/telemetry/telemetry.d.ts +0 -112
- package/cjs/domain/telemetry/telemetry.js +0 -146
- package/cjs/domain/telemetry/telemetry.js.map +0 -1
- package/cjs/domain/telemetry/telemetryEvent.types.d.ts +0 -375
- package/cjs/domain/telemetry/telemetryEvent.types.js +0 -7
- package/cjs/domain/telemetry/telemetryEvent.types.js.map +0 -1
- package/cjs/domain/tracekit/computeStackTrace.d.ts +0 -5
- package/cjs/domain/tracekit/computeStackTrace.js +0 -118
- package/cjs/domain/tracekit/computeStackTrace.js.map +0 -1
- package/cjs/domain/tracekit/index.d.ts +0 -3
- package/cjs/domain/tracekit/index.js +0 -8
- package/cjs/domain/tracekit/index.js.map +0 -1
- package/cjs/domain/tracekit/tracekit.d.ts +0 -35
- package/cjs/domain/tracekit/tracekit.js +0 -95
- package/cjs/domain/tracekit/tracekit.js.map +0 -1
- package/cjs/domain/tracekit/types.d.ts +0 -44
- package/cjs/domain/tracekit/types.js +0 -3
- package/cjs/domain/tracekit/types.js.map +0 -1
- package/cjs/domain/user/index.d.ts +0 -2
- package/cjs/domain/user/index.js +0 -19
- package/cjs/domain/user/index.js.map +0 -1
- package/cjs/domain/user/user.d.ts +0 -12
- package/cjs/domain/user/user.js +0 -35
- package/cjs/domain/user/user.js.map +0 -1
- package/cjs/domain/user/user.types.d.ts +0 -6
- package/cjs/domain/user/user.types.js +0 -3
- package/cjs/domain/user/user.types.js.map +0 -1
- package/cjs/index.d.ts +0 -63
- package/cjs/index.js +0 -155
- package/cjs/index.js.map +0 -1
- package/cjs/tools/abstractLifeCycle.d.ts +0 -23
- package/cjs/tools/abstractLifeCycle.js +0 -29
- package/cjs/tools/abstractLifeCycle.js.map +0 -1
- package/cjs/tools/boundedBuffer.d.ts +0 -5
- package/cjs/tools/boundedBuffer.js +0 -22
- package/cjs/tools/boundedBuffer.js.map +0 -1
- package/cjs/tools/catchUserErrors.d.ts +0 -1
- package/cjs/tools/catchUserErrors.js +0 -20
- package/cjs/tools/catchUserErrors.js.map +0 -1
- package/cjs/tools/display.d.ts +0 -35
- package/cjs/tools/display.js +0 -45
- package/cjs/tools/display.js.map +0 -1
- package/cjs/tools/experimentalFeatures.d.ts +0 -24
- package/cjs/tools/experimentalFeatures.js +0 -47
- package/cjs/tools/experimentalFeatures.js.map +0 -1
- package/cjs/tools/getGlobalObject.d.ts +0 -4
- package/cjs/tools/getGlobalObject.js +0 -37
- package/cjs/tools/getGlobalObject.js.map +0 -1
- package/cjs/tools/getZoneJsOriginalValue.d.ts +0 -19
- package/cjs/tools/getZoneJsOriginalValue.js +0 -30
- package/cjs/tools/getZoneJsOriginalValue.js.map +0 -1
- package/cjs/tools/instrumentMethod.d.ts +0 -19
- package/cjs/tools/instrumentMethod.js +0 -83
- package/cjs/tools/instrumentMethod.js.map +0 -1
- package/cjs/tools/matchOption.d.ts +0 -8
- package/cjs/tools/matchOption.js +0 -38
- package/cjs/tools/matchOption.js.map +0 -1
- package/cjs/tools/mergeInto.d.ts +0 -25
- package/cjs/tools/mergeInto.js +0 -105
- package/cjs/tools/mergeInto.js.map +0 -1
- package/cjs/tools/monitor.d.ts +0 -9
- package/cjs/tools/monitor.js +0 -76
- package/cjs/tools/monitor.js.map +0 -1
- package/cjs/tools/observable.d.ts +0 -12
- package/cjs/tools/observable.js +0 -44
- package/cjs/tools/observable.js.map +0 -1
- package/cjs/tools/readBytesFromStream.d.ts +0 -11
- package/cjs/tools/readBytesFromStream.js +0 -64
- package/cjs/tools/readBytesFromStream.js.map +0 -1
- package/cjs/tools/sendToExtension.d.ts +0 -3
- package/cjs/tools/sendToExtension.js +0 -11
- package/cjs/tools/sendToExtension.js.map +0 -1
- package/cjs/tools/serialisation/context.d.ts +0 -6
- package/cjs/tools/serialisation/context.js +0 -3
- package/cjs/tools/serialisation/context.js.map +0 -1
- package/cjs/tools/serialisation/contextManager.d.ts +0 -21
- package/cjs/tools/serialisation/contextManager.js +0 -70
- package/cjs/tools/serialisation/contextManager.js.map +0 -1
- package/cjs/tools/serialisation/heavyCustomerDataWarning.d.ts +0 -8
- package/cjs/tools/serialisation/heavyCustomerDataWarning.js +0 -18
- package/cjs/tools/serialisation/heavyCustomerDataWarning.js.map +0 -1
- package/cjs/tools/serialisation/jsonStringify.d.ts +0 -14
- package/cjs/tools/serialisation/jsonStringify.js +0 -49
- package/cjs/tools/serialisation/jsonStringify.js.map +0 -1
- package/cjs/tools/serialisation/sanitize.d.ts +0 -18
- package/cjs/tools/serialisation/sanitize.js +0 -185
- package/cjs/tools/serialisation/sanitize.js.map +0 -1
- package/cjs/tools/timer.d.ts +0 -5
- package/cjs/tools/timer.js +0 -23
- package/cjs/tools/timer.js.map +0 -1
- package/cjs/tools/utils/arrayUtils.d.ts +0 -1
- package/cjs/tools/utils/arrayUtils.js +0 -11
- package/cjs/tools/utils/arrayUtils.js.map +0 -1
- package/cjs/tools/utils/browserDetection.d.ts +0 -2
- package/cjs/tools/utils/browserDetection.js +0 -12
- package/cjs/tools/utils/browserDetection.js.map +0 -1
- package/cjs/tools/utils/byteUtils.d.ts +0 -4
- package/cjs/tools/utils/byteUtils.js +0 -31
- package/cjs/tools/utils/byteUtils.js.map +0 -1
- package/cjs/tools/utils/functionUtils.d.ts +0 -9
- package/cjs/tools/utils/functionUtils.js +0 -48
- package/cjs/tools/utils/functionUtils.js.map +0 -1
- package/cjs/tools/utils/numberUtils.d.ts +0 -8
- package/cjs/tools/utils/numberUtils.js +0 -24
- package/cjs/tools/utils/numberUtils.js.map +0 -1
- package/cjs/tools/utils/objectUtils.d.ts +0 -10
- package/cjs/tools/utils/objectUtils.js +0 -26
- package/cjs/tools/utils/objectUtils.js.map +0 -1
- package/cjs/tools/utils/polyfills.d.ts +0 -24
- package/cjs/tools/utils/polyfills.js +0 -110
- package/cjs/tools/utils/polyfills.js.map +0 -1
- package/cjs/tools/utils/responseUtils.d.ts +0 -2
- package/cjs/tools/utils/responseUtils.js +0 -18
- package/cjs/tools/utils/responseUtils.js.map +0 -1
- package/cjs/tools/utils/stringUtils.d.ts +0 -7
- package/cjs/tools/utils/stringUtils.js +0 -32
- package/cjs/tools/utils/stringUtils.js.map +0 -1
- package/cjs/tools/utils/timeUtils.d.ts +0 -57
- package/cjs/tools/utils/timeUtils.js +0 -99
- package/cjs/tools/utils/timeUtils.js.map +0 -1
- package/cjs/tools/utils/typeUtils.d.ts +0 -4
- package/cjs/tools/utils/typeUtils.js +0 -17
- package/cjs/tools/utils/typeUtils.js.map +0 -1
- package/cjs/tools/utils/urlPolyfill.d.ts +0 -14
- package/cjs/tools/utils/urlPolyfill.js +0 -92
- package/cjs/tools/utils/urlPolyfill.js.map +0 -1
- package/cjs/tools/valueHistory.d.ts +0 -50
- package/cjs/tools/valueHistory.js +0 -106
- package/cjs/tools/valueHistory.js.map +0 -1
- package/cjs/transport/batch.d.ts +0 -19
- package/cjs/transport/batch.js +0 -79
- package/cjs/transport/batch.js.map +0 -1
- package/cjs/transport/eventBridge.d.ts +0 -12
- package/cjs/transport/eventBridge.js +0 -34
- package/cjs/transport/eventBridge.js.map +0 -1
- package/cjs/transport/flushController.d.ts +0 -48
- package/cjs/transport/flushController.js +0 -97
- package/cjs/transport/flushController.js.map +0 -1
- package/cjs/transport/httpRequest.d.ts +0 -37
- package/cjs/transport/httpRequest.js +0 -91
- package/cjs/transport/httpRequest.js.map +0 -1
- package/cjs/transport/index.d.ts +0 -4
- package/cjs/transport/index.js +0 -13
- package/cjs/transport/index.js.map +0 -1
- package/cjs/transport/sendWithRetryStrategy.d.ts +0 -39
- package/cjs/transport/sendWithRetryStrategy.js +0 -151
- package/cjs/transport/sendWithRetryStrategy.js.map +0 -1
- package/cjs/transport/startBatchWithReplica.d.ts +0 -15
- package/cjs/transport/startBatchWithReplica.js +0 -37
- package/cjs/transport/startBatchWithReplica.js.map +0 -1
- package/esm/boot/init.d.ts +0 -5
- package/esm/boot/init.js +0 -31
- package/esm/boot/init.js.map +0 -1
- package/esm/browser/addEventListener.d.ts +0 -76
- package/esm/browser/addEventListener.js +0 -47
- package/esm/browser/addEventListener.js.map +0 -1
- package/esm/browser/cookie.d.ts +0 -10
- package/esm/browser/cookie.js +0 -61
- package/esm/browser/cookie.js.map +0 -1
- package/esm/browser/fetchObservable.d.ts +0 -23
- package/esm/browser/fetchObservable.js +0 -70
- package/esm/browser/fetchObservable.js.map +0 -1
- package/esm/browser/pageExitObservable.d.ts +0 -14
- package/esm/browser/pageExitObservable.js +0 -53
- package/esm/browser/pageExitObservable.js.map +0 -1
- package/esm/browser/runOnReadyState.d.ts +0 -2
- package/esm/browser/runOnReadyState.js +0 -11
- package/esm/browser/runOnReadyState.js.map +0 -1
- package/esm/browser/types.d.ts +0 -19
- package/esm/browser/types.js +0 -5
- package/esm/browser/types.js.map +0 -1
- package/esm/browser/xhrObservable.d.ts +0 -22
- package/esm/browser/xhrObservable.js +0 -89
- package/esm/browser/xhrObservable.js.map +0 -1
- package/esm/domain/configuration/configuration.d.ts +0 -67
- package/esm/domain/configuration/configuration.js +0 -90
- package/esm/domain/configuration/configuration.js.map +0 -1
- package/esm/domain/configuration/endpointBuilder.d.ts +0 -14
- package/esm/domain/configuration/endpointBuilder.js +0 -90
- package/esm/domain/configuration/endpointBuilder.js.map +0 -1
- package/esm/domain/configuration/index.d.ts +0 -3
- package/esm/domain/configuration/index.js +0 -4
- package/esm/domain/configuration/index.js.map +0 -1
- package/esm/domain/configuration/intakeSites.d.ts +0 -5
- package/esm/domain/configuration/intakeSites.js +0 -6
- package/esm/domain/configuration/intakeSites.js.map +0 -1
- package/esm/domain/configuration/tags.d.ts +0 -4
- package/esm/domain/configuration/tags.js +0 -34
- package/esm/domain/configuration/tags.js.map +0 -1
- package/esm/domain/configuration/transportConfiguration.d.ts +0 -16
- package/esm/domain/configuration/transportConfiguration.js +0 -38
- package/esm/domain/configuration/transportConfiguration.js.map +0 -1
- package/esm/domain/console/consoleObservable.d.ts +0 -11
- package/esm/domain/console/consoleObservable.js +0 -70
- package/esm/domain/console/consoleObservable.js.map +0 -1
- package/esm/domain/deflate/index.d.ts +0 -1
- package/esm/domain/deflate/index.js +0 -2
- package/esm/domain/deflate/index.js.map +0 -1
- package/esm/domain/deflate/types.d.ts +0 -26
- package/esm/domain/deflate/types.js +0 -2
- package/esm/domain/deflate/types.js.map +0 -1
- package/esm/domain/error/error.d.ts +0 -28
- package/esm/domain/error/error.js +0 -121
- package/esm/domain/error/error.js.map +0 -1
- package/esm/domain/error/error.types.d.ts +0 -40
- package/esm/domain/error/error.types.js +0 -10
- package/esm/domain/error/error.types.js.map +0 -1
- package/esm/domain/error/trackRuntimeError.d.ts +0 -5
- package/esm/domain/error/trackRuntimeError.js +0 -17
- package/esm/domain/error/trackRuntimeError.js.map +0 -1
- package/esm/domain/eventRateLimiter/createEventRateLimiter.d.ts +0 -5
- package/esm/domain/eventRateLimiter/createEventRateLimiter.js +0 -36
- package/esm/domain/eventRateLimiter/createEventRateLimiter.js.map +0 -1
- package/esm/domain/report/browser.types.d.ts +0 -24
- package/esm/domain/report/browser.types.js +0 -2
- package/esm/domain/report/browser.types.js.map +0 -1
- package/esm/domain/report/reportObservable.d.ts +0 -15
- package/esm/domain/report/reportObservable.js +0 -90
- package/esm/domain/report/reportObservable.js.map +0 -1
- package/esm/domain/resourceUtils.d.ts +0 -16
- package/esm/domain/resourceUtils.js +0 -2
- package/esm/domain/resourceUtils.js.map +0 -1
- package/esm/domain/session/oldCookiesMigration.d.ts +0 -11
- package/esm/domain/session/oldCookiesMigration.js +0 -36
- package/esm/domain/session/oldCookiesMigration.js.map +0 -1
- package/esm/domain/session/sessionConstants.d.ts +0 -2
- package/esm/domain/session/sessionConstants.js +0 -4
- package/esm/domain/session/sessionConstants.js.map +0 -1
- package/esm/domain/session/sessionManager.d.ts +0 -20
- package/esm/domain/session/sessionManager.js +0 -60
- package/esm/domain/session/sessionManager.js.map +0 -1
- package/esm/domain/session/sessionState.d.ts +0 -11
- package/esm/domain/session/sessionState.js +0 -38
- package/esm/domain/session/sessionState.js.map +0 -1
- package/esm/domain/session/sessionStore.d.ts +0 -34
- package/esm/domain/session/sessionStore.js +0 -139
- package/esm/domain/session/sessionStore.js.map +0 -1
- package/esm/domain/session/sessionStoreOperations.d.ts +0 -15
- package/esm/domain/session/sessionStoreOperations.js +0 -99
- package/esm/domain/session/sessionStoreOperations.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +0 -6
- package/esm/domain/session/storeStrategies/sessionInCookie.js +0 -42
- package/esm/domain/session/storeStrategies/sessionInCookie.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +0 -3
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +0 -35
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -14
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.js +0 -2
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.js.map +0 -1
- package/esm/domain/synthetics/syntheticsWorkerValues.d.ts +0 -11
- package/esm/domain/synthetics/syntheticsWorkerValues.js +0 -16
- package/esm/domain/synthetics/syntheticsWorkerValues.js.map +0 -1
- package/esm/domain/telemetry/index.d.ts +0 -3
- package/esm/domain/telemetry/index.js +0 -4
- package/esm/domain/telemetry/index.js.map +0 -1
- package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +0 -11
- package/esm/domain/telemetry/rawTelemetryEvent.types.js +0 -5
- package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +0 -1
- package/esm/domain/telemetry/telemetry.d.ts +0 -112
- package/esm/domain/telemetry/telemetry.js +0 -134
- package/esm/domain/telemetry/telemetry.js.map +0 -1
- package/esm/domain/telemetry/telemetryEvent.types.d.ts +0 -375
- package/esm/domain/telemetry/telemetryEvent.types.js +0 -6
- package/esm/domain/telemetry/telemetryEvent.types.js.map +0 -1
- package/esm/domain/tracekit/computeStackTrace.d.ts +0 -5
- package/esm/domain/tracekit/computeStackTrace.js +0 -114
- package/esm/domain/tracekit/computeStackTrace.js.map +0 -1
- package/esm/domain/tracekit/index.d.ts +0 -3
- package/esm/domain/tracekit/index.js +0 -3
- package/esm/domain/tracekit/index.js.map +0 -1
- package/esm/domain/tracekit/tracekit.d.ts +0 -35
- package/esm/domain/tracekit/tracekit.js +0 -91
- package/esm/domain/tracekit/tracekit.js.map +0 -1
- package/esm/domain/tracekit/types.d.ts +0 -44
- package/esm/domain/tracekit/types.js +0 -2
- package/esm/domain/tracekit/types.js.map +0 -1
- package/esm/domain/user/index.d.ts +0 -2
- package/esm/domain/user/index.js +0 -3
- package/esm/domain/user/index.js.map +0 -1
- package/esm/domain/user/user.d.ts +0 -12
- package/esm/domain/user/user.js +0 -30
- package/esm/domain/user/user.js.map +0 -1
- package/esm/domain/user/user.types.d.ts +0 -6
- package/esm/domain/user/user.types.js +0 -2
- package/esm/domain/user/user.types.js.map +0 -1
- package/esm/index.d.ts +0 -63
- package/esm/index.js +0 -61
- package/esm/index.js.map +0 -1
- package/esm/tools/abstractLifeCycle.d.ts +0 -23
- package/esm/tools/abstractLifeCycle.js +0 -26
- package/esm/tools/abstractLifeCycle.js.map +0 -1
- package/esm/tools/boundedBuffer.d.ts +0 -5
- package/esm/tools/boundedBuffer.js +0 -19
- package/esm/tools/boundedBuffer.js.map +0 -1
- package/esm/tools/catchUserErrors.d.ts +0 -1
- package/esm/tools/catchUserErrors.js +0 -16
- package/esm/tools/catchUserErrors.js.map +0 -1
- package/esm/tools/display.d.ts +0 -35
- package/esm/tools/display.js +0 -41
- package/esm/tools/display.js.map +0 -1
- package/esm/tools/experimentalFeatures.d.ts +0 -24
- package/esm/tools/experimentalFeatures.js +0 -40
- package/esm/tools/experimentalFeatures.js.map +0 -1
- package/esm/tools/getGlobalObject.d.ts +0 -4
- package/esm/tools/getGlobalObject.js +0 -33
- package/esm/tools/getGlobalObject.js.map +0 -1
- package/esm/tools/getZoneJsOriginalValue.d.ts +0 -19
- package/esm/tools/getZoneJsOriginalValue.js +0 -26
- package/esm/tools/getZoneJsOriginalValue.js.map +0 -1
- package/esm/tools/instrumentMethod.d.ts +0 -19
- package/esm/tools/instrumentMethod.js +0 -77
- package/esm/tools/instrumentMethod.js.map +0 -1
- package/esm/tools/matchOption.d.ts +0 -8
- package/esm/tools/matchOption.js +0 -33
- package/esm/tools/matchOption.js.map +0 -1
- package/esm/tools/mergeInto.d.ts +0 -25
- package/esm/tools/mergeInto.js +0 -99
- package/esm/tools/mergeInto.js.map +0 -1
- package/esm/tools/monitor.d.ts +0 -9
- package/esm/tools/monitor.js +0 -66
- package/esm/tools/monitor.js.map +0 -1
- package/esm/tools/observable.d.ts +0 -12
- package/esm/tools/observable.js +0 -40
- package/esm/tools/observable.js.map +0 -1
- package/esm/tools/readBytesFromStream.d.ts +0 -11
- package/esm/tools/readBytesFromStream.js +0 -60
- package/esm/tools/readBytesFromStream.js.map +0 -1
- package/esm/tools/sendToExtension.d.ts +0 -3
- package/esm/tools/sendToExtension.js +0 -7
- package/esm/tools/sendToExtension.js.map +0 -1
- package/esm/tools/serialisation/context.d.ts +0 -6
- package/esm/tools/serialisation/context.js +0 -2
- package/esm/tools/serialisation/context.js.map +0 -1
- package/esm/tools/serialisation/contextManager.d.ts +0 -21
- package/esm/tools/serialisation/contextManager.js +0 -66
- package/esm/tools/serialisation/contextManager.js.map +0 -1
- package/esm/tools/serialisation/heavyCustomerDataWarning.d.ts +0 -8
- package/esm/tools/serialisation/heavyCustomerDataWarning.js +0 -14
- package/esm/tools/serialisation/heavyCustomerDataWarning.js.map +0 -1
- package/esm/tools/serialisation/jsonStringify.d.ts +0 -14
- package/esm/tools/serialisation/jsonStringify.js +0 -44
- package/esm/tools/serialisation/jsonStringify.js.map +0 -1
- package/esm/tools/serialisation/sanitize.d.ts +0 -18
- package/esm/tools/serialisation/sanitize.js +0 -181
- package/esm/tools/serialisation/sanitize.js.map +0 -1
- package/esm/tools/timer.d.ts +0 -5
- package/esm/tools/timer.js +0 -16
- package/esm/tools/timer.js.map +0 -1
- package/esm/tools/utils/arrayUtils.d.ts +0 -1
- package/esm/tools/utils/arrayUtils.js +0 -7
- package/esm/tools/utils/arrayUtils.js.map +0 -1
- package/esm/tools/utils/browserDetection.d.ts +0 -2
- package/esm/tools/utils/browserDetection.js +0 -7
- package/esm/tools/utils/browserDetection.js.map +0 -1
- package/esm/tools/utils/byteUtils.d.ts +0 -4
- package/esm/tools/utils/byteUtils.js +0 -26
- package/esm/tools/utils/byteUtils.js.map +0 -1
- package/esm/tools/utils/functionUtils.d.ts +0 -9
- package/esm/tools/utils/functionUtils.js +0 -43
- package/esm/tools/utils/functionUtils.js.map +0 -1
- package/esm/tools/utils/numberUtils.d.ts +0 -8
- package/esm/tools/utils/numberUtils.js +0 -17
- package/esm/tools/utils/numberUtils.js.map +0 -1
- package/esm/tools/utils/objectUtils.d.ts +0 -10
- package/esm/tools/utils/objectUtils.js +0 -19
- package/esm/tools/utils/objectUtils.js.map +0 -1
- package/esm/tools/utils/polyfills.d.ts +0 -24
- package/esm/tools/utils/polyfills.js +0 -95
- package/esm/tools/utils/polyfills.js.map +0 -1
- package/esm/tools/utils/responseUtils.d.ts +0 -2
- package/esm/tools/utils/responseUtils.js +0 -13
- package/esm/tools/utils/responseUtils.js.map +0 -1
- package/esm/tools/utils/stringUtils.d.ts +0 -7
- package/esm/tools/utils/stringUtils.js +0 -26
- package/esm/tools/utils/stringUtils.js.map +0 -1
- package/esm/tools/utils/timeUtils.d.ts +0 -57
- package/esm/tools/utils/timeUtils.js +0 -82
- package/esm/tools/utils/timeUtils.js.map +0 -1
- package/esm/tools/utils/typeUtils.d.ts +0 -4
- package/esm/tools/utils/typeUtils.js +0 -13
- package/esm/tools/utils/typeUtils.js.map +0 -1
- package/esm/tools/utils/urlPolyfill.d.ts +0 -14
- package/esm/tools/utils/urlPolyfill.js +0 -80
- package/esm/tools/utils/urlPolyfill.js.map +0 -1
- package/esm/tools/valueHistory.d.ts +0 -50
- package/esm/tools/valueHistory.js +0 -103
- package/esm/tools/valueHistory.js.map +0 -1
- package/esm/transport/batch.d.ts +0 -19
- package/esm/transport/batch.js +0 -76
- package/esm/transport/batch.js.map +0 -1
- package/esm/transport/eventBridge.d.ts +0 -12
- package/esm/transport/eventBridge.js +0 -29
- package/esm/transport/eventBridge.js.map +0 -1
- package/esm/transport/flushController.d.ts +0 -48
- package/esm/transport/flushController.js +0 -93
- package/esm/transport/flushController.js.map +0 -1
- package/esm/transport/httpRequest.d.ts +0 -37
- package/esm/transport/httpRequest.js +0 -85
- package/esm/transport/httpRequest.js.map +0 -1
- package/esm/transport/index.d.ts +0 -4
- package/esm/transport/index.js +0 -5
- package/esm/transport/index.js.map +0 -1
- package/esm/transport/sendWithRetryStrategy.d.ts +0 -39
- package/esm/transport/sendWithRetryStrategy.js +0 -146
- package/esm/transport/sendWithRetryStrategy.js.map +0 -1
- package/esm/transport/startBatchWithReplica.d.ts +0 -15
- package/esm/transport/startBatchWithReplica.js +0 -33
- package/esm/transport/startBatchWithReplica.js.map +0 -1
- package/src/domain/configuration/intakeSites.ts +0 -5
- package/src/domain/configuration/tags.ts +0 -43
- package/src/domain/tracekit/computeStackTrace.ts +0 -141
- package/src/domain/tracekit/index.ts +0 -3
- package/src/domain/tracekit/tracekit.ts +0 -96
- package/src/domain/tracekit/types.ts +0 -47
- package/src/domain/user/index.ts +0 -2
- package/src/domain/user/user.ts +0 -33
- package/src/domain/user/user.types.ts +0 -6
- package/src/tools/serialisation/contextManager.ts +0 -79
- package/src/tools/serialisation/heavyCustomerDataWarning.ts +0 -26
- package/src/transport/startBatchWithReplica.ts +0 -52
|
@@ -1,109 +1,170 @@
|
|
|
1
1
|
import { setTimeout } from './timer'
|
|
2
2
|
import { callMonitored } from './monitor'
|
|
3
3
|
import { noop } from './utils/functionUtils'
|
|
4
|
+
import { createHandlingStack } from './stackTrace/handlingStack'
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Object passed to the callback of an instrumented method call. See `instrumentMethod` for more
|
|
8
|
+
* info.
|
|
9
|
+
*/
|
|
10
|
+
export interface InstrumentedMethodCall<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET> {
|
|
11
|
+
/**
|
|
12
|
+
* The target object on which the method was called.
|
|
13
|
+
*/
|
|
14
|
+
target: TARGET
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The parameters with which the method was called.
|
|
18
|
+
*
|
|
19
|
+
* Note: if needed, parameters can be mutated by the instrumentation
|
|
20
|
+
*/
|
|
21
|
+
parameters: Parameters<TARGET[METHOD]>
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Registers a callback that will be called after the original method is called, with the method
|
|
25
|
+
* result passed as argument.
|
|
26
|
+
*/
|
|
27
|
+
onPostCall: (callback: PostCallCallback<TARGET, METHOD>) => void
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The stack trace of the method call.
|
|
31
|
+
*/
|
|
32
|
+
handlingStack?: string
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
type PostCallCallback<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET> = (
|
|
36
|
+
result: ReturnType<TARGET[METHOD]>
|
|
37
|
+
) => void
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Instruments a method on a object, calling the given callback before the original method is
|
|
41
|
+
* invoked. The callback receives an object with information about the method call.
|
|
42
|
+
*
|
|
43
|
+
* This function makes sure that we are "good citizens" regarding third party instrumentations: when
|
|
44
|
+
* removing the instrumentation, the original method is usually restored, but if a third party
|
|
45
|
+
* instrumentation was set after ours, we keep it in place and just replace our instrumentation with
|
|
46
|
+
* a noop.
|
|
47
|
+
*
|
|
48
|
+
* Note: it is generally better to instrument methods that are "owned" by the object instead of ones
|
|
49
|
+
* that are inherited from the prototype chain. Example:
|
|
50
|
+
* * do: `instrumentMethod(Array.prototype, 'push', ...)`
|
|
51
|
+
* * don't: `instrumentMethod([], 'push', ...)`
|
|
52
|
+
*
|
|
53
|
+
* This method is also used to set event handler properties (ex: window.onerror = ...), as it has
|
|
54
|
+
* the same requirements as instrumenting a method:
|
|
55
|
+
* * if the event handler is already set by a third party, we need to call it and not just blindly
|
|
56
|
+
* override it.
|
|
57
|
+
* * if the event handler is set by a third party after us, we need to keep it in place when
|
|
58
|
+
* removing ours.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
*
|
|
62
|
+
* instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {
|
|
63
|
+
* console.log('Before calling fetch on', target, 'with parameters', parameters)
|
|
64
|
+
*
|
|
65
|
+
* onPostCall((result) => {
|
|
66
|
+
* console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)
|
|
67
|
+
* })
|
|
68
|
+
* })
|
|
69
|
+
*/
|
|
70
|
+
export function instrumentMethod<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET & string>(
|
|
71
|
+
targetPrototype: TARGET,
|
|
7
72
|
method: METHOD,
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
) => (this: OBJECT, ...args: Parameters<OBJECT[METHOD]>) => ReturnType<OBJECT[METHOD]>
|
|
73
|
+
onPreCall: (this: null, callInfos: InstrumentedMethodCall<TARGET, METHOD>) => void,
|
|
74
|
+
{ computeHandlingStack }: { computeHandlingStack?: boolean } = {}
|
|
11
75
|
) {
|
|
12
|
-
|
|
76
|
+
let original = targetPrototype[method]
|
|
77
|
+
|
|
78
|
+
if (typeof original !== 'function') {
|
|
79
|
+
if (method in targetPrototype && method.startsWith('on')) {
|
|
80
|
+
original = noop as TARGET[METHOD]
|
|
81
|
+
} else {
|
|
82
|
+
return { stop: noop }
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
let stopped = false
|
|
87
|
+
|
|
88
|
+
const instrumentation = function (this: TARGET): ReturnType<TARGET[METHOD]> | undefined {
|
|
89
|
+
if (stopped) {
|
|
90
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
|
|
91
|
+
return original.apply(this, arguments as unknown as Parameters<TARGET[METHOD]>)
|
|
92
|
+
}
|
|
13
93
|
|
|
14
|
-
|
|
94
|
+
const parameters = Array.from(arguments) as Parameters<TARGET[METHOD]>
|
|
15
95
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
96
|
+
let postCallCallback: PostCallCallback<TARGET, METHOD> | undefined
|
|
97
|
+
|
|
98
|
+
callMonitored(onPreCall, null, [
|
|
99
|
+
{
|
|
100
|
+
target: this,
|
|
101
|
+
parameters,
|
|
102
|
+
onPostCall: (callback) => {
|
|
103
|
+
postCallCallback = callback
|
|
104
|
+
},
|
|
105
|
+
handlingStack: computeHandlingStack ? createHandlingStack('instrumented method') : undefined,
|
|
106
|
+
},
|
|
107
|
+
])
|
|
108
|
+
|
|
109
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
110
|
+
const result = original.apply(this, parameters)
|
|
111
|
+
|
|
112
|
+
if (postCallCallback) {
|
|
113
|
+
callMonitored(postCallCallback, null, [result])
|
|
19
114
|
}
|
|
115
|
+
|
|
20
116
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
21
|
-
return
|
|
117
|
+
return result
|
|
22
118
|
}
|
|
23
|
-
|
|
119
|
+
|
|
120
|
+
targetPrototype[method] = instrumentation as TARGET[METHOD]
|
|
24
121
|
|
|
25
122
|
return {
|
|
26
123
|
stop: () => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
124
|
+
stopped = true
|
|
125
|
+
// If the instrumentation has been removed by a third party, keep the last one
|
|
126
|
+
if (targetPrototype[method] === instrumentation) {
|
|
127
|
+
targetPrototype[method] = original
|
|
31
128
|
}
|
|
32
129
|
},
|
|
33
130
|
}
|
|
34
131
|
}
|
|
35
132
|
|
|
36
|
-
export function
|
|
37
|
-
|
|
38
|
-
method: METHOD,
|
|
39
|
-
{
|
|
40
|
-
before,
|
|
41
|
-
after,
|
|
42
|
-
}: {
|
|
43
|
-
before?: (this: OBJECT, ...args: Parameters<OBJECT[METHOD]>) => void
|
|
44
|
-
after?: (this: OBJECT, ...args: Parameters<OBJECT[METHOD]>) => void
|
|
45
|
-
}
|
|
46
|
-
) {
|
|
47
|
-
return instrumentMethod(
|
|
48
|
-
object,
|
|
49
|
-
method,
|
|
50
|
-
(original) =>
|
|
51
|
-
function () {
|
|
52
|
-
const args = arguments as unknown as Parameters<OBJECT[METHOD]>
|
|
53
|
-
let result
|
|
54
|
-
|
|
55
|
-
if (before) {
|
|
56
|
-
callMonitored(before, this, args)
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
if (typeof original === 'function') {
|
|
60
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
61
|
-
result = original.apply(this, args)
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (after) {
|
|
65
|
-
callMonitored(after, this, args)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
69
|
-
return result
|
|
70
|
-
}
|
|
71
|
-
)
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export function instrumentSetter<OBJECT extends { [key: string]: any }, PROPERTY extends keyof OBJECT>(
|
|
75
|
-
object: OBJECT,
|
|
133
|
+
export function instrumentSetter<TARGET extends { [key: string]: any }, PROPERTY extends keyof TARGET>(
|
|
134
|
+
targetPrototype: TARGET,
|
|
76
135
|
property: PROPERTY,
|
|
77
|
-
after: (
|
|
136
|
+
after: (target: TARGET, value: TARGET[PROPERTY]) => void
|
|
78
137
|
) {
|
|
79
|
-
const originalDescriptor = Object.getOwnPropertyDescriptor(
|
|
138
|
+
const originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property)
|
|
80
139
|
if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {
|
|
81
140
|
return { stop: noop }
|
|
82
141
|
}
|
|
83
142
|
|
|
84
|
-
|
|
143
|
+
const stoppedInstrumentation = noop
|
|
144
|
+
let instrumentation = (target: TARGET, value: TARGET[PROPERTY]) => {
|
|
85
145
|
// put hooked setter into event loop to avoid of set latency
|
|
86
146
|
setTimeout(() => {
|
|
87
|
-
|
|
147
|
+
if (instrumentation !== stoppedInstrumentation) {
|
|
148
|
+
after(target, value)
|
|
149
|
+
}
|
|
88
150
|
}, 0)
|
|
89
151
|
}
|
|
90
152
|
|
|
91
|
-
const instrumentationWrapper = function (this:
|
|
153
|
+
const instrumentationWrapper = function (this: TARGET, value: TARGET[PROPERTY]) {
|
|
92
154
|
originalDescriptor.set!.call(this, value)
|
|
93
155
|
instrumentation(this, value)
|
|
94
156
|
}
|
|
95
157
|
|
|
96
|
-
Object.defineProperty(
|
|
158
|
+
Object.defineProperty(targetPrototype, property, {
|
|
97
159
|
set: instrumentationWrapper,
|
|
98
160
|
})
|
|
99
161
|
|
|
100
162
|
return {
|
|
101
163
|
stop: () => {
|
|
102
|
-
if (Object.getOwnPropertyDescriptor(
|
|
103
|
-
Object.defineProperty(
|
|
104
|
-
} else {
|
|
105
|
-
instrumentation = noop
|
|
164
|
+
if (Object.getOwnPropertyDescriptor(targetPrototype, property)?.set === instrumentationWrapper) {
|
|
165
|
+
Object.defineProperty(targetPrototype, property, originalDescriptor)
|
|
106
166
|
}
|
|
167
|
+
instrumentation = stoppedInstrumentation
|
|
107
168
|
},
|
|
108
169
|
}
|
|
109
170
|
}
|
package/src/tools/matchOption.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { startsWith } from './utils/polyfills'
|
|
2
1
|
import { display } from './display'
|
|
3
2
|
import { getType } from './utils/typeUtils'
|
|
4
3
|
|
|
@@ -22,7 +21,7 @@ export function matchList(list: MatchOption[], value: string, useStartsWith = fa
|
|
|
22
21
|
} else if (item instanceof RegExp) {
|
|
23
22
|
return item.test(value)
|
|
24
23
|
} else if (typeof item === 'string') {
|
|
25
|
-
return useStartsWith ? startsWith(
|
|
24
|
+
return useStartsWith ? value.startsWith(item) : item === value
|
|
26
25
|
}
|
|
27
26
|
} catch (e) {
|
|
28
27
|
display.error(e)
|
package/src/tools/mergeInto.ts
CHANGED
|
@@ -5,22 +5,22 @@ type Merged<TDestination, TSource> =
|
|
|
5
5
|
TSource extends undefined
|
|
6
6
|
? TDestination
|
|
7
7
|
: // case 2 - destination is undefined - return source
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
8
|
+
TDestination extends undefined
|
|
9
|
+
? TSource
|
|
10
|
+
: // case 3 - source is an array - see if it merges or overwrites
|
|
11
|
+
TSource extends any[]
|
|
12
|
+
? TDestination extends any[]
|
|
13
|
+
? TDestination & TSource
|
|
14
|
+
: TSource
|
|
15
|
+
: // case 4 - source is an object - see if it merges or overwrites
|
|
16
|
+
TSource extends object
|
|
17
|
+
? TDestination extends object
|
|
18
|
+
? TDestination extends any[]
|
|
19
|
+
? TSource
|
|
20
|
+
: TDestination & TSource
|
|
21
|
+
: TSource
|
|
22
|
+
: // case 5 - cannot merge - return source
|
|
23
|
+
TSource
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* Iterate over source and affect its sub values into destination, recursively.
|
package/src/tools/monitor.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { display } from './display'
|
|
2
2
|
|
|
3
3
|
let onMonitorErrorCollected: undefined | ((error: unknown) => void)
|
|
4
4
|
let debugMode = false
|
|
@@ -50,19 +50,23 @@ export function callMonitored<T extends (...args: any[]) => any>(
|
|
|
50
50
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
51
51
|
return fn.apply(context, args)
|
|
52
52
|
} catch (e) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
monitorError(e)
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function monitorError(e: unknown) {
|
|
58
|
+
displayIfDebugEnabled(e)
|
|
59
|
+
if (onMonitorErrorCollected) {
|
|
60
|
+
try {
|
|
61
|
+
onMonitorErrorCollected(e)
|
|
62
|
+
} catch (e) {
|
|
63
|
+
displayIfDebugEnabled(e)
|
|
60
64
|
}
|
|
61
65
|
}
|
|
62
66
|
}
|
|
63
67
|
|
|
64
|
-
export function displayIfDebugEnabled(
|
|
68
|
+
export function displayIfDebugEnabled(...args: any[]) {
|
|
65
69
|
if (debugMode) {
|
|
66
|
-
display(
|
|
70
|
+
display.error('[MONITOR]', ...args)
|
|
67
71
|
}
|
|
68
72
|
}
|
package/src/tools/observable.ts
CHANGED
|
@@ -1,40 +1,104 @@
|
|
|
1
|
+
import { queueMicrotask } from './queueMicrotask'
|
|
2
|
+
|
|
1
3
|
export interface Subscription {
|
|
2
4
|
unsubscribe: () => void
|
|
3
5
|
}
|
|
4
6
|
|
|
7
|
+
type Observer<T> = (data: T) => void
|
|
8
|
+
|
|
9
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
5
10
|
export class Observable<T> {
|
|
6
|
-
|
|
11
|
+
protected observers: Array<Observer<T>> = []
|
|
7
12
|
private onLastUnsubscribe?: () => void
|
|
8
13
|
|
|
9
|
-
constructor(private onFirstSubscribe?: () => (() => void) | void) {}
|
|
14
|
+
constructor(private onFirstSubscribe?: (observable: Observable<T>) => (() => void) | void) {}
|
|
10
15
|
|
|
11
|
-
subscribe(
|
|
12
|
-
|
|
13
|
-
this.onLastUnsubscribe = this.onFirstSubscribe() || undefined
|
|
14
|
-
}
|
|
15
|
-
this.observers.push(f)
|
|
16
|
+
subscribe(observer: Observer<T>): Subscription {
|
|
17
|
+
this.addObserver(observer)
|
|
16
18
|
return {
|
|
17
|
-
unsubscribe: () =>
|
|
18
|
-
this.observers = this.observers.filter((other) => f !== other)
|
|
19
|
-
if (!this.observers.length && this.onLastUnsubscribe) {
|
|
20
|
-
this.onLastUnsubscribe()
|
|
21
|
-
}
|
|
22
|
-
},
|
|
19
|
+
unsubscribe: () => this.removeObserver(observer),
|
|
23
20
|
}
|
|
24
21
|
}
|
|
25
22
|
|
|
26
23
|
notify(data: T) {
|
|
27
24
|
this.observers.forEach((observer) => observer(data))
|
|
28
25
|
}
|
|
26
|
+
|
|
27
|
+
protected addObserver(observer: Observer<T>) {
|
|
28
|
+
this.observers.push(observer)
|
|
29
|
+
if (this.observers.length === 1 && this.onFirstSubscribe) {
|
|
30
|
+
this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
protected removeObserver(observer: Observer<T>) {
|
|
35
|
+
this.observers = this.observers.filter((other) => observer !== other)
|
|
36
|
+
if (!this.observers.length && this.onLastUnsubscribe) {
|
|
37
|
+
this.onLastUnsubscribe()
|
|
38
|
+
}
|
|
39
|
+
}
|
|
29
40
|
}
|
|
30
41
|
|
|
31
42
|
export function mergeObservables<T>(...observables: Array<Observable<T>>) {
|
|
32
|
-
|
|
43
|
+
return new Observable<T>((globalObservable) => {
|
|
33
44
|
const subscriptions: Subscription[] = observables.map((observable) =>
|
|
34
45
|
observable.subscribe((data) => globalObservable.notify(data))
|
|
35
46
|
)
|
|
36
47
|
return () => subscriptions.forEach((subscription) => subscription.unsubscribe())
|
|
37
48
|
})
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
52
|
+
export class BufferedObservable<T> extends Observable<T> {
|
|
53
|
+
private buffer: T[] = []
|
|
54
|
+
|
|
55
|
+
constructor(private maxBufferSize: number) {
|
|
56
|
+
super()
|
|
57
|
+
}
|
|
38
58
|
|
|
39
|
-
|
|
59
|
+
notify(data: T) {
|
|
60
|
+
this.buffer.push(data)
|
|
61
|
+
if (this.buffer.length > this.maxBufferSize) {
|
|
62
|
+
this.buffer.shift()
|
|
63
|
+
}
|
|
64
|
+
super.notify(data)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
subscribe(observer: Observer<T>): Subscription {
|
|
68
|
+
let closed = false
|
|
69
|
+
|
|
70
|
+
const subscription = {
|
|
71
|
+
unsubscribe: () => {
|
|
72
|
+
closed = true
|
|
73
|
+
this.removeObserver(observer)
|
|
74
|
+
},
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
queueMicrotask(() => {
|
|
78
|
+
for (const data of this.buffer) {
|
|
79
|
+
if (closed) {
|
|
80
|
+
return
|
|
81
|
+
}
|
|
82
|
+
observer(data)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (!closed) {
|
|
86
|
+
this.addObserver(observer)
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
return subscription
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Drop buffered data and don't buffer future data. This is to avoid leaking memory when it's not
|
|
95
|
+
* needed anymore. This can be seen as a performance optimization, and things will work probably
|
|
96
|
+
* even if this method isn't called, but still useful to clarify our intent and lowering our
|
|
97
|
+
* memory impact.
|
|
98
|
+
*/
|
|
99
|
+
unbuffer() {
|
|
100
|
+
queueMicrotask(() => {
|
|
101
|
+
this.maxBufferSize = this.buffer.length = 0
|
|
102
|
+
})
|
|
103
|
+
}
|
|
40
104
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { monitor } from './monitor'
|
|
2
|
+
import { globalObject } from './globalObject'
|
|
3
|
+
|
|
4
|
+
export function queueMicrotask(callback: () => void) {
|
|
5
|
+
const nativeImplementation = globalObject.queueMicrotask?.bind(globalObject)
|
|
6
|
+
|
|
7
|
+
if (typeof nativeImplementation === 'function') {
|
|
8
|
+
nativeImplementation(monitor(callback))
|
|
9
|
+
} else {
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises -- the callback is monitored, so it'll never throw
|
|
11
|
+
Promise.resolve().then(monitor(callback))
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -1,77 +1,37 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Uint8ArrayBuffer } from './utils/byteUtils'
|
|
2
|
+
import { concatBuffers } from './utils/byteUtils'
|
|
2
3
|
import { noop } from './utils/functionUtils'
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
interface Options {
|
|
6
|
+
// TODO(next-major): always collect stream body when `trackEarlyRequests` is removed, as we don't
|
|
7
|
+
// need to use this function to just wait for the end of the stream without collecting it
|
|
6
8
|
collectStreamBody?: boolean
|
|
7
9
|
}
|
|
10
|
+
|
|
8
11
|
/**
|
|
9
|
-
* Read bytes from a ReadableStream until
|
|
10
|
-
* the
|
|
11
|
-
* has been exceeded if more bytes were available.
|
|
12
|
+
* Read bytes from a ReadableStream until the end of the stream.
|
|
13
|
+
* Returns the bytes if collectStreamBody is true, otherwise returns undefined.
|
|
12
14
|
*/
|
|
13
|
-
export function readBytesFromStream(
|
|
14
|
-
stream: ReadableStream<Uint8Array>,
|
|
15
|
-
callback: (error?: Error, bytes?: Uint8Array, limitExceeded?: boolean) => void,
|
|
16
|
-
options: Options
|
|
17
|
-
) {
|
|
15
|
+
export async function readBytesFromStream(stream: ReadableStream<Uint8ArrayBuffer>, options: Options) {
|
|
18
16
|
const reader = stream.getReader()
|
|
19
|
-
const chunks:
|
|
20
|
-
let readBytesCount = 0
|
|
21
|
-
|
|
22
|
-
readMore()
|
|
23
|
-
|
|
24
|
-
function readMore() {
|
|
25
|
-
reader.read().then(
|
|
26
|
-
monitor((result: ReadableStreamReadResult<Uint8Array>) => {
|
|
27
|
-
if (result.done) {
|
|
28
|
-
onDone()
|
|
29
|
-
return
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if (options.collectStreamBody) {
|
|
33
|
-
chunks.push(result.value)
|
|
34
|
-
}
|
|
35
|
-
readBytesCount += result.value.length
|
|
36
|
-
|
|
37
|
-
if (readBytesCount > options.bytesLimit) {
|
|
38
|
-
onDone()
|
|
39
|
-
} else {
|
|
40
|
-
readMore()
|
|
41
|
-
}
|
|
42
|
-
}),
|
|
43
|
-
monitor((error) => callback(error))
|
|
44
|
-
)
|
|
45
|
-
}
|
|
17
|
+
const chunks: Uint8ArrayBuffer[] = []
|
|
46
18
|
|
|
47
|
-
|
|
48
|
-
reader.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
)
|
|
19
|
+
while (true) {
|
|
20
|
+
const result = await reader.read()
|
|
21
|
+
if (result.done) {
|
|
22
|
+
break
|
|
23
|
+
}
|
|
53
24
|
|
|
54
|
-
let bytes: Uint8Array | undefined
|
|
55
|
-
let limitExceeded: boolean | undefined
|
|
56
25
|
if (options.collectStreamBody) {
|
|
57
|
-
|
|
58
|
-
if (chunks.length === 1) {
|
|
59
|
-
// optimization: if the response is small enough to fit in a single buffer (provided by the browser), just
|
|
60
|
-
// use it directly.
|
|
61
|
-
completeBuffer = chunks[0]
|
|
62
|
-
} else {
|
|
63
|
-
// else, we need to copy buffers into a larger buffer to concatenate them.
|
|
64
|
-
completeBuffer = new Uint8Array(readBytesCount)
|
|
65
|
-
let offset = 0
|
|
66
|
-
chunks.forEach((chunk) => {
|
|
67
|
-
completeBuffer.set(chunk, offset)
|
|
68
|
-
offset += chunk.length
|
|
69
|
-
})
|
|
70
|
-
}
|
|
71
|
-
bytes = completeBuffer.slice(0, options.bytesLimit)
|
|
72
|
-
limitExceeded = completeBuffer.length > options.bytesLimit
|
|
26
|
+
chunks.push(result.value)
|
|
73
27
|
}
|
|
74
|
-
|
|
75
|
-
callback(undefined, bytes, limitExceeded)
|
|
76
28
|
}
|
|
29
|
+
|
|
30
|
+
reader.cancel().catch(
|
|
31
|
+
// we don't care if cancel fails, but we still need to catch the error to avoid reporting it
|
|
32
|
+
// as an unhandled rejection
|
|
33
|
+
noop
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
return options.collectStreamBody ? concatBuffers(chunks) : undefined
|
|
77
37
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { setTimeout, clearTimeout } from './timer'
|
|
2
|
+
import { monitor } from './monitor'
|
|
3
|
+
import { dateNow } from './utils/timeUtils'
|
|
4
|
+
|
|
5
|
+
// This type is not yet supported in TS 3.8. Imported from the TS source until we upgrade the
|
|
6
|
+
// minimum supported TS version.
|
|
7
|
+
// https://github.com/microsoft/TypeScript/blob/13c374a868c926f6a907666a5599992c1351b773/src/lib/dom.generated.d.ts#L9513-L9516
|
|
8
|
+
export interface IdleDeadline {
|
|
9
|
+
readonly didTimeout: boolean
|
|
10
|
+
timeRemaining(): DOMHighResTimeStamp
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* 'requestIdleCallback' with a shim.
|
|
15
|
+
*/
|
|
16
|
+
export function requestIdleCallback(callback: (deadline: IdleDeadline) => void, opts?: { timeout?: number }) {
|
|
17
|
+
// Note: check both 'requestIdleCallback' and 'cancelIdleCallback' existence because some polyfills only implement 'requestIdleCallback'.
|
|
18
|
+
if (window.requestIdleCallback && window.cancelIdleCallback) {
|
|
19
|
+
const id = window.requestIdleCallback(monitor(callback), opts)
|
|
20
|
+
return () => window.cancelIdleCallback(id)
|
|
21
|
+
}
|
|
22
|
+
return requestIdleCallbackShim(callback)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const MAX_TASK_TIME = 50
|
|
26
|
+
|
|
27
|
+
/*
|
|
28
|
+
* Shim from https://developer.chrome.com/blog/using-requestidlecallback#checking_for_requestidlecallback
|
|
29
|
+
* Note: there is no simple way to support the "timeout" option, so we ignore it.
|
|
30
|
+
*/
|
|
31
|
+
export function requestIdleCallbackShim(callback: (deadline: IdleDeadline) => void) {
|
|
32
|
+
const start = dateNow()
|
|
33
|
+
const timeoutId = setTimeout(() => {
|
|
34
|
+
callback({
|
|
35
|
+
didTimeout: false,
|
|
36
|
+
timeRemaining: () => Math.max(0, MAX_TASK_TIME - (dateNow() - start)),
|
|
37
|
+
})
|
|
38
|
+
}, 0)
|
|
39
|
+
return () => clearTimeout(timeoutId)
|
|
40
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { globalObject } from './globalObject'
|
|
2
|
+
|
|
1
3
|
interface BrowserWindow {
|
|
2
4
|
__ooBrowserSdkExtensionCallback?: (message: unknown) => void
|
|
3
5
|
}
|
|
@@ -5,7 +7,7 @@ interface BrowserWindow {
|
|
|
5
7
|
type ExtensionMessageType = 'logs' | 'record' | 'rum' | 'telemetry'
|
|
6
8
|
|
|
7
9
|
export function sendToExtension(type: ExtensionMessageType, payload: unknown) {
|
|
8
|
-
const callback = (
|
|
10
|
+
const callback = (globalObject as BrowserWindow).__ooBrowserSdkExtensionCallback
|
|
9
11
|
if (callback) {
|
|
10
12
|
callback({ type, payload })
|
|
11
13
|
}
|
|
@@ -4,5 +4,8 @@ export interface Context {
|
|
|
4
4
|
|
|
5
5
|
export type ContextValue = string | number | boolean | Context | ContextArray | undefined | null
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* @hidden
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
8
11
|
export interface ContextArray extends Array<ContextValue> {}
|