@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,30 @@
|
|
|
1
|
+
export interface Subscription {
|
|
2
|
+
unsubscribe: () => void;
|
|
3
|
+
}
|
|
4
|
+
type Observer<T> = (data: T) => void;
|
|
5
|
+
export declare class Observable<T> {
|
|
6
|
+
private onFirstSubscribe?;
|
|
7
|
+
protected observers: Array<Observer<T>>;
|
|
8
|
+
private onLastUnsubscribe?;
|
|
9
|
+
constructor(onFirstSubscribe?: ((observable: Observable<T>) => (() => void) | void) | undefined);
|
|
10
|
+
subscribe(observer: Observer<T>): Subscription;
|
|
11
|
+
notify(data: T): void;
|
|
12
|
+
protected addObserver(observer: Observer<T>): void;
|
|
13
|
+
protected removeObserver(observer: Observer<T>): void;
|
|
14
|
+
}
|
|
15
|
+
export declare function mergeObservables<T>(...observables: Array<Observable<T>>): Observable<T>;
|
|
16
|
+
export declare class BufferedObservable<T> extends Observable<T> {
|
|
17
|
+
private maxBufferSize;
|
|
18
|
+
private buffer;
|
|
19
|
+
constructor(maxBufferSize: number);
|
|
20
|
+
notify(data: T): void;
|
|
21
|
+
subscribe(observer: Observer<T>): Subscription;
|
|
22
|
+
/**
|
|
23
|
+
* Drop buffered data and don't buffer future data. This is to avoid leaking memory when it's not
|
|
24
|
+
* needed anymore. This can be seen as a performance optimization, and things will work probably
|
|
25
|
+
* even if this method isn't called, but still useful to clarify our intent and lowering our
|
|
26
|
+
* memory impact.
|
|
27
|
+
*/
|
|
28
|
+
unbuffer(): void;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { queueMicrotask } from './queueMicrotask';
|
|
2
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
3
|
+
export class Observable {
|
|
4
|
+
constructor(onFirstSubscribe) {
|
|
5
|
+
this.onFirstSubscribe = onFirstSubscribe;
|
|
6
|
+
this.observers = [];
|
|
7
|
+
}
|
|
8
|
+
subscribe(observer) {
|
|
9
|
+
this.addObserver(observer);
|
|
10
|
+
return {
|
|
11
|
+
unsubscribe: () => this.removeObserver(observer),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
notify(data) {
|
|
15
|
+
this.observers.forEach((observer) => observer(data));
|
|
16
|
+
}
|
|
17
|
+
addObserver(observer) {
|
|
18
|
+
this.observers.push(observer);
|
|
19
|
+
if (this.observers.length === 1 && this.onFirstSubscribe) {
|
|
20
|
+
this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
removeObserver(observer) {
|
|
24
|
+
this.observers = this.observers.filter((other) => observer !== other);
|
|
25
|
+
if (!this.observers.length && this.onLastUnsubscribe) {
|
|
26
|
+
this.onLastUnsubscribe();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function mergeObservables(...observables) {
|
|
31
|
+
return new Observable((globalObservable) => {
|
|
32
|
+
const subscriptions = observables.map((observable) => observable.subscribe((data) => globalObservable.notify(data)));
|
|
33
|
+
return () => subscriptions.forEach((subscription) => subscription.unsubscribe());
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
37
|
+
export class BufferedObservable extends Observable {
|
|
38
|
+
constructor(maxBufferSize) {
|
|
39
|
+
super();
|
|
40
|
+
this.maxBufferSize = maxBufferSize;
|
|
41
|
+
this.buffer = [];
|
|
42
|
+
}
|
|
43
|
+
notify(data) {
|
|
44
|
+
this.buffer.push(data);
|
|
45
|
+
if (this.buffer.length > this.maxBufferSize) {
|
|
46
|
+
this.buffer.shift();
|
|
47
|
+
}
|
|
48
|
+
super.notify(data);
|
|
49
|
+
}
|
|
50
|
+
subscribe(observer) {
|
|
51
|
+
let closed = false;
|
|
52
|
+
const subscription = {
|
|
53
|
+
unsubscribe: () => {
|
|
54
|
+
closed = true;
|
|
55
|
+
this.removeObserver(observer);
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
queueMicrotask(() => {
|
|
59
|
+
for (const data of this.buffer) {
|
|
60
|
+
if (closed) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
observer(data);
|
|
64
|
+
}
|
|
65
|
+
if (!closed) {
|
|
66
|
+
this.addObserver(observer);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return subscription;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Drop buffered data and don't buffer future data. This is to avoid leaking memory when it's not
|
|
73
|
+
* needed anymore. This can be seen as a performance optimization, and things will work probably
|
|
74
|
+
* even if this method isn't called, but still useful to clarify our intent and lowering our
|
|
75
|
+
* memory impact.
|
|
76
|
+
*/
|
|
77
|
+
unbuffer() {
|
|
78
|
+
queueMicrotask(() => {
|
|
79
|
+
this.maxBufferSize = this.buffer.length = 0;
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=observable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observable.js","sourceRoot":"","sources":["../../src/tools/observable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function queueMicrotask(callback: () => void): void;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { monitor } from './monitor';
|
|
2
|
+
import { globalObject } from './globalObject';
|
|
3
|
+
export function queueMicrotask(callback) {
|
|
4
|
+
var _a;
|
|
5
|
+
const nativeImplementation = (_a = globalObject.queueMicrotask) === null || _a === void 0 ? void 0 : _a.bind(globalObject);
|
|
6
|
+
if (typeof nativeImplementation === 'function') {
|
|
7
|
+
nativeImplementation(monitor(callback));
|
|
8
|
+
}
|
|
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
|
+
}
|
|
14
|
+
//# sourceMappingURL=queueMicrotask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueMicrotask.js","sourceRoot":"","sources":["../../src/tools/queueMicrotask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,MAAM,UAAU,cAAc,CAAC,QAAoB;;IACjD,MAAM,oBAAoB,GAAG,MAAA,YAAY,CAAC,cAAc,0CAAE,IAAI,CAAC,YAAY,CAAC,CAAA;IAE5E,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE,CAAC;QAC/C,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzC,CAAC;SAAM,CAAC;QACN,sHAAsH;QACtH,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC3C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface Options {
|
|
2
|
+
bytesLimit: number;
|
|
3
|
+
collectStreamBody?: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of
|
|
7
|
+
* the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit
|
|
8
|
+
* has been exceeded if more bytes were available.
|
|
9
|
+
*/
|
|
10
|
+
export declare function readBytesFromStream(stream: ReadableStream<Uint8Array>, callback: (error?: Error, bytes?: Uint8Array, limitExceeded?: boolean) => void, options: Options): void;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { monitor } from './monitor';
|
|
2
|
+
import { noop } from './utils/functionUtils';
|
|
3
|
+
/**
|
|
4
|
+
* Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of
|
|
5
|
+
* the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit
|
|
6
|
+
* has been exceeded if more bytes were available.
|
|
7
|
+
*/
|
|
8
|
+
export function readBytesFromStream(stream, callback, options) {
|
|
9
|
+
const reader = stream.getReader();
|
|
10
|
+
const chunks = [];
|
|
11
|
+
let readBytesCount = 0;
|
|
12
|
+
readMore();
|
|
13
|
+
function readMore() {
|
|
14
|
+
reader.read().then(monitor((result) => {
|
|
15
|
+
if (result.done) {
|
|
16
|
+
onDone();
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (options.collectStreamBody) {
|
|
20
|
+
chunks.push(result.value);
|
|
21
|
+
}
|
|
22
|
+
readBytesCount += result.value.length;
|
|
23
|
+
if (readBytesCount > options.bytesLimit) {
|
|
24
|
+
onDone();
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
readMore();
|
|
28
|
+
}
|
|
29
|
+
}), monitor((error) => callback(error)));
|
|
30
|
+
}
|
|
31
|
+
function onDone() {
|
|
32
|
+
reader.cancel().catch(
|
|
33
|
+
// we don't care if cancel fails, but we still need to catch the error to avoid reporting it
|
|
34
|
+
// as an unhandled rejection
|
|
35
|
+
noop);
|
|
36
|
+
let bytes;
|
|
37
|
+
let limitExceeded;
|
|
38
|
+
if (options.collectStreamBody) {
|
|
39
|
+
let completeBuffer;
|
|
40
|
+
if (chunks.length === 1) {
|
|
41
|
+
// optimization: if the response is small enough to fit in a single buffer (provided by the browser), just
|
|
42
|
+
// use it directly.
|
|
43
|
+
completeBuffer = chunks[0];
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// else, we need to copy buffers into a larger buffer to concatenate them.
|
|
47
|
+
completeBuffer = new Uint8Array(readBytesCount);
|
|
48
|
+
let offset = 0;
|
|
49
|
+
chunks.forEach((chunk) => {
|
|
50
|
+
completeBuffer.set(chunk, offset);
|
|
51
|
+
offset += chunk.length;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
bytes = completeBuffer.slice(0, options.bytesLimit);
|
|
55
|
+
limitExceeded = completeBuffer.length > options.bytesLimit;
|
|
56
|
+
}
|
|
57
|
+
callback(undefined, bytes, limitExceeded);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=readBytesFromStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readBytesFromStream.js","sourceRoot":"","sources":["../../src/tools/readBytesFromStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAM5C;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAkC,EAClC,QAA8E,EAC9E,OAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;IACjC,MAAM,MAAM,GAAiB,EAAE,CAAA;IAC/B,IAAI,cAAc,GAAG,CAAC,CAAA;IAEtB,QAAQ,EAAE,CAAA;IAEV,SAAS,QAAQ;QACf,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAChB,OAAO,CAAC,CAAC,MAA4C,EAAE,EAAE;YACvD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,EAAE,CAAA;gBACR,OAAM;YACR,CAAC;YAED,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC;YACD,cAAc,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAA;YAErC,IAAI,cAAc,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;gBACxC,MAAM,EAAE,CAAA;YACV,CAAC;iBAAM,CAAC;gBACN,QAAQ,EAAE,CAAA;YACZ,CAAC;QACH,CAAC,CAAC,EACF,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACpC,CAAA;IACH,CAAC;IAED,SAAS,MAAM;QACb,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK;QACnB,4FAA4F;QAC5F,4BAA4B;QAC5B,IAAI,CACL,CAAA;QAED,IAAI,KAA6B,CAAA;QACjC,IAAI,aAAkC,CAAA;QACtC,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,IAAI,cAA0B,CAAA;YAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,0GAA0G;gBAC1G,mBAAmB;gBACnB,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YAC5B,CAAC;iBAAM,CAAC;gBACN,0EAA0E;gBAC1E,cAAc,GAAG,IAAI,UAAU,CAAC,cAAc,CAAC,CAAA;gBAC/C,IAAI,MAAM,GAAG,CAAC,CAAA;gBACd,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACvB,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;oBACjC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;gBACxB,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;YACnD,aAAa,GAAG,cAAc,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,CAAA;QAC5D,CAAC;QAED,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;IAC3C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface IdleDeadline {
|
|
2
|
+
readonly didTimeout: boolean;
|
|
3
|
+
timeRemaining(): DOMHighResTimeStamp;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* 'requestIdleCallback' with a shim.
|
|
7
|
+
*/
|
|
8
|
+
export declare function requestIdleCallback(callback: (deadline: IdleDeadline) => void, opts?: {
|
|
9
|
+
timeout?: number;
|
|
10
|
+
}): () => void;
|
|
11
|
+
export declare const MAX_TASK_TIME = 50;
|
|
12
|
+
export declare function requestIdleCallbackShim(callback: (deadline: IdleDeadline) => void): () => void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { setTimeout, clearTimeout } from './timer';
|
|
2
|
+
import { monitor } from './monitor';
|
|
3
|
+
import { dateNow } from './utils/timeUtils';
|
|
4
|
+
/**
|
|
5
|
+
* 'requestIdleCallback' with a shim.
|
|
6
|
+
*/
|
|
7
|
+
export function requestIdleCallback(callback, opts) {
|
|
8
|
+
// Note: check both 'requestIdleCallback' and 'cancelIdleCallback' existence because some polyfills only implement 'requestIdleCallback'.
|
|
9
|
+
if (window.requestIdleCallback && window.cancelIdleCallback) {
|
|
10
|
+
const id = window.requestIdleCallback(monitor(callback), opts);
|
|
11
|
+
return () => window.cancelIdleCallback(id);
|
|
12
|
+
}
|
|
13
|
+
return requestIdleCallbackShim(callback);
|
|
14
|
+
}
|
|
15
|
+
export const MAX_TASK_TIME = 50;
|
|
16
|
+
/*
|
|
17
|
+
* Shim from https://developer.chrome.com/blog/using-requestidlecallback#checking_for_requestidlecallback
|
|
18
|
+
* Note: there is no simple way to support the "timeout" option, so we ignore it.
|
|
19
|
+
*/
|
|
20
|
+
export function requestIdleCallbackShim(callback) {
|
|
21
|
+
const start = dateNow();
|
|
22
|
+
const timeoutId = setTimeout(() => {
|
|
23
|
+
callback({
|
|
24
|
+
didTimeout: false,
|
|
25
|
+
timeRemaining: () => Math.max(0, MAX_TASK_TIME - (dateNow() - start)),
|
|
26
|
+
});
|
|
27
|
+
}, 0);
|
|
28
|
+
return () => clearTimeout(timeoutId);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=requestIdleCallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestIdleCallback.js","sourceRoot":"","sources":["../../src/tools/requestIdleCallback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAU3C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAA0C,EAAE,IAA2B;IACzG,yIAAyI;IACzI,IAAI,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC5D,MAAM,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;QAC9D,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;IAC5C,CAAC;IACD,OAAO,uBAAuB,CAAC,QAAQ,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAA;AAE/B;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAA0C;IAChF,MAAM,KAAK,GAAG,OAAO,EAAE,CAAA;IACvB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;QAChC,QAAQ,CAAC;YACP,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC;SACtE,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,CAAC,CAAA;IACL,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;AACtC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendToExtension.js","sourceRoot":"","sources":["../../src/tools/sendToExtension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAQ7C,MAAM,UAAU,eAAe,CAAC,IAA0B,EAAE,OAAgB;IAC1E,MAAM,QAAQ,GAAI,YAA8B,CAAC,+BAA+B,CAAA;IAChF,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/tools/serialisation/context.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that
|
|
3
|
+
* because some sites badly override toJSON on certain objects. Removing all toJSON methods from
|
|
4
|
+
* nested values would be too costly, so we just detach them from the root value, and native classes
|
|
5
|
+
* used to build JSON values (Array and Object).
|
|
6
|
+
*
|
|
7
|
+
* Note: this still assumes that JSON.stringify is correct.
|
|
8
|
+
*/
|
|
9
|
+
export declare function jsonStringify(value: unknown, replacer?: Array<string | number>, space?: string | number): string | undefined;
|
|
10
|
+
export interface ObjectWithToJsonMethod {
|
|
11
|
+
toJSON?: () => unknown;
|
|
12
|
+
}
|
|
13
|
+
export declare function detachToJsonMethod(value: object): () => void;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { noop } from '../utils/functionUtils';
|
|
2
|
+
/**
|
|
3
|
+
* Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that
|
|
4
|
+
* because some sites badly override toJSON on certain objects. Removing all toJSON methods from
|
|
5
|
+
* nested values would be too costly, so we just detach them from the root value, and native classes
|
|
6
|
+
* used to build JSON values (Array and Object).
|
|
7
|
+
*
|
|
8
|
+
* Note: this still assumes that JSON.stringify is correct.
|
|
9
|
+
*/
|
|
10
|
+
export function jsonStringify(value, replacer, space) {
|
|
11
|
+
if (typeof value !== 'object' || value === null) {
|
|
12
|
+
return JSON.stringify(value);
|
|
13
|
+
}
|
|
14
|
+
// Note: The order matter here. We need to detach toJSON methods on parent classes before their
|
|
15
|
+
// subclasses.
|
|
16
|
+
const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);
|
|
17
|
+
const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);
|
|
18
|
+
const restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));
|
|
19
|
+
const restoreValueToJson = detachToJsonMethod(value);
|
|
20
|
+
try {
|
|
21
|
+
return JSON.stringify(value, replacer, space);
|
|
22
|
+
}
|
|
23
|
+
catch (_a) {
|
|
24
|
+
return '<error: unable to serialize object>';
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
restoreObjectPrototypeToJson();
|
|
28
|
+
restoreArrayPrototypeToJson();
|
|
29
|
+
restoreValuePrototypeToJson();
|
|
30
|
+
restoreValueToJson();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function detachToJsonMethod(value) {
|
|
34
|
+
const object = value;
|
|
35
|
+
const objectToJson = object.toJSON;
|
|
36
|
+
if (objectToJson) {
|
|
37
|
+
delete object.toJSON;
|
|
38
|
+
return () => {
|
|
39
|
+
object.toJSON = objectToJson;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return noop;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=jsonStringify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonStringify.js","sourceRoot":"","sources":["../../../src/tools/serialisation/jsonStringify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAE7C;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAc,EACd,QAAiC,EACjC,KAAuB;IAEvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,+FAA+F;IAC/F,cAAc;IACd,MAAM,4BAA4B,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACzE,MAAM,2BAA2B,GAAG,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACvE,MAAM,2BAA2B,GAAG,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;IACpF,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IAEpD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;IAC/C,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,qCAAqC,CAAA;IAC9C,CAAC;YAAS,CAAC;QACT,4BAA4B,EAAE,CAAA;QAC9B,2BAA2B,EAAE,CAAA;QAC7B,2BAA2B,EAAE,CAAA;QAC7B,kBAAkB,EAAE,CAAA;IACtB,CAAC;AACH,CAAC;AAMD,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,MAAM,GAAG,KAA+B,CAAA;IAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAA;IAClC,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,MAAM,CAAA;QACpB,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,MAAM,GAAG,YAAY,CAAA;QAC9B,CAAC,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Context, ContextValue } from './context';
|
|
2
|
+
/**
|
|
3
|
+
* Ensures user-provided data is 'safe' for the SDK
|
|
4
|
+
* - Deep clones data
|
|
5
|
+
* - Removes cyclic references
|
|
6
|
+
* - Transforms unserializable types to a string representation
|
|
7
|
+
*
|
|
8
|
+
* LIMITATIONS:
|
|
9
|
+
* - Size is in characters, not byte count (may differ according to character encoding)
|
|
10
|
+
* - Size does not take into account indentation that can be applied to JSON.stringify
|
|
11
|
+
* - Non-numerical properties of Arrays are ignored. Same behavior as JSON.stringify
|
|
12
|
+
*
|
|
13
|
+
* @param source - User-provided data meant to be serialized using JSON.stringify
|
|
14
|
+
* @param maxCharacterCount - Maximum number of characters allowed in serialized form
|
|
15
|
+
*/
|
|
16
|
+
export declare function sanitize(source: string, maxCharacterCount?: number): string | undefined;
|
|
17
|
+
export declare function sanitize(source: Context, maxCharacterCount?: number): Context;
|
|
18
|
+
export declare function sanitize(source: unknown, maxCharacterCount?: number): ContextValue;
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { display } from '../display';
|
|
2
|
+
import { ONE_KIBI_BYTE } from '../utils/byteUtils';
|
|
3
|
+
import { detachToJsonMethod } from './jsonStringify';
|
|
4
|
+
// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data
|
|
5
|
+
// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...
|
|
6
|
+
const SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE;
|
|
7
|
+
// Symbol for the root element of the JSONPath used for visited objects
|
|
8
|
+
const JSON_PATH_ROOT_ELEMENT = '$';
|
|
9
|
+
// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as "key".
|
|
10
|
+
// With the separator (:), we need to add 3 characters to the count.
|
|
11
|
+
const KEY_DECORATION_LENGTH = 3;
|
|
12
|
+
export function sanitize(source, maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT) {
|
|
13
|
+
// Unbind any toJSON function we may have on [] or {} prototypes
|
|
14
|
+
const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);
|
|
15
|
+
const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);
|
|
16
|
+
// Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object
|
|
17
|
+
const containerQueue = [];
|
|
18
|
+
const visitedObjectsWithPath = new WeakMap();
|
|
19
|
+
const sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);
|
|
20
|
+
const serializedSanitizedData = JSON.stringify(sanitizedData);
|
|
21
|
+
let accumulatedCharacterCount = serializedSanitizedData ? serializedSanitizedData.length : 0;
|
|
22
|
+
if (accumulatedCharacterCount > maxCharacterCount) {
|
|
23
|
+
warnOverCharacterLimit(maxCharacterCount, 'discarded', source);
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {
|
|
27
|
+
const containerToProcess = containerQueue.shift();
|
|
28
|
+
let separatorLength = 0; // 0 for the first element, 1 for subsequent elements
|
|
29
|
+
// Arrays and Objects have to be handled distinctly to ensure
|
|
30
|
+
// we do not pick up non-numerical properties from Arrays
|
|
31
|
+
if (Array.isArray(containerToProcess.source)) {
|
|
32
|
+
for (let key = 0; key < containerToProcess.source.length; key++) {
|
|
33
|
+
const targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);
|
|
34
|
+
if (targetData !== undefined) {
|
|
35
|
+
accumulatedCharacterCount += JSON.stringify(targetData).length;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// When an element of an Array (targetData) is undefined, it is serialized as null:
|
|
39
|
+
// JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters
|
|
40
|
+
accumulatedCharacterCount += 4;
|
|
41
|
+
}
|
|
42
|
+
accumulatedCharacterCount += separatorLength;
|
|
43
|
+
separatorLength = 1;
|
|
44
|
+
if (accumulatedCharacterCount > maxCharacterCount) {
|
|
45
|
+
warnOverCharacterLimit(maxCharacterCount, 'truncated', source);
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
;
|
|
49
|
+
containerToProcess.target[key] = targetData;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
for (const key in containerToProcess.source) {
|
|
54
|
+
if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {
|
|
55
|
+
const targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);
|
|
56
|
+
// When a property of an object has an undefined value, it will be dropped during serialization:
|
|
57
|
+
// JSON.stringify({a:undefined}) => '{}'
|
|
58
|
+
if (targetData !== undefined) {
|
|
59
|
+
accumulatedCharacterCount +=
|
|
60
|
+
JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;
|
|
61
|
+
separatorLength = 1;
|
|
62
|
+
}
|
|
63
|
+
if (accumulatedCharacterCount > maxCharacterCount) {
|
|
64
|
+
warnOverCharacterLimit(maxCharacterCount, 'truncated', source);
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
;
|
|
68
|
+
containerToProcess.target[key] = targetData;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Rebind detached toJSON functions
|
|
74
|
+
restoreObjectPrototypeToJson();
|
|
75
|
+
restoreArrayPrototypeToJson();
|
|
76
|
+
return sanitizedData;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Internal function to factorize the process common to the
|
|
80
|
+
* initial call to sanitize, and iterations for Arrays and Objects
|
|
81
|
+
*
|
|
82
|
+
*/
|
|
83
|
+
function sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {
|
|
84
|
+
// Start by handling toJSON, as we want to sanitize its output
|
|
85
|
+
const sourceToSanitize = tryToApplyToJSON(source);
|
|
86
|
+
if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {
|
|
87
|
+
return sanitizePrimitivesAndFunctions(sourceToSanitize);
|
|
88
|
+
}
|
|
89
|
+
const sanitizedSource = sanitizeObjects(sourceToSanitize);
|
|
90
|
+
if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {
|
|
91
|
+
return sanitizedSource;
|
|
92
|
+
}
|
|
93
|
+
// Handle potential cyclic references
|
|
94
|
+
// We need to use source as sourceToSanitize could be a reference to a new object
|
|
95
|
+
// At this stage, we know the source is an object type
|
|
96
|
+
const sourceAsObject = source;
|
|
97
|
+
if (visitedObjectsWithPath.has(sourceAsObject)) {
|
|
98
|
+
return `[Reference seen at ${visitedObjectsWithPath.get(sourceAsObject)}]`;
|
|
99
|
+
}
|
|
100
|
+
// Add processed source to queue
|
|
101
|
+
const currentPath = key !== undefined ? `${parentPath}.${key}` : parentPath;
|
|
102
|
+
const target = Array.isArray(sourceToSanitize) ? [] : {};
|
|
103
|
+
visitedObjectsWithPath.set(sourceAsObject, currentPath);
|
|
104
|
+
queue.push({ source: sourceToSanitize, target, path: currentPath });
|
|
105
|
+
return target;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Handles sanitization of simple, non-object types
|
|
109
|
+
*
|
|
110
|
+
*/
|
|
111
|
+
function sanitizePrimitivesAndFunctions(value) {
|
|
112
|
+
// BigInt cannot be serialized by JSON.stringify(), convert it to a string representation
|
|
113
|
+
if (typeof value === 'bigint') {
|
|
114
|
+
return `[BigInt] ${value.toString()}`;
|
|
115
|
+
}
|
|
116
|
+
// Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted
|
|
117
|
+
// so it won't prevent stringify from serializing later
|
|
118
|
+
if (typeof value === 'function') {
|
|
119
|
+
return `[Function] ${value.name || 'unknown'}`;
|
|
120
|
+
}
|
|
121
|
+
// JSON.stringify() does not serialize symbols.
|
|
122
|
+
if (typeof value === 'symbol') {
|
|
123
|
+
return `[Symbol] ${value.description || value.toString()}`;
|
|
124
|
+
}
|
|
125
|
+
return value;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Handles sanitization of object types
|
|
129
|
+
*
|
|
130
|
+
* LIMITATIONS
|
|
131
|
+
* - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.
|
|
132
|
+
* To avoid this, a toJSON method can be defined.
|
|
133
|
+
*/
|
|
134
|
+
function sanitizeObjects(value) {
|
|
135
|
+
try {
|
|
136
|
+
if (value instanceof Event) {
|
|
137
|
+
return sanitizeEvent(value);
|
|
138
|
+
}
|
|
139
|
+
if (value instanceof RegExp) {
|
|
140
|
+
return `[RegExp] ${value.toString()}`;
|
|
141
|
+
}
|
|
142
|
+
// Handle all remaining object types in a generic way
|
|
143
|
+
const result = Object.prototype.toString.call(value);
|
|
144
|
+
const match = result.match(/\[object (.*)\]/);
|
|
145
|
+
if (match && match[1]) {
|
|
146
|
+
return `[${match[1]}]`;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (_a) {
|
|
150
|
+
// If the previous serialization attempts failed, and we cannot convert using
|
|
151
|
+
// Object.prototype.toString, declare the value unserializable
|
|
152
|
+
}
|
|
153
|
+
return '[Unserializable]';
|
|
154
|
+
}
|
|
155
|
+
function sanitizeEvent(event) {
|
|
156
|
+
return {
|
|
157
|
+
type: event.type,
|
|
158
|
+
isTrusted: event.isTrusted,
|
|
159
|
+
currentTarget: event.currentTarget ? sanitizeObjects(event.currentTarget) : null,
|
|
160
|
+
target: event.target ? sanitizeObjects(event.target) : null,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Checks if a toJSON function exists and tries to execute it
|
|
165
|
+
*
|
|
166
|
+
*/
|
|
167
|
+
function tryToApplyToJSON(value) {
|
|
168
|
+
const object = value;
|
|
169
|
+
if (object && typeof object.toJSON === 'function') {
|
|
170
|
+
try {
|
|
171
|
+
return object.toJSON();
|
|
172
|
+
}
|
|
173
|
+
catch (_a) {
|
|
174
|
+
// If toJSON fails, we continue by trying to serialize the value manually
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return value;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Helper function to display the warning when the accumulated character count is over the limit
|
|
181
|
+
*/
|
|
182
|
+
function warnOverCharacterLimit(maxCharacterCount, changeType, source) {
|
|
183
|
+
display.warn(`The data provided has been ${changeType} as it is over the limit of ${maxCharacterCount} characters:`, source);
|
|
184
|
+
}
|
|
185
|
+
//# 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;
|