@pratham.raval/browser-core 6.22.3
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 +3 -0
- package/cjs/boot/displayAlreadyInitializedError.d.ts +2 -0
- package/cjs/boot/displayAlreadyInitializedError.js +10 -0
- package/cjs/boot/displayAlreadyInitializedError.js.map +1 -0
- package/cjs/boot/init.d.ts +14 -0
- package/cjs/boot/init.js +39 -0
- package/cjs/boot/init.js.map +1 -0
- package/cjs/browser/addEventListener.d.ts +87 -0
- package/cjs/browser/addEventListener.js +55 -0
- package/cjs/browser/addEventListener.js.map +1 -0
- package/cjs/browser/browser.types.d.ts +51 -0
- package/cjs/browser/browser.types.js +6 -0
- package/cjs/browser/browser.types.js.map +1 -0
- package/cjs/browser/cookie.d.ts +18 -0
- package/cjs/browser/cookie.js +101 -0
- package/cjs/browser/cookie.js.map +1 -0
- package/cjs/browser/fetchObservable.d.ts +25 -0
- package/cjs/browser/fetchObservable.js +79 -0
- package/cjs/browser/fetchObservable.js.map +1 -0
- package/cjs/browser/pageMayExitObservable.d.ts +14 -0
- package/cjs/browser/pageMayExitObservable.js +45 -0
- package/cjs/browser/pageMayExitObservable.js.map +1 -0
- package/cjs/browser/runOnReadyState.d.ts +5 -0
- package/cjs/browser/runOnReadyState.js +20 -0
- package/cjs/browser/runOnReadyState.js.map +1 -0
- package/cjs/browser/xhrObservable.d.ts +23 -0
- package/cjs/browser/xhrObservable.js +83 -0
- package/cjs/browser/xhrObservable.js.map +1 -0
- package/cjs/domain/allowedTrackingOrigins.d.ts +4 -0
- package/cjs/domain/allowedTrackingOrigins.js +25 -0
- package/cjs/domain/allowedTrackingOrigins.js.map +1 -0
- package/cjs/domain/bufferedData.d.ts +14 -0
- package/cjs/domain/bufferedData.js +22 -0
- package/cjs/domain/bufferedData.js.map +1 -0
- package/cjs/domain/configuration/configuration.d.ts +303 -0
- package/cjs/domain/configuration/configuration.js +152 -0
- package/cjs/domain/configuration/configuration.js.map +1 -0
- package/cjs/domain/configuration/endpointBuilder.d.ts +12 -0
- package/cjs/domain/configuration/endpointBuilder.js +78 -0
- package/cjs/domain/configuration/endpointBuilder.js.map +1 -0
- package/cjs/domain/configuration/index.d.ts +5 -0
- package/cjs/domain/configuration/index.js +16 -0
- package/cjs/domain/configuration/index.js.map +1 -0
- package/cjs/domain/configuration/transportConfiguration.d.ts +20 -0
- package/cjs/domain/configuration/transportConfiguration.js +54 -0
- package/cjs/domain/configuration/transportConfiguration.js.map +1 -0
- package/cjs/domain/connectivity/connectivity.d.ts +14 -0
- package/cjs/domain/connectivity/connectivity.js +14 -0
- package/cjs/domain/connectivity/connectivity.js.map +1 -0
- package/cjs/domain/connectivity/index.d.ts +1 -0
- package/cjs/domain/connectivity/index.js +18 -0
- package/cjs/domain/connectivity/index.js.map +1 -0
- package/cjs/domain/console/consoleObservable.d.ts +21 -0
- package/cjs/domain/console/consoleObservable.js +84 -0
- package/cjs/domain/console/consoleObservable.js.map +1 -0
- package/cjs/domain/context/contextConstants.d.ts +21 -0
- package/cjs/domain/context/contextConstants.js +18 -0
- package/cjs/domain/context/contextConstants.js.map +1 -0
- package/cjs/domain/context/contextManager.d.ts +19 -0
- package/cjs/domain/context/contextManager.js +60 -0
- package/cjs/domain/context/contextManager.js.map +1 -0
- package/cjs/domain/context/contextUtils.d.ts +5 -0
- package/cjs/domain/context/contextUtils.js +16 -0
- package/cjs/domain/context/contextUtils.js.map +1 -0
- package/cjs/domain/context/defineContextMethod.d.ts +6 -0
- package/cjs/domain/context/defineContextMethod.js +21 -0
- package/cjs/domain/context/defineContextMethod.js.map +1 -0
- package/cjs/domain/context/storeContextManager.d.ts +6 -0
- package/cjs/domain/context/storeContextManager.js +40 -0
- package/cjs/domain/context/storeContextManager.js.map +1 -0
- package/cjs/domain/contexts/accountContext.d.ts +26 -0
- package/cjs/domain/contexts/accountContext.js +33 -0
- package/cjs/domain/contexts/accountContext.js.map +1 -0
- package/cjs/domain/contexts/globalContext.d.ts +18 -0
- package/cjs/domain/contexts/globalContext.js +21 -0
- package/cjs/domain/contexts/globalContext.js.map +1 -0
- package/cjs/domain/contexts/rumInternalContext.type.d.ts +14 -0
- package/cjs/domain/contexts/rumInternalContext.type.js +3 -0
- package/cjs/domain/contexts/rumInternalContext.type.js.map +1 -0
- package/cjs/domain/contexts/userContext.d.ts +29 -0
- package/cjs/domain/contexts/userContext.js +45 -0
- package/cjs/domain/contexts/userContext.js.map +1 -0
- package/cjs/domain/deflate/deflate.types.d.ts +40 -0
- package/cjs/domain/deflate/deflate.types.js +3 -0
- package/cjs/domain/deflate/deflate.types.js.map +1 -0
- package/cjs/domain/deflate/index.d.ts +1 -0
- package/cjs/domain/deflate/index.js +18 -0
- package/cjs/domain/deflate/index.js.map +1 -0
- package/cjs/domain/error/error.d.ts +23 -0
- package/cjs/domain/error/error.js +74 -0
- package/cjs/domain/error/error.js.map +1 -0
- package/cjs/domain/error/error.types.d.ts +47 -0
- package/cjs/domain/error/error.types.js +13 -0
- package/cjs/domain/error/error.types.js.map +1 -0
- package/cjs/domain/error/trackRuntimeError.d.ts +11 -0
- package/cjs/domain/error/trackRuntimeError.js +48 -0
- package/cjs/domain/error/trackRuntimeError.js.map +1 -0
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.d.ts +5 -0
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +39 -0
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -0
- package/cjs/domain/extension/extensionUtils.d.ts +10 -0
- package/cjs/domain/extension/extensionUtils.js +30 -0
- package/cjs/domain/extension/extensionUtils.js.map +1 -0
- package/cjs/domain/intakeSites.d.ts +8 -0
- package/cjs/domain/intakeSites.js +11 -0
- package/cjs/domain/intakeSites.js.map +1 -0
- package/cjs/domain/report/browser.types.d.ts +34 -0
- package/cjs/domain/report/browser.types.js +3 -0
- package/cjs/domain/report/browser.types.js.map +1 -0
- package/cjs/domain/report/reportObservable.d.ts +14 -0
- package/cjs/domain/report/reportObservable.js +99 -0
- package/cjs/domain/report/reportObservable.js.map +1 -0
- package/cjs/domain/resourceUtils.d.ts +18 -0
- package/cjs/domain/resourceUtils.js +20 -0
- package/cjs/domain/resourceUtils.js.map +1 -0
- package/cjs/domain/session/oldCookiesMigration.d.ts +11 -0
- package/cjs/domain/session/oldCookiesMigration.js +40 -0
- package/cjs/domain/session/oldCookiesMigration.js.map +1 -0
- package/cjs/domain/session/sessionConstants.d.ts +15 -0
- package/cjs/domain/session/sessionConstants.js +16 -0
- package/cjs/domain/session/sessionConstants.js.map +1 -0
- package/cjs/domain/session/sessionManager.d.ts +28 -0
- package/cjs/domain/session/sessionManager.js +185 -0
- package/cjs/domain/session/sessionManager.js.map +1 -0
- package/cjs/domain/session/sessionState.d.ts +16 -0
- package/cjs/domain/session/sessionState.js +76 -0
- package/cjs/domain/session/sessionState.js.map +1 -0
- package/cjs/domain/session/sessionStateValidation.d.ts +3 -0
- package/cjs/domain/session/sessionStateValidation.js +11 -0
- package/cjs/domain/session/sessionStateValidation.js.map +1 -0
- package/cjs/domain/session/sessionStore.d.ts +38 -0
- package/cjs/domain/session/sessionStore.js +181 -0
- package/cjs/domain/session/sessionStore.js.map +1 -0
- package/cjs/domain/session/sessionStoreOperations.d.ts +12 -0
- package/cjs/domain/session/sessionStoreOperations.js +119 -0
- package/cjs/domain/session/sessionStoreOperations.js.map +1 -0
- package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +8 -0
- package/cjs/domain/session/storeStrategies/sessionInCookie.js +56 -0
- package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +1 -0
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +4 -0
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +41 -0
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -0
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -0
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +5 -0
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -0
- package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +12 -0
- package/cjs/domain/synthetics/syntheticsWorkerValues.js +31 -0
- package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +1 -0
- package/cjs/domain/tags.d.ts +6 -0
- package/cjs/domain/tags.js +67 -0
- package/cjs/domain/tags.js.map +1 -0
- package/cjs/domain/telemetry/index.d.ts +4 -0
- package/cjs/domain/telemetry/index.js +28 -0
- package/cjs/domain/telemetry/index.js.map +1 -0
- package/cjs/domain/telemetry/rawTelemetryEvent.types.d.ts +18 -0
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js +9 -0
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +1 -0
- package/cjs/domain/telemetry/telemetry.d.ts +56 -0
- package/cjs/domain/telemetry/telemetry.js +248 -0
- package/cjs/domain/telemetry/telemetry.js.map +1 -0
- package/cjs/domain/telemetry/telemetryEvent.types.d.ts +858 -0
- package/cjs/domain/telemetry/telemetryEvent.types.js +7 -0
- package/cjs/domain/telemetry/telemetryEvent.types.js.map +1 -0
- package/cjs/domain/trackingConsent.d.ts +13 -0
- package/cjs/domain/trackingConsent.js +28 -0
- package/cjs/domain/trackingConsent.js.map +1 -0
- package/cjs/index.d.ts +100 -0
- package/cjs/index.js +193 -0
- package/cjs/index.js.map +1 -0
- package/cjs/tools/abstractHooks.d.ts +24 -0
- package/cjs/tools/abstractHooks.js +41 -0
- package/cjs/tools/abstractHooks.js.map +1 -0
- package/cjs/tools/abstractLifeCycle.d.ts +23 -0
- package/cjs/tools/abstractLifeCycle.js +28 -0
- package/cjs/tools/abstractLifeCycle.js.map +1 -0
- package/cjs/tools/boundedBuffer.d.ts +16 -0
- package/cjs/tools/boundedBuffer.js +32 -0
- package/cjs/tools/boundedBuffer.js.map +1 -0
- package/cjs/tools/catchUserErrors.d.ts +1 -0
- package/cjs/tools/catchUserErrors.js +15 -0
- package/cjs/tools/catchUserErrors.js.map +1 -0
- package/cjs/tools/display.d.ts +38 -0
- package/cjs/tools/display.js +44 -0
- package/cjs/tools/display.js.map +1 -0
- package/cjs/tools/encoder.d.ts +54 -0
- package/cjs/tools/encoder.js +40 -0
- package/cjs/tools/encoder.js.map +1 -0
- package/cjs/tools/experimentalFeatures.d.ts +20 -0
- package/cjs/tools/experimentalFeatures.js +49 -0
- package/cjs/tools/experimentalFeatures.js.map +1 -0
- package/cjs/tools/getZoneJsOriginalValue.d.ts +19 -0
- package/cjs/tools/getZoneJsOriginalValue.js +29 -0
- package/cjs/tools/getZoneJsOriginalValue.js.map +1 -0
- package/cjs/tools/globalObject.d.ts +19 -0
- package/cjs/tools/globalObject.js +44 -0
- package/cjs/tools/globalObject.js.map +1 -0
- package/cjs/tools/instrumentMethod.d.ts +75 -0
- package/cjs/tools/instrumentMethod.js +118 -0
- package/cjs/tools/instrumentMethod.js.map +1 -0
- package/cjs/tools/matchOption.d.ts +8 -0
- package/cjs/tools/matchOption.js +35 -0
- package/cjs/tools/matchOption.js.map +1 -0
- package/cjs/tools/mergeInto.d.ts +25 -0
- package/cjs/tools/mergeInto.js +98 -0
- package/cjs/tools/mergeInto.js.map +1 -0
- package/cjs/tools/monitor.d.ts +9 -0
- package/cjs/tools/monitor.js +62 -0
- package/cjs/tools/monitor.js.map +1 -0
- package/cjs/tools/observable.d.ts +30 -0
- package/cjs/tools/observable.js +89 -0
- package/cjs/tools/observable.js.map +1 -0
- package/cjs/tools/queueMicrotask.d.ts +1 -0
- package/cjs/tools/queueMicrotask.js +17 -0
- package/cjs/tools/queueMicrotask.js.map +1 -0
- package/cjs/tools/readBytesFromStream.d.ts +11 -0
- package/cjs/tools/readBytesFromStream.js +63 -0
- package/cjs/tools/readBytesFromStream.js.map +1 -0
- package/cjs/tools/requestIdleCallback.d.ts +12 -0
- package/cjs/tools/requestIdleCallback.js +35 -0
- package/cjs/tools/requestIdleCallback.js.map +1 -0
- package/cjs/tools/sendToExtension.d.ts +3 -0
- package/cjs/tools/sendToExtension.js +11 -0
- package/cjs/tools/sendToExtension.js.map +1 -0
- package/cjs/tools/serialisation/context.d.ts +9 -0
- package/cjs/tools/serialisation/context.js +3 -0
- package/cjs/tools/serialisation/context.js.map +1 -0
- package/cjs/tools/serialisation/jsonStringify.d.ts +13 -0
- package/cjs/tools/serialisation/jsonStringify.js +48 -0
- package/cjs/tools/serialisation/jsonStringify.js.map +1 -0
- package/cjs/tools/serialisation/sanitize.d.ts +18 -0
- package/cjs/tools/serialisation/sanitize.js +188 -0
- package/cjs/tools/serialisation/sanitize.js.map +1 -0
- package/cjs/tools/stackTrace/computeStackTrace.d.ts +25 -0
- package/cjs/tools/stackTrace/computeStackTrace.js +187 -0
- package/cjs/tools/stackTrace/computeStackTrace.js.map +1 -0
- package/cjs/tools/stackTrace/handlingStack.d.ts +10 -0
- package/cjs/tools/stackTrace/handlingStack.js +46 -0
- package/cjs/tools/stackTrace/handlingStack.js.map +1 -0
- package/cjs/tools/taskQueue.d.ts +15 -0
- package/cjs/tools/taskQueue.js +54 -0
- package/cjs/tools/taskQueue.js.map +1 -0
- package/cjs/tools/timer.d.ts +5 -0
- package/cjs/tools/timer.js +22 -0
- package/cjs/tools/timer.js.map +1 -0
- package/cjs/tools/utils/arrayUtils.d.ts +3 -0
- package/cjs/tools/utils/arrayUtils.js +20 -0
- package/cjs/tools/utils/arrayUtils.js.map +1 -0
- package/cjs/tools/utils/browserDetection.d.ts +8 -0
- package/cjs/tools/utils/browserDetection.js +33 -0
- package/cjs/tools/utils/browserDetection.js.map +1 -0
- package/cjs/tools/utils/byteUtils.d.ts +8 -0
- package/cjs/tools/utils/byteUtils.js +30 -0
- package/cjs/tools/utils/byteUtils.js.map +1 -0
- package/cjs/tools/utils/functionUtils.d.ts +8 -0
- package/cjs/tools/utils/functionUtils.js +43 -0
- package/cjs/tools/utils/functionUtils.js.map +1 -0
- package/cjs/tools/utils/numberUtils.d.ts +9 -0
- package/cjs/tools/utils/numberUtils.js +24 -0
- package/cjs/tools/utils/numberUtils.js.map +1 -0
- package/cjs/tools/utils/objectUtils.d.ts +10 -0
- package/cjs/tools/utils/objectUtils.js +23 -0
- package/cjs/tools/utils/objectUtils.js.map +1 -0
- package/cjs/tools/utils/polyfills.d.ts +7 -0
- package/cjs/tools/utils/polyfills.js +23 -0
- package/cjs/tools/utils/polyfills.js.map +1 -0
- package/cjs/tools/utils/responseUtils.d.ts +2 -0
- package/cjs/tools/utils/responseUtils.js +17 -0
- package/cjs/tools/utils/responseUtils.js.map +1 -0
- package/cjs/tools/utils/stringUtils.d.ts +8 -0
- package/cjs/tools/utils/stringUtils.js +55 -0
- package/cjs/tools/utils/stringUtils.js.map +1 -0
- package/cjs/tools/utils/timeUtils.d.ts +53 -0
- package/cjs/tools/utils/timeUtils.js +101 -0
- package/cjs/tools/utils/timeUtils.js.map +1 -0
- package/cjs/tools/utils/timezone.d.ts +1 -0
- package/cjs/tools/utils/timezone.js +13 -0
- package/cjs/tools/utils/timezone.js.map +1 -0
- package/cjs/tools/utils/typeUtils.d.ts +4 -0
- package/cjs/tools/utils/typeUtils.js +16 -0
- package/cjs/tools/utils/typeUtils.js.map +1 -0
- package/cjs/tools/utils/urlPolyfill.d.ts +5 -0
- package/cjs/tools/utils/urlPolyfill.js +59 -0
- package/cjs/tools/utils/urlPolyfill.js.map +1 -0
- package/cjs/tools/valueHistory.d.ts +27 -0
- package/cjs/tools/valueHistory.js +104 -0
- package/cjs/tools/valueHistory.js.map +1 -0
- package/cjs/transport/batch.d.ts +16 -0
- package/cjs/transport/batch.js +108 -0
- package/cjs/transport/batch.js.map +1 -0
- package/cjs/transport/eventBridge.d.ts +21 -0
- package/cjs/transport/eventBridge.js +46 -0
- package/cjs/transport/eventBridge.js.map +1 -0
- package/cjs/transport/flushController.d.ts +58 -0
- package/cjs/transport/flushController.js +109 -0
- package/cjs/transport/flushController.js.map +1 -0
- package/cjs/transport/httpRequest.d.ts +51 -0
- package/cjs/transport/httpRequest.js +80 -0
- package/cjs/transport/httpRequest.js.map +1 -0
- package/cjs/transport/index.d.ts +7 -0
- package/cjs/transport/index.js +14 -0
- package/cjs/transport/index.js.map +1 -0
- package/cjs/transport/sendWithRetryStrategy.d.ts +41 -0
- package/cjs/transport/sendWithRetryStrategy.js +163 -0
- package/cjs/transport/sendWithRetryStrategy.js.map +1 -0
- package/esm/boot/displayAlreadyInitializedError.d.ts +2 -0
- package/esm/boot/displayAlreadyInitializedError.js +7 -0
- package/esm/boot/displayAlreadyInitializedError.js.map +1 -0
- package/esm/boot/init.d.ts +14 -0
- package/esm/boot/init.js +35 -0
- package/esm/boot/init.js.map +1 -0
- package/esm/browser/addEventListener.d.ts +87 -0
- package/esm/browser/addEventListener.js +51 -0
- package/esm/browser/addEventListener.js.map +1 -0
- package/esm/browser/browser.types.d.ts +51 -0
- package/esm/browser/browser.types.js +5 -0
- package/esm/browser/browser.types.js.map +1 -0
- package/esm/browser/cookie.d.ts +18 -0
- package/esm/browser/cookie.js +91 -0
- package/esm/browser/cookie.js.map +1 -0
- package/esm/browser/fetchObservable.d.ts +25 -0
- package/esm/browser/fetchObservable.js +75 -0
- package/esm/browser/fetchObservable.js.map +1 -0
- package/esm/browser/pageMayExitObservable.d.ts +14 -0
- package/esm/browser/pageMayExitObservable.js +40 -0
- package/esm/browser/pageMayExitObservable.js.map +1 -0
- package/esm/browser/runOnReadyState.d.ts +5 -0
- package/esm/browser/runOnReadyState.js +16 -0
- package/esm/browser/runOnReadyState.js.map +1 -0
- package/esm/browser/xhrObservable.d.ts +23 -0
- package/esm/browser/xhrObservable.js +80 -0
- package/esm/browser/xhrObservable.js.map +1 -0
- package/esm/domain/allowedTrackingOrigins.d.ts +4 -0
- package/esm/domain/allowedTrackingOrigins.js +21 -0
- package/esm/domain/allowedTrackingOrigins.js.map +1 -0
- package/esm/domain/bufferedData.d.ts +14 -0
- package/esm/domain/bufferedData.js +19 -0
- package/esm/domain/bufferedData.js.map +1 -0
- package/esm/domain/configuration/configuration.d.ts +303 -0
- package/esm/domain/configuration/configuration.js +146 -0
- package/esm/domain/configuration/configuration.js.map +1 -0
- package/esm/domain/configuration/endpointBuilder.d.ts +12 -0
- package/esm/domain/configuration/endpointBuilder.js +74 -0
- package/esm/domain/configuration/endpointBuilder.js.map +1 -0
- package/esm/domain/configuration/index.d.ts +5 -0
- package/esm/domain/configuration/index.js +4 -0
- package/esm/domain/configuration/index.js.map +1 -0
- package/esm/domain/configuration/transportConfiguration.d.ts +20 -0
- package/esm/domain/configuration/transportConfiguration.js +50 -0
- package/esm/domain/configuration/transportConfiguration.js.map +1 -0
- package/esm/domain/connectivity/connectivity.d.ts +14 -0
- package/esm/domain/connectivity/connectivity.js +11 -0
- package/esm/domain/connectivity/connectivity.js.map +1 -0
- package/esm/domain/connectivity/index.d.ts +1 -0
- package/esm/domain/connectivity/index.js +2 -0
- package/esm/domain/connectivity/index.js.map +1 -0
- package/esm/domain/console/consoleObservable.d.ts +21 -0
- package/esm/domain/console/consoleObservable.js +80 -0
- package/esm/domain/console/consoleObservable.js.map +1 -0
- package/esm/domain/context/contextConstants.d.ts +21 -0
- package/esm/domain/context/contextConstants.js +15 -0
- package/esm/domain/context/contextConstants.js.map +1 -0
- package/esm/domain/context/contextManager.d.ts +19 -0
- package/esm/domain/context/contextManager.js +57 -0
- package/esm/domain/context/contextManager.js.map +1 -0
- package/esm/domain/context/contextUtils.d.ts +5 -0
- package/esm/domain/context/contextUtils.js +13 -0
- package/esm/domain/context/contextUtils.js.map +1 -0
- package/esm/domain/context/defineContextMethod.d.ts +6 -0
- package/esm/domain/context/defineContextMethod.js +17 -0
- package/esm/domain/context/defineContextMethod.js.map +1 -0
- package/esm/domain/context/storeContextManager.d.ts +6 -0
- package/esm/domain/context/storeContextManager.js +35 -0
- package/esm/domain/context/storeContextManager.js.map +1 -0
- package/esm/domain/contexts/accountContext.d.ts +26 -0
- package/esm/domain/contexts/accountContext.js +29 -0
- package/esm/domain/contexts/accountContext.js.map +1 -0
- package/esm/domain/contexts/globalContext.d.ts +18 -0
- package/esm/domain/contexts/globalContext.js +17 -0
- package/esm/domain/contexts/globalContext.js.map +1 -0
- package/esm/domain/contexts/rumInternalContext.type.d.ts +14 -0
- package/esm/domain/contexts/rumInternalContext.type.js +2 -0
- package/esm/domain/contexts/rumInternalContext.type.js.map +1 -0
- package/esm/domain/contexts/userContext.d.ts +29 -0
- package/esm/domain/contexts/userContext.js +41 -0
- package/esm/domain/contexts/userContext.js.map +1 -0
- package/esm/domain/deflate/deflate.types.d.ts +40 -0
- package/esm/domain/deflate/deflate.types.js +2 -0
- package/esm/domain/deflate/deflate.types.js.map +1 -0
- package/esm/domain/deflate/index.d.ts +1 -0
- package/esm/domain/deflate/index.js +2 -0
- package/esm/domain/deflate/index.js.map +1 -0
- package/esm/domain/error/error.d.ts +23 -0
- package/esm/domain/error/error.js +65 -0
- package/esm/domain/error/error.js.map +1 -0
- package/esm/domain/error/error.types.d.ts +47 -0
- package/esm/domain/error/error.types.js +10 -0
- package/esm/domain/error/error.types.js.map +1 -0
- package/esm/domain/error/trackRuntimeError.d.ts +11 -0
- package/esm/domain/error/trackRuntimeError.js +43 -0
- package/esm/domain/error/trackRuntimeError.js.map +1 -0
- package/esm/domain/eventRateLimiter/createEventRateLimiter.d.ts +5 -0
- package/esm/domain/eventRateLimiter/createEventRateLimiter.js +36 -0
- package/esm/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -0
- package/esm/domain/extension/extensionUtils.d.ts +10 -0
- package/esm/domain/extension/extensionUtils.js +25 -0
- package/esm/domain/extension/extensionUtils.js.map +1 -0
- package/esm/domain/intakeSites.d.ts +8 -0
- package/esm/domain/intakeSites.js +8 -0
- package/esm/domain/intakeSites.js.map +1 -0
- package/esm/domain/report/browser.types.d.ts +34 -0
- package/esm/domain/report/browser.types.js +2 -0
- package/esm/domain/report/browser.types.js.map +1 -0
- package/esm/domain/report/reportObservable.d.ts +14 -0
- package/esm/domain/report/reportObservable.js +95 -0
- package/esm/domain/report/reportObservable.js.map +1 -0
- package/esm/domain/resourceUtils.d.ts +18 -0
- package/esm/domain/resourceUtils.js +17 -0
- package/esm/domain/resourceUtils.js.map +1 -0
- package/esm/domain/session/oldCookiesMigration.d.ts +11 -0
- package/esm/domain/session/oldCookiesMigration.js +36 -0
- package/esm/domain/session/oldCookiesMigration.js.map +1 -0
- package/esm/domain/session/sessionConstants.d.ts +15 -0
- package/esm/domain/session/sessionConstants.js +13 -0
- package/esm/domain/session/sessionConstants.js.map +1 -0
- package/esm/domain/session/sessionManager.d.ts +28 -0
- package/esm/domain/session/sessionManager.js +180 -0
- package/esm/domain/session/sessionManager.js.map +1 -0
- package/esm/domain/session/sessionState.d.ts +16 -0
- package/esm/domain/session/sessionState.js +66 -0
- package/esm/domain/session/sessionState.js.map +1 -0
- package/esm/domain/session/sessionStateValidation.d.ts +3 -0
- package/esm/domain/session/sessionStateValidation.js +7 -0
- package/esm/domain/session/sessionStateValidation.js.map +1 -0
- package/esm/domain/session/sessionStore.d.ts +38 -0
- package/esm/domain/session/sessionStore.js +175 -0
- package/esm/domain/session/sessionStore.js.map +1 -0
- package/esm/domain/session/sessionStoreOperations.d.ts +12 -0
- package/esm/domain/session/sessionStoreOperations.js +114 -0
- package/esm/domain/session/sessionStoreOperations.js.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +8 -0
- package/esm/domain/session/storeStrategies/sessionInCookie.js +50 -0
- package/esm/domain/session/storeStrategies/sessionInCookie.js.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +4 -0
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +37 -0
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -0
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -0
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.js +2 -0
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -0
- package/esm/domain/synthetics/syntheticsWorkerValues.d.ts +12 -0
- package/esm/domain/synthetics/syntheticsWorkerValues.js +24 -0
- package/esm/domain/synthetics/syntheticsWorkerValues.js.map +1 -0
- package/esm/domain/tags.d.ts +6 -0
- package/esm/domain/tags.js +60 -0
- package/esm/domain/tags.js.map +1 -0
- package/esm/domain/telemetry/index.d.ts +4 -0
- package/esm/domain/telemetry/index.js +3 -0
- package/esm/domain/telemetry/index.js.map +1 -0
- package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +18 -0
- package/esm/domain/telemetry/rawTelemetryEvent.types.js +6 -0
- package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +1 -0
- package/esm/domain/telemetry/telemetry.d.ts +56 -0
- package/esm/domain/telemetry/telemetry.js +235 -0
- package/esm/domain/telemetry/telemetry.js.map +1 -0
- package/esm/domain/telemetry/telemetryEvent.types.d.ts +858 -0
- package/esm/domain/telemetry/telemetryEvent.types.js +6 -0
- package/esm/domain/telemetry/telemetryEvent.types.js.map +1 -0
- package/esm/domain/trackingConsent.d.ts +13 -0
- package/esm/domain/trackingConsent.js +24 -0
- package/esm/domain/trackingConsent.js.map +1 -0
- package/esm/index.d.ts +100 -0
- package/esm/index.js +76 -0
- package/esm/index.js.map +1 -0
- package/esm/tools/abstractHooks.d.ts +24 -0
- package/esm/tools/abstractHooks.js +37 -0
- package/esm/tools/abstractHooks.js.map +1 -0
- package/esm/tools/abstractLifeCycle.d.ts +23 -0
- package/esm/tools/abstractLifeCycle.js +24 -0
- package/esm/tools/abstractLifeCycle.js.map +1 -0
- package/esm/tools/boundedBuffer.d.ts +16 -0
- package/esm/tools/boundedBuffer.js +29 -0
- package/esm/tools/boundedBuffer.js.map +1 -0
- package/esm/tools/catchUserErrors.d.ts +1 -0
- package/esm/tools/catchUserErrors.js +12 -0
- package/esm/tools/catchUserErrors.js.map +1 -0
- package/esm/tools/display.d.ts +38 -0
- package/esm/tools/display.js +41 -0
- package/esm/tools/display.js.map +1 -0
- package/esm/tools/encoder.d.ts +54 -0
- package/esm/tools/encoder.js +37 -0
- package/esm/tools/encoder.js.map +1 -0
- package/esm/tools/experimentalFeatures.d.ts +20 -0
- package/esm/tools/experimentalFeatures.js +41 -0
- package/esm/tools/experimentalFeatures.js.map +1 -0
- package/esm/tools/getZoneJsOriginalValue.d.ts +19 -0
- package/esm/tools/getZoneJsOriginalValue.js +26 -0
- package/esm/tools/getZoneJsOriginalValue.js.map +1 -0
- package/esm/tools/globalObject.d.ts +19 -0
- package/esm/tools/globalObject.js +40 -0
- package/esm/tools/globalObject.js.map +1 -0
- package/esm/tools/instrumentMethod.d.ts +75 -0
- package/esm/tools/instrumentMethod.js +114 -0
- package/esm/tools/instrumentMethod.js.map +1 -0
- package/esm/tools/matchOption.d.ts +8 -0
- package/esm/tools/matchOption.js +31 -0
- package/esm/tools/matchOption.js.map +1 -0
- package/esm/tools/mergeInto.d.ts +25 -0
- package/esm/tools/mergeInto.js +93 -0
- package/esm/tools/mergeInto.js.map +1 -0
- package/esm/tools/monitor.d.ts +9 -0
- package/esm/tools/monitor.js +52 -0
- package/esm/tools/monitor.js.map +1 -0
- package/esm/tools/observable.d.ts +30 -0
- package/esm/tools/observable.js +83 -0
- package/esm/tools/observable.js.map +1 -0
- package/esm/tools/queueMicrotask.d.ts +1 -0
- package/esm/tools/queueMicrotask.js +14 -0
- package/esm/tools/queueMicrotask.js.map +1 -0
- package/esm/tools/readBytesFromStream.d.ts +11 -0
- package/esm/tools/readBytesFromStream.js +60 -0
- package/esm/tools/readBytesFromStream.js.map +1 -0
- package/esm/tools/requestIdleCallback.d.ts +12 -0
- package/esm/tools/requestIdleCallback.js +30 -0
- package/esm/tools/requestIdleCallback.js.map +1 -0
- package/esm/tools/sendToExtension.d.ts +3 -0
- package/esm/tools/sendToExtension.js +8 -0
- package/esm/tools/sendToExtension.js.map +1 -0
- package/esm/tools/serialisation/context.d.ts +9 -0
- package/esm/tools/serialisation/context.js +2 -0
- package/esm/tools/serialisation/context.js.map +1 -0
- package/esm/tools/serialisation/jsonStringify.d.ts +13 -0
- package/esm/tools/serialisation/jsonStringify.js +44 -0
- package/esm/tools/serialisation/jsonStringify.js.map +1 -0
- package/esm/tools/serialisation/sanitize.d.ts +18 -0
- package/esm/tools/serialisation/sanitize.js +185 -0
- package/esm/tools/serialisation/sanitize.js.map +1 -0
- package/esm/tools/stackTrace/computeStackTrace.d.ts +25 -0
- package/esm/tools/stackTrace/computeStackTrace.js +183 -0
- package/esm/tools/stackTrace/computeStackTrace.js.map +1 -0
- package/esm/tools/stackTrace/handlingStack.d.ts +10 -0
- package/esm/tools/stackTrace/handlingStack.js +41 -0
- package/esm/tools/stackTrace/handlingStack.js.map +1 -0
- package/esm/tools/taskQueue.d.ts +15 -0
- package/esm/tools/taskQueue.js +50 -0
- package/esm/tools/taskQueue.js.map +1 -0
- package/esm/tools/timer.d.ts +5 -0
- package/esm/tools/timer.js +16 -0
- package/esm/tools/timer.js.map +1 -0
- package/esm/tools/utils/arrayUtils.d.ts +3 -0
- package/esm/tools/utils/arrayUtils.js +15 -0
- package/esm/tools/utils/arrayUtils.js.map +1 -0
- package/esm/tools/utils/browserDetection.d.ts +8 -0
- package/esm/tools/utils/browserDetection.js +28 -0
- package/esm/tools/utils/browserDetection.js.map +1 -0
- package/esm/tools/utils/byteUtils.d.ts +8 -0
- package/esm/tools/utils/byteUtils.js +25 -0
- package/esm/tools/utils/byteUtils.js.map +1 -0
- package/esm/tools/utils/functionUtils.d.ts +8 -0
- package/esm/tools/utils/functionUtils.js +39 -0
- package/esm/tools/utils/functionUtils.js.map +1 -0
- package/esm/tools/utils/numberUtils.d.ts +9 -0
- package/esm/tools/utils/numberUtils.js +18 -0
- package/esm/tools/utils/numberUtils.js.map +1 -0
- package/esm/tools/utils/objectUtils.d.ts +10 -0
- package/esm/tools/utils/objectUtils.js +17 -0
- package/esm/tools/utils/objectUtils.js.map +1 -0
- package/esm/tools/utils/polyfills.d.ts +7 -0
- package/esm/tools/utils/polyfills.js +18 -0
- package/esm/tools/utils/polyfills.js.map +1 -0
- package/esm/tools/utils/responseUtils.d.ts +2 -0
- package/esm/tools/utils/responseUtils.js +13 -0
- package/esm/tools/utils/responseUtils.js.map +1 -0
- package/esm/tools/utils/stringUtils.d.ts +8 -0
- package/esm/tools/utils/stringUtils.js +49 -0
- package/esm/tools/utils/stringUtils.js.map +1 -0
- package/esm/tools/utils/timeUtils.d.ts +53 -0
- package/esm/tools/utils/timeUtils.js +84 -0
- package/esm/tools/utils/timeUtils.js.map +1 -0
- package/esm/tools/utils/timezone.d.ts +1 -0
- package/esm/tools/utils/timezone.js +10 -0
- package/esm/tools/utils/timezone.js.map +1 -0
- package/esm/tools/utils/typeUtils.d.ts +4 -0
- package/esm/tools/utils/typeUtils.js +13 -0
- package/esm/tools/utils/typeUtils.js.map +1 -0
- package/esm/tools/utils/urlPolyfill.d.ts +5 -0
- package/esm/tools/utils/urlPolyfill.js +52 -0
- package/esm/tools/utils/urlPolyfill.js.map +1 -0
- package/esm/tools/valueHistory.d.ts +27 -0
- package/esm/tools/valueHistory.js +100 -0
- package/esm/tools/valueHistory.js.map +1 -0
- package/esm/transport/batch.d.ts +16 -0
- package/esm/transport/batch.js +105 -0
- package/esm/transport/batch.js.map +1 -0
- package/esm/transport/eventBridge.d.ts +21 -0
- package/esm/transport/eventBridge.js +41 -0
- package/esm/transport/eventBridge.js.map +1 -0
- package/esm/transport/flushController.d.ts +58 -0
- package/esm/transport/flushController.js +106 -0
- package/esm/transport/flushController.js.map +1 -0
- package/esm/transport/httpRequest.d.ts +51 -0
- package/esm/transport/httpRequest.js +75 -0
- package/esm/transport/httpRequest.js.map +1 -0
- package/esm/transport/index.d.ts +7 -0
- package/esm/transport/index.js +5 -0
- package/esm/transport/index.js.map +1 -0
- package/esm/transport/sendWithRetryStrategy.d.ts +41 -0
- package/esm/transport/sendWithRetryStrategy.js +158 -0
- package/esm/transport/sendWithRetryStrategy.js.map +1 -0
- package/package.json +31 -0
- package/src/boot/displayAlreadyInitializedError.ts +8 -0
- package/src/boot/init.ts +55 -0
- package/src/browser/addEventListener.ts +145 -0
- package/src/browser/browser.types.ts +82 -0
- package/src/browser/cookie.ts +107 -0
- package/src/browser/fetchObservable.ts +127 -0
- package/src/browser/pageMayExitObservable.ts +56 -0
- package/src/browser/runOnReadyState.ts +25 -0
- package/src/browser/xhrObservable.ts +130 -0
- package/src/domain/allowedTrackingOrigins.ts +30 -0
- package/src/domain/bufferedData.ts +32 -0
- package/src/domain/configuration/configuration.ts +472 -0
- package/src/domain/configuration/endpointBuilder.ts +119 -0
- package/src/domain/configuration/index.ts +11 -0
- package/src/domain/configuration/transportConfiguration.ts +78 -0
- package/src/domain/connectivity/connectivity.ts +31 -0
- package/src/domain/connectivity/index.ts +1 -0
- package/src/domain/console/consoleObservable.ts +118 -0
- 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/deflate.types.ts +57 -0
- package/src/domain/deflate/index.ts +1 -0
- package/src/domain/error/error.ts +103 -0
- package/src/domain/error/error.types.ts +64 -0
- package/src/domain/error/trackRuntimeError.ts +50 -0
- package/src/domain/eventRateLimiter/createEventRateLimiter.ts +46 -0
- package/src/domain/extension/extensionUtils.ts +28 -0
- package/src/domain/intakeSites.ts +17 -0
- package/src/domain/report/browser.types.ts +38 -0
- package/src/domain/report/reportObservable.ts +133 -0
- package/src/domain/resourceUtils.ts +21 -0
- package/src/domain/session/README.md +193 -0
- package/src/domain/session/oldCookiesMigration.ts +42 -0
- package/src/domain/session/sessionConstants.ts +19 -0
- package/src/domain/session/sessionManager.ts +244 -0
- package/src/domain/session/sessionState.ts +88 -0
- package/src/domain/session/sessionStateValidation.ts +9 -0
- package/src/domain/session/sessionStore.ts +244 -0
- package/src/domain/session/sessionStoreOperations.ts +131 -0
- package/src/domain/session/storeStrategies/sessionInCookie.ts +85 -0
- package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +44 -0
- package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +16 -0
- package/src/domain/synthetics/syntheticsWorkerValues.ts +38 -0
- package/src/domain/tags.ts +76 -0
- package/src/domain/telemetry/index.ts +22 -0
- package/src/domain/telemetry/rawTelemetryEvent.types.ts +22 -0
- package/src/domain/telemetry/telemetry.ts +345 -0
- package/src/domain/telemetry/telemetryEvent.types.ts +899 -0
- package/src/domain/trackingConsent.ts +34 -0
- package/src/index.ts +164 -0
- package/src/tools/abstractHooks.ts +72 -0
- package/src/tools/abstractLifeCycle.ts +46 -0
- package/src/tools/boundedBuffer.ts +45 -0
- package/src/tools/catchUserErrors.ts +11 -0
- package/src/tools/display.ts +56 -0
- package/src/tools/encoder.ts +103 -0
- package/src/tools/experimentalFeatures.ts +51 -0
- package/src/tools/getZoneJsOriginalValue.ts +38 -0
- package/src/tools/globalObject.ts +51 -0
- package/src/tools/instrumentMethod.ts +170 -0
- package/src/tools/matchOption.ts +31 -0
- package/src/tools/mergeInto.ts +177 -0
- package/src/tools/monitor.ts +72 -0
- package/src/tools/observable.ts +104 -0
- package/src/tools/queueMicrotask.ts +13 -0
- package/src/tools/readBytesFromStream.ts +77 -0
- package/src/tools/requestIdleCallback.ts +40 -0
- package/src/tools/sendToExtension.ts +14 -0
- package/src/tools/serialisation/context.ts +11 -0
- package/src/tools/serialisation/jsonStringify.ts +53 -0
- package/src/tools/serialisation/sanitize.ts +273 -0
- 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 +21 -0
- package/src/tools/utils/arrayUtils.ts +15 -0
- package/src/tools/utils/browserDetection.ts +39 -0
- package/src/tools/utils/byteUtils.ts +35 -0
- package/src/tools/utils/functionUtils.ts +45 -0
- package/src/tools/utils/numberUtils.ts +20 -0
- package/src/tools/utils/objectUtils.ts +19 -0
- package/src/tools/utils/polyfills.ts +23 -0
- package/src/tools/utils/responseUtils.ts +12 -0
- package/src/tools/utils/stringUtils.ts +52 -0
- package/src/tools/utils/timeUtils.ts +117 -0
- package/src/tools/utils/timezone.ts +9 -0
- package/src/tools/utils/typeUtils.ts +12 -0
- package/src/tools/utils/urlPolyfill.ts +56 -0
- package/src/tools/valueHistory.ts +151 -0
- package/src/transport/batch.ts +144 -0
- package/src/transport/eventBridge.ts +61 -0
- package/src/transport/flushController.ts +144 -0
- package/src/transport/httpRequest.ts +164 -0
- package/src/transport/index.ts +7 -0
- package/src/transport/sendWithRetryStrategy.ts +222 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sanitize = sanitize;
|
|
4
|
+
const display_1 = require("../display");
|
|
5
|
+
const byteUtils_1 = require("../utils/byteUtils");
|
|
6
|
+
const jsonStringify_1 = require("./jsonStringify");
|
|
7
|
+
// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data
|
|
8
|
+
// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...
|
|
9
|
+
const SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * byteUtils_1.ONE_KIBI_BYTE;
|
|
10
|
+
// Symbol for the root element of the JSONPath used for visited objects
|
|
11
|
+
const JSON_PATH_ROOT_ELEMENT = '$';
|
|
12
|
+
// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as "key".
|
|
13
|
+
// With the separator (:), we need to add 3 characters to the count.
|
|
14
|
+
const KEY_DECORATION_LENGTH = 3;
|
|
15
|
+
function sanitize(source, maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT) {
|
|
16
|
+
// Unbind any toJSON function we may have on [] or {} prototypes
|
|
17
|
+
const restoreObjectPrototypeToJson = (0, jsonStringify_1.detachToJsonMethod)(Object.prototype);
|
|
18
|
+
const restoreArrayPrototypeToJson = (0, jsonStringify_1.detachToJsonMethod)(Array.prototype);
|
|
19
|
+
// Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object
|
|
20
|
+
const containerQueue = [];
|
|
21
|
+
const visitedObjectsWithPath = new WeakMap();
|
|
22
|
+
const sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);
|
|
23
|
+
const serializedSanitizedData = JSON.stringify(sanitizedData);
|
|
24
|
+
let accumulatedCharacterCount = serializedSanitizedData ? serializedSanitizedData.length : 0;
|
|
25
|
+
if (accumulatedCharacterCount > maxCharacterCount) {
|
|
26
|
+
warnOverCharacterLimit(maxCharacterCount, 'discarded', source);
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {
|
|
30
|
+
const containerToProcess = containerQueue.shift();
|
|
31
|
+
let separatorLength = 0; // 0 for the first element, 1 for subsequent elements
|
|
32
|
+
// Arrays and Objects have to be handled distinctly to ensure
|
|
33
|
+
// we do not pick up non-numerical properties from Arrays
|
|
34
|
+
if (Array.isArray(containerToProcess.source)) {
|
|
35
|
+
for (let key = 0; key < containerToProcess.source.length; key++) {
|
|
36
|
+
const targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);
|
|
37
|
+
if (targetData !== undefined) {
|
|
38
|
+
accumulatedCharacterCount += JSON.stringify(targetData).length;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// When an element of an Array (targetData) is undefined, it is serialized as null:
|
|
42
|
+
// JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters
|
|
43
|
+
accumulatedCharacterCount += 4;
|
|
44
|
+
}
|
|
45
|
+
accumulatedCharacterCount += separatorLength;
|
|
46
|
+
separatorLength = 1;
|
|
47
|
+
if (accumulatedCharacterCount > maxCharacterCount) {
|
|
48
|
+
warnOverCharacterLimit(maxCharacterCount, 'truncated', source);
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
;
|
|
52
|
+
containerToProcess.target[key] = targetData;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
for (const key in containerToProcess.source) {
|
|
57
|
+
if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {
|
|
58
|
+
const targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);
|
|
59
|
+
// When a property of an object has an undefined value, it will be dropped during serialization:
|
|
60
|
+
// JSON.stringify({a:undefined}) => '{}'
|
|
61
|
+
if (targetData !== undefined) {
|
|
62
|
+
accumulatedCharacterCount +=
|
|
63
|
+
JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;
|
|
64
|
+
separatorLength = 1;
|
|
65
|
+
}
|
|
66
|
+
if (accumulatedCharacterCount > maxCharacterCount) {
|
|
67
|
+
warnOverCharacterLimit(maxCharacterCount, 'truncated', source);
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
;
|
|
71
|
+
containerToProcess.target[key] = targetData;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Rebind detached toJSON functions
|
|
77
|
+
restoreObjectPrototypeToJson();
|
|
78
|
+
restoreArrayPrototypeToJson();
|
|
79
|
+
return sanitizedData;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Internal function to factorize the process common to the
|
|
83
|
+
* initial call to sanitize, and iterations for Arrays and Objects
|
|
84
|
+
*
|
|
85
|
+
*/
|
|
86
|
+
function sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {
|
|
87
|
+
// Start by handling toJSON, as we want to sanitize its output
|
|
88
|
+
const sourceToSanitize = tryToApplyToJSON(source);
|
|
89
|
+
if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {
|
|
90
|
+
return sanitizePrimitivesAndFunctions(sourceToSanitize);
|
|
91
|
+
}
|
|
92
|
+
const sanitizedSource = sanitizeObjects(sourceToSanitize);
|
|
93
|
+
if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {
|
|
94
|
+
return sanitizedSource;
|
|
95
|
+
}
|
|
96
|
+
// Handle potential cyclic references
|
|
97
|
+
// We need to use source as sourceToSanitize could be a reference to a new object
|
|
98
|
+
// At this stage, we know the source is an object type
|
|
99
|
+
const sourceAsObject = source;
|
|
100
|
+
if (visitedObjectsWithPath.has(sourceAsObject)) {
|
|
101
|
+
return `[Reference seen at ${visitedObjectsWithPath.get(sourceAsObject)}]`;
|
|
102
|
+
}
|
|
103
|
+
// Add processed source to queue
|
|
104
|
+
const currentPath = key !== undefined ? `${parentPath}.${key}` : parentPath;
|
|
105
|
+
const target = Array.isArray(sourceToSanitize) ? [] : {};
|
|
106
|
+
visitedObjectsWithPath.set(sourceAsObject, currentPath);
|
|
107
|
+
queue.push({ source: sourceToSanitize, target, path: currentPath });
|
|
108
|
+
return target;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Handles sanitization of simple, non-object types
|
|
112
|
+
*
|
|
113
|
+
*/
|
|
114
|
+
function sanitizePrimitivesAndFunctions(value) {
|
|
115
|
+
// BigInt cannot be serialized by JSON.stringify(), convert it to a string representation
|
|
116
|
+
if (typeof value === 'bigint') {
|
|
117
|
+
return `[BigInt] ${value.toString()}`;
|
|
118
|
+
}
|
|
119
|
+
// Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted
|
|
120
|
+
// so it won't prevent stringify from serializing later
|
|
121
|
+
if (typeof value === 'function') {
|
|
122
|
+
return `[Function] ${value.name || 'unknown'}`;
|
|
123
|
+
}
|
|
124
|
+
// JSON.stringify() does not serialize symbols.
|
|
125
|
+
if (typeof value === 'symbol') {
|
|
126
|
+
return `[Symbol] ${value.description || value.toString()}`;
|
|
127
|
+
}
|
|
128
|
+
return value;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Handles sanitization of object types
|
|
132
|
+
*
|
|
133
|
+
* LIMITATIONS
|
|
134
|
+
* - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.
|
|
135
|
+
* To avoid this, a toJSON method can be defined.
|
|
136
|
+
*/
|
|
137
|
+
function sanitizeObjects(value) {
|
|
138
|
+
try {
|
|
139
|
+
if (value instanceof Event) {
|
|
140
|
+
return sanitizeEvent(value);
|
|
141
|
+
}
|
|
142
|
+
if (value instanceof RegExp) {
|
|
143
|
+
return `[RegExp] ${value.toString()}`;
|
|
144
|
+
}
|
|
145
|
+
// Handle all remaining object types in a generic way
|
|
146
|
+
const result = Object.prototype.toString.call(value);
|
|
147
|
+
const match = result.match(/\[object (.*)\]/);
|
|
148
|
+
if (match && match[1]) {
|
|
149
|
+
return `[${match[1]}]`;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch (_a) {
|
|
153
|
+
// If the previous serialization attempts failed, and we cannot convert using
|
|
154
|
+
// Object.prototype.toString, declare the value unserializable
|
|
155
|
+
}
|
|
156
|
+
return '[Unserializable]';
|
|
157
|
+
}
|
|
158
|
+
function sanitizeEvent(event) {
|
|
159
|
+
return {
|
|
160
|
+
type: event.type,
|
|
161
|
+
isTrusted: event.isTrusted,
|
|
162
|
+
currentTarget: event.currentTarget ? sanitizeObjects(event.currentTarget) : null,
|
|
163
|
+
target: event.target ? sanitizeObjects(event.target) : null,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Checks if a toJSON function exists and tries to execute it
|
|
168
|
+
*
|
|
169
|
+
*/
|
|
170
|
+
function tryToApplyToJSON(value) {
|
|
171
|
+
const object = value;
|
|
172
|
+
if (object && typeof object.toJSON === 'function') {
|
|
173
|
+
try {
|
|
174
|
+
return object.toJSON();
|
|
175
|
+
}
|
|
176
|
+
catch (_a) {
|
|
177
|
+
// If toJSON fails, we continue by trying to serialize the value manually
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return value;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Helper function to display the warning when the accumulated character count is over the limit
|
|
184
|
+
*/
|
|
185
|
+
function warnOverCharacterLimit(maxCharacterCount, changeType, source) {
|
|
186
|
+
display_1.display.warn(`The data provided has been ${changeType} as it is over the limit of ${maxCharacterCount} characters:`, source);
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../../src/tools/serialisation/sanitize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-browser stack trace computation.
|
|
3
|
+
*
|
|
4
|
+
* Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js
|
|
5
|
+
*/
|
|
6
|
+
export interface StackFrame {
|
|
7
|
+
url?: string;
|
|
8
|
+
func?: string;
|
|
9
|
+
/** The arguments passed to the function, if known. */
|
|
10
|
+
args?: string[];
|
|
11
|
+
line?: number;
|
|
12
|
+
column?: number;
|
|
13
|
+
/** An array of source code lines; the middle element corresponds to the correct line. */
|
|
14
|
+
context?: string[];
|
|
15
|
+
}
|
|
16
|
+
export interface StackTrace {
|
|
17
|
+
name?: string;
|
|
18
|
+
message?: string;
|
|
19
|
+
url?: string;
|
|
20
|
+
stack: StackFrame[];
|
|
21
|
+
incomplete?: boolean;
|
|
22
|
+
partial?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare function computeStackTrace(ex: unknown): StackTrace;
|
|
25
|
+
export declare function computeStackTraceFromOnErrorMessage(messageObj: unknown, url?: string, line?: number, column?: number): StackTrace | undefined;
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cross-browser stack trace computation.
|
|
4
|
+
*
|
|
5
|
+
* Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.computeStackTrace = computeStackTrace;
|
|
9
|
+
exports.computeStackTraceFromOnErrorMessage = computeStackTraceFromOnErrorMessage;
|
|
10
|
+
const UNKNOWN_FUNCTION = '?';
|
|
11
|
+
function computeStackTrace(ex) {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
const stack = [];
|
|
14
|
+
let stackProperty = tryToGetString(ex, 'stack');
|
|
15
|
+
const exString = String(ex);
|
|
16
|
+
if (stackProperty && stackProperty.startsWith(exString)) {
|
|
17
|
+
stackProperty = stackProperty.slice(exString.length);
|
|
18
|
+
}
|
|
19
|
+
if (stackProperty) {
|
|
20
|
+
stackProperty.split('\n').forEach((line) => {
|
|
21
|
+
const stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);
|
|
22
|
+
if (stackFrame) {
|
|
23
|
+
if (!stackFrame.func && stackFrame.line) {
|
|
24
|
+
stackFrame.func = UNKNOWN_FUNCTION;
|
|
25
|
+
}
|
|
26
|
+
stack.push(stackFrame);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
if (stack.length > 0 && isWronglyReportingCustomErrors() && ex instanceof Error) {
|
|
31
|
+
// if we are wrongly reporting custom errors
|
|
32
|
+
const constructors = [];
|
|
33
|
+
// go through each inherited constructor
|
|
34
|
+
let currentPrototype = ex;
|
|
35
|
+
while ((currentPrototype = Object.getPrototypeOf(currentPrototype)) &&
|
|
36
|
+
isNonNativeClassPrototype(currentPrototype)) {
|
|
37
|
+
const constructorName = ((_a = currentPrototype.constructor) === null || _a === void 0 ? void 0 : _a.name) || UNKNOWN_FUNCTION;
|
|
38
|
+
constructors.push(constructorName);
|
|
39
|
+
}
|
|
40
|
+
// traverse the stacktrace in reverse order because the stacktrace starts with the last inherited constructor
|
|
41
|
+
// we check constructor names to ensure we remove the correct frame (and there isn't a weird unsupported environment behavior)
|
|
42
|
+
for (let i = constructors.length - 1; i >= 0 && ((_b = stack[0]) === null || _b === void 0 ? void 0 : _b.func) === constructors[i]; i--) {
|
|
43
|
+
// if the first stack frame is the custom error constructor
|
|
44
|
+
// null stack frames may represent frames that failed to be parsed because the error class did not have a constructor
|
|
45
|
+
stack.shift(); // remove it
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
message: tryToGetString(ex, 'message'),
|
|
50
|
+
name: tryToGetString(ex, 'name'),
|
|
51
|
+
stack,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const fileUrl = '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|snippet|<anonymous>|\\w+\\.|\\/).*?)';
|
|
55
|
+
const filePosition = '(?::(\\d+))';
|
|
56
|
+
const CHROME_LINE_RE = new RegExp(`^\\s*at (.*?) ?\\(${fileUrl}${filePosition}?${filePosition}?\\)?\\s*$`, 'i');
|
|
57
|
+
const CHROME_EVAL_RE = new RegExp(`\\((\\S*)${filePosition}${filePosition}\\)`);
|
|
58
|
+
function parseChromeLine(line) {
|
|
59
|
+
const parts = CHROME_LINE_RE.exec(line);
|
|
60
|
+
if (!parts) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line
|
|
64
|
+
const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line
|
|
65
|
+
const submatch = CHROME_EVAL_RE.exec(parts[2]);
|
|
66
|
+
if (isEval && submatch) {
|
|
67
|
+
// throw out eval line/column and use top-most line/column number
|
|
68
|
+
parts[2] = submatch[1]; // url
|
|
69
|
+
parts[3] = submatch[2]; // line
|
|
70
|
+
parts[4] = submatch[3]; // column
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
args: isNative ? [parts[2]] : [],
|
|
74
|
+
column: parts[4] ? +parts[4] : undefined,
|
|
75
|
+
func: parts[1] || UNKNOWN_FUNCTION,
|
|
76
|
+
line: parts[3] ? +parts[3] : undefined,
|
|
77
|
+
url: !isNative ? parts[2] : undefined,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(`^\\s*at ?${fileUrl}${filePosition}?${filePosition}??\\s*$`, 'i');
|
|
81
|
+
function parseChromeAnonymousLine(line) {
|
|
82
|
+
const parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);
|
|
83
|
+
if (!parts) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
args: [],
|
|
88
|
+
column: parts[3] ? +parts[3] : undefined,
|
|
89
|
+
func: UNKNOWN_FUNCTION,
|
|
90
|
+
line: parts[2] ? +parts[2] : undefined,
|
|
91
|
+
url: parts[1],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const WINJS_LINE_RE = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;
|
|
95
|
+
function parseWinLine(line) {
|
|
96
|
+
const parts = WINJS_LINE_RE.exec(line);
|
|
97
|
+
if (!parts) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
args: [],
|
|
102
|
+
column: parts[4] ? +parts[4] : undefined,
|
|
103
|
+
func: parts[1] || UNKNOWN_FUNCTION,
|
|
104
|
+
line: +parts[3],
|
|
105
|
+
url: parts[2],
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const GECKO_LINE_RE = /^\s*(.*?)(?:\((.*?)\))?(?:(?:(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\[native).*?|[^@]*bundle|\[wasm code\])(?::(\d+))?(?::(\d+))?)|@)\s*$/i;
|
|
109
|
+
const GECKO_EVAL_RE = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
|
|
110
|
+
function parseGeckoLine(line) {
|
|
111
|
+
const parts = GECKO_LINE_RE.exec(line);
|
|
112
|
+
if (!parts) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;
|
|
116
|
+
const submatch = GECKO_EVAL_RE.exec(parts[3]);
|
|
117
|
+
if (isEval && submatch) {
|
|
118
|
+
// throw out eval line/column and use top-most line number
|
|
119
|
+
parts[3] = submatch[1];
|
|
120
|
+
parts[4] = submatch[2];
|
|
121
|
+
parts[5] = undefined; // no column when eval
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
args: parts[2] ? parts[2].split(',') : [],
|
|
125
|
+
column: parts[5] ? +parts[5] : undefined,
|
|
126
|
+
func: parts[1] || UNKNOWN_FUNCTION,
|
|
127
|
+
line: parts[4] ? +parts[4] : undefined,
|
|
128
|
+
url: parts[3],
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function tryToGetString(candidate, property) {
|
|
132
|
+
if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
const value = candidate[property];
|
|
136
|
+
return typeof value === 'string' ? value : undefined;
|
|
137
|
+
}
|
|
138
|
+
function computeStackTraceFromOnErrorMessage(messageObj, url, line, column) {
|
|
139
|
+
if (url === undefined) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const { name, message } = tryToParseMessage(messageObj);
|
|
143
|
+
return {
|
|
144
|
+
name,
|
|
145
|
+
message,
|
|
146
|
+
stack: [{ url, column, line }],
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types
|
|
150
|
+
const ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\s\S]*)$/;
|
|
151
|
+
function tryToParseMessage(messageObj) {
|
|
152
|
+
let name;
|
|
153
|
+
let message;
|
|
154
|
+
if ({}.toString.call(messageObj) === '[object String]') {
|
|
155
|
+
;
|
|
156
|
+
[, name, message] = ERROR_TYPES_RE.exec(messageObj);
|
|
157
|
+
}
|
|
158
|
+
return { name, message };
|
|
159
|
+
}
|
|
160
|
+
// Custom error stacktrace fix
|
|
161
|
+
// Some browsers (safari/firefox) add the error constructor as a frame in the stacktrace
|
|
162
|
+
// In order to normalize the stacktrace, we need to remove it
|
|
163
|
+
function isNonNativeClassPrototype(prototype) {
|
|
164
|
+
return String(prototype.constructor).startsWith('class ');
|
|
165
|
+
}
|
|
166
|
+
let isWronglyReportingCustomErrorsCache;
|
|
167
|
+
function isWronglyReportingCustomErrors() {
|
|
168
|
+
if (isWronglyReportingCustomErrorsCache !== undefined) {
|
|
169
|
+
return isWronglyReportingCustomErrorsCache;
|
|
170
|
+
}
|
|
171
|
+
/* eslint-disable no-restricted-syntax */
|
|
172
|
+
class DatadogTestCustomError extends Error {
|
|
173
|
+
constructor() {
|
|
174
|
+
super();
|
|
175
|
+
this.name = 'Error'; // set name to Error so that no browser would default to the constructor name
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const [customError, nativeError] = [DatadogTestCustomError, Error].map((errConstructor) => new errConstructor()); // so that both errors should exactly have the same stacktrace
|
|
179
|
+
isWronglyReportingCustomErrorsCache =
|
|
180
|
+
// If customError is not a class, it means that this was built with ES5 as target, converting the class to a normal object.
|
|
181
|
+
// Thus, error constructors will be reported on all browsers, which is the expected behavior.
|
|
182
|
+
isNonNativeClassPrototype(Object.getPrototypeOf(customError)) &&
|
|
183
|
+
// If the browser is correctly reporting the stacktrace, the normal error stacktrace should be the same as the custom error stacktrace
|
|
184
|
+
nativeError.stack !== customError.stack;
|
|
185
|
+
return isWronglyReportingCustomErrorsCache;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=computeStackTrace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeStackTrace.js","sourceRoot":"","sources":["../../../src/tools/stackTrace/computeStackTrace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { StackTrace } from './computeStackTrace';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a stacktrace without SDK internal frames.
|
|
4
|
+
* Constraints:
|
|
5
|
+
* - Has to be called at the utmost position of the call stack.
|
|
6
|
+
* - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createHandlingStack(type: 'console error' | 'action' | 'error' | 'instrumented method' | 'log' | 'react error'): string;
|
|
9
|
+
export declare function toStackTraceString(stack: StackTrace): string;
|
|
10
|
+
export declare function formatErrorMessage(stack: StackTrace): string;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createHandlingStack = createHandlingStack;
|
|
4
|
+
exports.toStackTraceString = toStackTraceString;
|
|
5
|
+
exports.formatErrorMessage = formatErrorMessage;
|
|
6
|
+
const monitor_1 = require("../monitor");
|
|
7
|
+
const computeStackTrace_1 = require("./computeStackTrace");
|
|
8
|
+
/**
|
|
9
|
+
* Creates a stacktrace without SDK internal frames.
|
|
10
|
+
* Constraints:
|
|
11
|
+
* - Has to be called at the utmost position of the call stack.
|
|
12
|
+
* - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.
|
|
13
|
+
*/
|
|
14
|
+
function createHandlingStack(type) {
|
|
15
|
+
/**
|
|
16
|
+
* Skip the two internal frames:
|
|
17
|
+
* - SDK API (console.error, ...)
|
|
18
|
+
* - this function
|
|
19
|
+
* in order to keep only the user calls
|
|
20
|
+
*/
|
|
21
|
+
const internalFramesToSkip = 2;
|
|
22
|
+
const error = new Error(type);
|
|
23
|
+
error.name = 'HandlingStack';
|
|
24
|
+
let formattedStack;
|
|
25
|
+
(0, monitor_1.callMonitored)(() => {
|
|
26
|
+
const stackTrace = (0, computeStackTrace_1.computeStackTrace)(error);
|
|
27
|
+
stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);
|
|
28
|
+
formattedStack = toStackTraceString(stackTrace);
|
|
29
|
+
});
|
|
30
|
+
return formattedStack;
|
|
31
|
+
}
|
|
32
|
+
function toStackTraceString(stack) {
|
|
33
|
+
let result = formatErrorMessage(stack);
|
|
34
|
+
stack.stack.forEach((frame) => {
|
|
35
|
+
const func = frame.func === '?' ? '<anonymous>' : frame.func;
|
|
36
|
+
const args = frame.args && frame.args.length > 0 ? `(${frame.args.join(', ')})` : '';
|
|
37
|
+
const line = frame.line ? `:${frame.line}` : '';
|
|
38
|
+
const column = frame.line && frame.column ? `:${frame.column}` : '';
|
|
39
|
+
result += `\n at ${func}${args} @ ${frame.url}${line}${column}`;
|
|
40
|
+
});
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
function formatErrorMessage(stack) {
|
|
44
|
+
return `${stack.name || 'Error'}: ${stack.message}`;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=handlingStack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlingStack.js","sourceRoot":"","sources":["../../../src/tools/stackTrace/handlingStack.ts"],"names":[],"mappings":";;AAUA,kDAqBC;AAED,gDAUC;AAED,gDAEC;AA/CD,wCAA0C;AAE1C,2DAAuD;AAEvD;;;;;GAKG;AACH,SAAgB,mBAAmB,CACjC,IAA0F;IAE1F;;;;;OAKG;IACH,MAAM,oBAAoB,GAAG,CAAC,CAAA;IAC9B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7B,KAAK,CAAC,IAAI,GAAG,eAAe,CAAA;IAC5B,IAAI,cAAsB,CAAA;IAE1B,IAAA,uBAAa,EAAC,GAAG,EAAE;QACjB,MAAM,UAAU,GAAG,IAAA,qCAAiB,EAAC,KAAK,CAAC,CAAA;QAC3C,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAC/D,cAAc,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,OAAO,cAAe,CAAA;AACxB,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAiB;IAClD,IAAI,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACtC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACpF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACnE,MAAM,IAAI,UAAU,IAAK,GAAG,IAAI,MAAM,KAAK,CAAC,GAAI,GAAG,IAAI,GAAG,MAAM,EAAE,CAAA;IACpE,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAiB;IAClD,OAAO,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,OAAQ,EAAE,CAAA;AACtD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maximum amount of time allocated to running tasks when a timeout (`IDLE_CALLBACK_TIMEOUT`) is
|
|
3
|
+
* reached. We should not run tasks for too long as it will hurt performance, but we should still
|
|
4
|
+
* run some tasks to avoid postponing them forever.
|
|
5
|
+
*
|
|
6
|
+
* Rational: Running tasks for 30ms every second (IDLE_CALLBACK_TIMEOUT) should be acceptable.
|
|
7
|
+
*/
|
|
8
|
+
export declare const MAX_EXECUTION_TIME_ON_TIMEOUT = 30;
|
|
9
|
+
export interface TaskQueue {
|
|
10
|
+
push(task: Task): void;
|
|
11
|
+
stop(): void;
|
|
12
|
+
}
|
|
13
|
+
type Task = () => void;
|
|
14
|
+
export declare function createTaskQueue(): TaskQueue;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MAX_EXECUTION_TIME_ON_TIMEOUT = void 0;
|
|
4
|
+
exports.createTaskQueue = createTaskQueue;
|
|
5
|
+
const timeUtils_1 = require("./utils/timeUtils");
|
|
6
|
+
const requestIdleCallback_1 = require("./requestIdleCallback");
|
|
7
|
+
/**
|
|
8
|
+
* Maximum delay before starting to execute tasks in the queue. We don't want to wait too long
|
|
9
|
+
* before running tasks, as it might hurt reliability (ex: if the user navigates away, we might lose
|
|
10
|
+
* the opportunity to send some data). We also don't want to run tasks too often, as it might hurt
|
|
11
|
+
* performance.
|
|
12
|
+
*/
|
|
13
|
+
const IDLE_CALLBACK_TIMEOUT = timeUtils_1.ONE_SECOND;
|
|
14
|
+
/**
|
|
15
|
+
* Maximum amount of time allocated to running tasks when a timeout (`IDLE_CALLBACK_TIMEOUT`) is
|
|
16
|
+
* reached. We should not run tasks for too long as it will hurt performance, but we should still
|
|
17
|
+
* run some tasks to avoid postponing them forever.
|
|
18
|
+
*
|
|
19
|
+
* Rational: Running tasks for 30ms every second (IDLE_CALLBACK_TIMEOUT) should be acceptable.
|
|
20
|
+
*/
|
|
21
|
+
exports.MAX_EXECUTION_TIME_ON_TIMEOUT = 30;
|
|
22
|
+
function createTaskQueue() {
|
|
23
|
+
const pendingTasks = [];
|
|
24
|
+
function run(deadline) {
|
|
25
|
+
let executionTimeRemaining;
|
|
26
|
+
if (deadline.didTimeout) {
|
|
27
|
+
const start = performance.now();
|
|
28
|
+
executionTimeRemaining = () => exports.MAX_EXECUTION_TIME_ON_TIMEOUT - (performance.now() - start);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
executionTimeRemaining = deadline.timeRemaining.bind(deadline);
|
|
32
|
+
}
|
|
33
|
+
while (executionTimeRemaining() > 0 && pendingTasks.length) {
|
|
34
|
+
pendingTasks.shift()();
|
|
35
|
+
}
|
|
36
|
+
if (pendingTasks.length) {
|
|
37
|
+
scheduleNextRun();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function scheduleNextRun() {
|
|
41
|
+
(0, requestIdleCallback_1.requestIdleCallback)(run, { timeout: IDLE_CALLBACK_TIMEOUT });
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
push(task) {
|
|
45
|
+
if (pendingTasks.push(task) === 1) {
|
|
46
|
+
scheduleNextRun();
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
stop() {
|
|
50
|
+
pendingTasks.length = 0;
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=taskQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskQueue.js","sourceRoot":"","sources":["../../src/tools/taskQueue.ts"],"names":[],"mappings":";;;AA2BA,0CAmCC;AA9DD,iDAA8C;AAC9C,+DAA2D;AAE3D;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,sBAAU,CAAA;AAExC;;;;;;GAMG;AACU,QAAA,6BAA6B,GAAG,EAAE,CAAA;AAS/C,SAAgB,eAAe;IAC7B,MAAM,YAAY,GAAW,EAAE,CAAA;IAE/B,SAAS,GAAG,CAAC,QAAsB;QACjC,IAAI,sBAAoC,CAAA;QACxC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;YAC/B,sBAAsB,GAAG,GAAG,EAAE,CAAC,qCAA6B,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;QAC5F,CAAC;aAAM,CAAC;YACN,sBAAsB,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAChE,CAAC;QAED,OAAO,sBAAsB,EAAE,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YAC3D,YAAY,CAAC,KAAK,EAAG,EAAE,CAAA;QACzB,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,eAAe,EAAE,CAAA;QACnB,CAAC;IACH,CAAC;IAED,SAAS,eAAe;QACtB,IAAA,yCAAmB,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI;YACP,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,eAAe,EAAE,CAAA;YACnB,CAAC;QACH,CAAC;QACD,IAAI;YACF,YAAY,CAAC,MAAM,GAAG,CAAC,CAAA;QACzB,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type TimeoutId = ReturnType<typeof globalThis.setTimeout>;
|
|
2
|
+
export declare function setTimeout(callback: () => void, delay?: number): TimeoutId;
|
|
3
|
+
export declare function clearTimeout(timeoutId: TimeoutId | undefined): void;
|
|
4
|
+
export declare function setInterval(callback: () => void, delay?: number): TimeoutId;
|
|
5
|
+
export declare function clearInterval(timeoutId: TimeoutId | undefined): void;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setTimeout = setTimeout;
|
|
4
|
+
exports.clearTimeout = clearTimeout;
|
|
5
|
+
exports.setInterval = setInterval;
|
|
6
|
+
exports.clearInterval = clearInterval;
|
|
7
|
+
const getZoneJsOriginalValue_1 = require("./getZoneJsOriginalValue");
|
|
8
|
+
const monitor_1 = require("./monitor");
|
|
9
|
+
const globalObject_1 = require("./globalObject");
|
|
10
|
+
function setTimeout(callback, delay) {
|
|
11
|
+
return (0, getZoneJsOriginalValue_1.getZoneJsOriginalValue)((0, globalObject_1.getGlobalObject)(), 'setTimeout')((0, monitor_1.monitor)(callback), delay);
|
|
12
|
+
}
|
|
13
|
+
function clearTimeout(timeoutId) {
|
|
14
|
+
(0, getZoneJsOriginalValue_1.getZoneJsOriginalValue)((0, globalObject_1.getGlobalObject)(), 'clearTimeout')(timeoutId);
|
|
15
|
+
}
|
|
16
|
+
function setInterval(callback, delay) {
|
|
17
|
+
return (0, getZoneJsOriginalValue_1.getZoneJsOriginalValue)((0, globalObject_1.getGlobalObject)(), 'setInterval')((0, monitor_1.monitor)(callback), delay);
|
|
18
|
+
}
|
|
19
|
+
function clearInterval(timeoutId) {
|
|
20
|
+
(0, getZoneJsOriginalValue_1.getZoneJsOriginalValue)((0, globalObject_1.getGlobalObject)(), 'clearInterval')(timeoutId);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=timer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timer.js","sourceRoot":"","sources":["../../src/tools/timer.ts"],"names":[],"mappings":";;AAMA,gCAEC;AAED,oCAEC;AAED,kCAEC;AAED,sCAEC;AApBD,qEAAiE;AACjE,uCAAmC;AACnC,iDAAgD;AAIhD,SAAgB,UAAU,CAAC,QAAoB,EAAE,KAAc;IAC7D,OAAO,IAAA,+CAAsB,EAAC,IAAA,8BAAe,GAAE,EAAE,YAAY,CAAC,CAAC,IAAA,iBAAO,EAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAA;AAC1F,CAAC;AAED,SAAgB,YAAY,CAAC,SAAgC;IAC3D,IAAA,+CAAsB,EAAC,IAAA,8BAAe,GAAE,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,CAAA;AACtE,CAAC;AAED,SAAgB,WAAW,CAAC,QAAoB,EAAE,KAAc;IAC9D,OAAO,IAAA,+CAAsB,EAAC,IAAA,8BAAe,GAAE,EAAE,aAAa,CAAC,CAAC,IAAA,iBAAO,EAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAA;AAC3F,CAAC;AAED,SAAgB,aAAa,CAAC,SAAgC;IAC5D,IAAA,+CAAsB,EAAC,IAAA,8BAAe,GAAE,EAAE,eAAe,CAAC,CAAC,SAAS,CAAC,CAAA;AACvE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.removeDuplicates = removeDuplicates;
|
|
4
|
+
exports.removeItem = removeItem;
|
|
5
|
+
exports.isNonEmptyArray = isNonEmptyArray;
|
|
6
|
+
function removeDuplicates(array) {
|
|
7
|
+
const set = new Set();
|
|
8
|
+
array.forEach((item) => set.add(item));
|
|
9
|
+
return Array.from(set);
|
|
10
|
+
}
|
|
11
|
+
function removeItem(array, item) {
|
|
12
|
+
const index = array.indexOf(item);
|
|
13
|
+
if (index >= 0) {
|
|
14
|
+
array.splice(index, 1);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function isNonEmptyArray(value) {
|
|
18
|
+
return Array.isArray(value) && value.length > 0;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=arrayUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrayUtils.js","sourceRoot":"","sources":["../../../src/tools/utils/arrayUtils.ts"],"names":[],"mappings":";;AAAA,4CAIC;AAED,gCAKC;AACD,0CAEC;AAdD,SAAgB,gBAAgB,CAAI,KAAU;IAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAK,CAAA;IACxB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC;AAED,SAAgB,UAAU,CAAI,KAAU,EAAE,IAAO;IAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACxB,CAAC;AACH,CAAC;AACD,SAAgB,eAAe,CAAI,KAAc;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;AACjD,CAAC"}
|