@kubesense/kubesense-browser-core 1.0.0
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/LICENSE +201 -0
- 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 +13 -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 +26 -0
- package/cjs/browser/cookie.js +112 -0
- package/cjs/browser/cookie.js.map +1 -0
- package/cjs/browser/fetchObservable.d.ts +38 -0
- package/cjs/browser/fetchObservable.js +103 -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 +24 -0
- package/cjs/browser/xhrObservable.js +86 -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 +284 -0
- package/cjs/domain/configuration/configuration.js +135 -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 +66 -0
- package/cjs/domain/configuration/endpointBuilder.js.map +1 -0
- package/cjs/domain/configuration/index.d.ts +6 -0
- package/cjs/domain/configuration/index.js +31 -0
- package/cjs/domain/configuration/index.js.map +1 -0
- package/cjs/domain/configuration/transportConfiguration.d.ts +21 -0
- package/cjs/domain/configuration/transportConfiguration.js +58 -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 +59 -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 +31 -0
- package/cjs/domain/contexts/userContext.js +120 -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 +81 -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 +41 -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 +4 -0
- package/cjs/domain/intakeSites.js +7 -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 +201 -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 +70 -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 +186 -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 +12 -0
- package/cjs/domain/session/storeStrategies/sessionInCookie.js +104 -0
- package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +1 -0
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +6 -0
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +42 -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 +66 -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 +245 -0
- package/cjs/domain/telemetry/telemetry.js.map +1 -0
- package/cjs/domain/telemetry/telemetryEvent.types.d.ts +866 -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/domain/userAgentData/index.d.ts +1 -0
- package/cjs/domain/userAgentData/index.js +18 -0
- package/cjs/domain/userAgentData/index.js.map +1 -0
- package/cjs/domain/userAgentData/userAgentData.d.ts +22 -0
- package/cjs/domain/userAgentData/userAgentData.js +109 -0
- package/cjs/domain/userAgentData/userAgentData.js.map +1 -0
- package/cjs/index.d.ts +101 -0
- package/cjs/index.js +199 -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 +21 -0
- package/cjs/tools/experimentalFeatures.js +50 -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 +61 -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 +10 -0
- package/cjs/tools/readBytesFromStream.js +28 -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 +34 -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 +8 -0
- package/cjs/tools/utils/numberUtils.js +23 -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 +23 -0
- package/cjs/tools/utils/stringUtils.js +91 -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 +110 -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 +65 -0
- package/cjs/transport/flushController.js +123 -0
- package/cjs/transport/flushController.js.map +1 -0
- package/cjs/transport/httpRequest.d.ts +57 -0
- package/cjs/transport/httpRequest.js +107 -0
- package/cjs/transport/httpRequest.js.map +1 -0
- package/cjs/transport/index.d.ts +7 -0
- package/cjs/transport/index.js +15 -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 +13 -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 +26 -0
- package/esm/browser/cookie.js +101 -0
- package/esm/browser/cookie.js.map +1 -0
- package/esm/browser/fetchObservable.d.ts +38 -0
- package/esm/browser/fetchObservable.js +99 -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 +24 -0
- package/esm/browser/xhrObservable.js +83 -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 +284 -0
- package/esm/domain/configuration/configuration.js +129 -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 +62 -0
- package/esm/domain/configuration/endpointBuilder.js.map +1 -0
- package/esm/domain/configuration/index.d.ts +6 -0
- package/esm/domain/configuration/index.js +5 -0
- package/esm/domain/configuration/index.js.map +1 -0
- package/esm/domain/configuration/transportConfiguration.d.ts +21 -0
- package/esm/domain/configuration/transportConfiguration.js +54 -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 +56 -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 +31 -0
- package/esm/domain/contexts/userContext.js +116 -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 +72 -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 +38 -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 +4 -0
- package/esm/domain/intakeSites.js +4 -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 +196 -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 +60 -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 +180 -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 +12 -0
- package/esm/domain/session/storeStrategies/sessionInCookie.js +98 -0
- package/esm/domain/session/storeStrategies/sessionInCookie.js.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +6 -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 +59 -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 +232 -0
- package/esm/domain/telemetry/telemetry.js.map +1 -0
- package/esm/domain/telemetry/telemetryEvent.types.d.ts +866 -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/domain/userAgentData/index.d.ts +1 -0
- package/esm/domain/userAgentData/index.js +2 -0
- package/esm/domain/userAgentData/index.js.map +1 -0
- package/esm/domain/userAgentData/userAgentData.d.ts +22 -0
- package/esm/domain/userAgentData/userAgentData.js +105 -0
- package/esm/domain/userAgentData/userAgentData.js.map +1 -0
- package/esm/index.d.ts +101 -0
- package/esm/index.js +77 -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 +21 -0
- package/esm/tools/experimentalFeatures.js +42 -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 +51 -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 +10 -0
- package/esm/tools/readBytesFromStream.js +25 -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 +29 -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 +8 -0
- package/esm/tools/utils/numberUtils.js +17 -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 +23 -0
- package/esm/tools/utils/stringUtils.js +84 -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 +106 -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 +65 -0
- package/esm/transport/flushController.js +119 -0
- package/esm/transport/flushController.js.map +1 -0
- package/esm/transport/httpRequest.d.ts +57 -0
- package/esm/transport/httpRequest.js +101 -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 +28 -0
- package/src/boot/displayAlreadyInitializedError.ts +8 -0
- package/src/boot/init.ts +54 -0
- package/src/browser/addEventListener.ts +145 -0
- package/src/browser/browser.types.ts +84 -0
- package/src/browser/cookie.ts +122 -0
- package/src/browser/fetchObservable.ts +167 -0
- package/src/browser/pageMayExitObservable.ts +56 -0
- package/src/browser/runOnReadyState.ts +25 -0
- package/src/browser/xhrObservable.ts +134 -0
- package/src/domain/allowedTrackingOrigins.ts +29 -0
- package/src/domain/bufferedData.ts +32 -0
- package/src/domain/configuration/configuration.ts +409 -0
- package/src/domain/configuration/endpointBuilder.ts +105 -0
- package/src/domain/configuration/index.ts +12 -0
- package/src/domain/configuration/transportConfiguration.ts +86 -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 +81 -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 +148 -0
- package/src/domain/deflate/deflate.types.ts +57 -0
- package/src/domain/deflate/index.ts +1 -0
- package/src/domain/error/error.ts +127 -0
- package/src/domain/error/error.types.ts +64 -0
- package/src/domain/error/trackRuntimeError.ts +50 -0
- package/src/domain/eventRateLimiter/createEventRateLimiter.ts +49 -0
- package/src/domain/extension/extensionUtils.ts +28 -0
- package/src/domain/intakeSites.ts +6 -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 +262 -0
- package/src/domain/session/sessionState.ts +83 -0
- package/src/domain/session/sessionStateValidation.ts +9 -0
- package/src/domain/session/sessionStore.ts +250 -0
- package/src/domain/session/sessionStoreOperations.ts +131 -0
- package/src/domain/session/storeStrategies/sessionInCookie.ts +146 -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 +75 -0
- package/src/domain/telemetry/index.ts +22 -0
- package/src/domain/telemetry/rawTelemetryEvent.types.ts +22 -0
- package/src/domain/telemetry/telemetry.ts +344 -0
- package/src/domain/telemetry/telemetryEvent.types.ts +907 -0
- package/src/domain/trackingConsent.ts +34 -0
- package/src/domain/userAgentData/index.ts +1 -0
- package/src/domain/userAgentData/userAgentData.ts +163 -0
- package/src/index.ts +169 -0
- package/src/tools/abstractHooks.ts +72 -0
- package/src/tools/abstractLifeCycle.ts +46 -0
- package/src/tools/boundedBuffer.ts +44 -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 +52 -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 +71 -0
- package/src/tools/observable.ts +103 -0
- package/src/tools/queueMicrotask.ts +13 -0
- package/src/tools/readBytesFromStream.ts +37 -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 +251 -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 +16 -0
- package/src/tools/utils/browserDetection.ts +39 -0
- package/src/tools/utils/byteUtils.ts +40 -0
- package/src/tools/utils/functionUtils.ts +45 -0
- package/src/tools/utils/numberUtils.ts +19 -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 +86 -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 +55 -0
- package/src/tools/valueHistory.ts +151 -0
- package/src/transport/batch.ts +144 -0
- package/src/transport/eventBridge.ts +60 -0
- package/src/transport/flushController.ts +150 -0
- package/src/transport/httpRequest.ts +191 -0
- package/src/transport/index.ts +7 -0
- package/src/transport/sendWithRetryStrategy.ts +222 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { Uint8ArrayBuffer } from './utils/byteUtils'
|
|
2
|
+
import { computeBytesCount } from './utils/byteUtils'
|
|
3
|
+
|
|
4
|
+
export interface Encoder<Output extends string | Uint8ArrayBuffer = string | Uint8ArrayBuffer> {
|
|
5
|
+
/**
|
|
6
|
+
* Whether this encoder might call the provided callbacks asynchronously
|
|
7
|
+
*/
|
|
8
|
+
isAsync: boolean
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Whether some data has been written since the last finish() or finishSync() call
|
|
12
|
+
*/
|
|
13
|
+
isEmpty: boolean
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Write a string to be encoded.
|
|
17
|
+
*
|
|
18
|
+
* This operation can be synchronous or asynchronous depending on the encoder implementation.
|
|
19
|
+
*
|
|
20
|
+
* If specified, the callback will be invoked when the operation finishes, unless the operation is
|
|
21
|
+
* asynchronous and finish() or finishSync() is called in the meantime.
|
|
22
|
+
*/
|
|
23
|
+
write(data: string, callback?: (additionalEncodedBytesCount: number) => void): void
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Waits for pending data to be encoded and resets the encoder state.
|
|
27
|
+
*
|
|
28
|
+
* This operation can be synchronous or asynchronous depending on the encoder implementation.
|
|
29
|
+
*
|
|
30
|
+
* The callback will be invoked when the operation finishes, unless the operation is asynchronous
|
|
31
|
+
* and another call to finish() or finishSync() occurs in the meantime.
|
|
32
|
+
*/
|
|
33
|
+
finish(callback: (result: EncoderResult<Output>) => void): void
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Resets the encoder state then returns the encoded data and any potential pending data directly,
|
|
37
|
+
* discarding all pending write operations and finish() callbacks.
|
|
38
|
+
*/
|
|
39
|
+
finishSync(): EncoderResult<Output> & { pendingData: string }
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Returns a rough estimation of the bytes count if the data was encoded.
|
|
43
|
+
*/
|
|
44
|
+
estimateEncodedBytesCount(data: string): number
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface EncoderResult<Output extends string | Uint8ArrayBuffer = string | Uint8ArrayBuffer> {
|
|
48
|
+
output: Output
|
|
49
|
+
outputBytesCount: number
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* An encoding type supported by HTTP Content-Encoding, if applicable.
|
|
53
|
+
* See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding#directives
|
|
54
|
+
*/
|
|
55
|
+
encoding?: 'deflate'
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Total bytes count of the input strings encoded to UTF-8.
|
|
59
|
+
*/
|
|
60
|
+
rawBytesCount: number
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function createIdentityEncoder(): Encoder<string> {
|
|
64
|
+
let output = ''
|
|
65
|
+
let outputBytesCount = 0
|
|
66
|
+
|
|
67
|
+
return {
|
|
68
|
+
isAsync: false,
|
|
69
|
+
|
|
70
|
+
get isEmpty() {
|
|
71
|
+
return !output
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
write(data, callback) {
|
|
75
|
+
const additionalEncodedBytesCount = computeBytesCount(data)
|
|
76
|
+
outputBytesCount += additionalEncodedBytesCount
|
|
77
|
+
output += data
|
|
78
|
+
if (callback) {
|
|
79
|
+
callback(additionalEncodedBytesCount)
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
finish(callback) {
|
|
84
|
+
callback(this.finishSync())
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
finishSync() {
|
|
88
|
+
const result = {
|
|
89
|
+
output,
|
|
90
|
+
outputBytesCount,
|
|
91
|
+
rawBytesCount: outputBytesCount,
|
|
92
|
+
pendingData: '',
|
|
93
|
+
}
|
|
94
|
+
output = ''
|
|
95
|
+
outputBytesCount = 0
|
|
96
|
+
return result
|
|
97
|
+
},
|
|
98
|
+
|
|
99
|
+
estimateEncodedBytesCount(data) {
|
|
100
|
+
return data.length
|
|
101
|
+
},
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LIMITATION:
|
|
3
|
+
* For NPM setup, this feature flag singleton is shared between RUM and Logs product.
|
|
4
|
+
* This means that an experimental flag set on the RUM product will be set on the Logs product.
|
|
5
|
+
* So keep in mind that in certain configurations, your experimental feature flag may affect other products.
|
|
6
|
+
*
|
|
7
|
+
* FORMAT:
|
|
8
|
+
* All feature flags should be snake_cased
|
|
9
|
+
*/
|
|
10
|
+
// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary
|
|
11
|
+
// string is an expected feature flag
|
|
12
|
+
|
|
13
|
+
import { objectHasValue } from './utils/objectUtils'
|
|
14
|
+
|
|
15
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
16
|
+
export enum ExperimentalFeature {
|
|
17
|
+
TRACK_INTAKE_REQUESTS = 'track_intake_requests',
|
|
18
|
+
USE_TREE_WALKER_FOR_ACTION_NAME = 'use_tree_walker_for_action_name',
|
|
19
|
+
FEATURE_OPERATION_VITAL = 'feature_operation_vital',
|
|
20
|
+
SHORT_SESSION_INVESTIGATION = 'short_session_investigation',
|
|
21
|
+
AVOID_FETCH_KEEPALIVE = 'avoid_fetch_keepalive',
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const enabledExperimentalFeatures: Set<ExperimentalFeature> = new Set()
|
|
25
|
+
|
|
26
|
+
export function initFeatureFlags(enableExperimentalFeatures: string[] | undefined) {
|
|
27
|
+
if (Array.isArray(enableExperimentalFeatures)) {
|
|
28
|
+
addExperimentalFeatures(
|
|
29
|
+
enableExperimentalFeatures.filter((flag): flag is ExperimentalFeature =>
|
|
30
|
+
objectHasValue(ExperimentalFeature, flag)
|
|
31
|
+
)
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function addExperimentalFeatures(enabledFeatures: ExperimentalFeature[]): void {
|
|
37
|
+
enabledFeatures.forEach((flag) => {
|
|
38
|
+
enabledExperimentalFeatures.add(flag)
|
|
39
|
+
})
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function isExperimentalFeatureEnabled(featureName: ExperimentalFeature): boolean {
|
|
43
|
+
return enabledExperimentalFeatures.has(featureName)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function resetExperimentalFeatures(): void {
|
|
47
|
+
enabledExperimentalFeatures.clear()
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function getExperimentalFeatures(): Set<ExperimentalFeature> {
|
|
51
|
+
return enabledExperimentalFeatures
|
|
52
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { getGlobalObject } from './globalObject'
|
|
2
|
+
|
|
3
|
+
export interface BrowserWindowWithZoneJs extends Window {
|
|
4
|
+
Zone?: {
|
|
5
|
+
// All Zone.js versions expose the __symbol__ method, but we observed that some website have a
|
|
6
|
+
// 'Zone' global variable unrelated to Zone.js, so let's consider this method optional
|
|
7
|
+
// nonetheless.
|
|
8
|
+
__symbol__?: (name: string) => string
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Gets the original value for a DOM API that was potentially patched by Zone.js.
|
|
14
|
+
*
|
|
15
|
+
* Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original
|
|
16
|
+
* value of the patched functions/constructors/methods in a hidden property prefixed by
|
|
17
|
+
* __zone_symbol__.
|
|
18
|
+
*
|
|
19
|
+
* In multiple occasions, we observed that Zone.js is the culprit of important issues leading to
|
|
20
|
+
* browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to
|
|
21
|
+
* use the original DOM API instead of the one patched by Zone.js.
|
|
22
|
+
*
|
|
23
|
+
* [1]: https://github.com/angular/angular/tree/main/packages/zone.js
|
|
24
|
+
*/
|
|
25
|
+
export function getZoneJsOriginalValue<Target, Name extends keyof Target & string>(
|
|
26
|
+
target: Target,
|
|
27
|
+
name: Name
|
|
28
|
+
): Target[Name] {
|
|
29
|
+
const browserWindow = getGlobalObject<BrowserWindowWithZoneJs>()
|
|
30
|
+
let original: Target[Name] | undefined
|
|
31
|
+
if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {
|
|
32
|
+
original = (target as any)[browserWindow.Zone.__symbol__(name)]
|
|
33
|
+
}
|
|
34
|
+
if (!original) {
|
|
35
|
+
original = target[name]
|
|
36
|
+
}
|
|
37
|
+
return original
|
|
38
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inspired by https://mathiasbynens.be/notes/globalthis
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// Extend/Create the WorkerGlobalScope interface to avoid issues when used in a non-browser tsconfig environment
|
|
6
|
+
interface WorkerGlobalScope {
|
|
7
|
+
empty: never
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// Utility type to enforce that exactly one of the two types is used
|
|
11
|
+
type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never }
|
|
12
|
+
type XOR<T, U> = T | U extends object ? (Without<T, U> & U) | (Without<U, T> & T) : T | U
|
|
13
|
+
|
|
14
|
+
export type GlobalObject = XOR<Window, WorkerGlobalScope>
|
|
15
|
+
|
|
16
|
+
export function getGlobalObject<T = typeof globalThis>(): T {
|
|
17
|
+
if (typeof globalThis === 'object') {
|
|
18
|
+
return globalThis as unknown as T
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(Object.prototype, '_kubesense_temp_', {
|
|
21
|
+
get() {
|
|
22
|
+
return this as object
|
|
23
|
+
},
|
|
24
|
+
configurable: true,
|
|
25
|
+
})
|
|
26
|
+
// @ts-ignore _kubesense_temp is defined using defineProperty
|
|
27
|
+
let globalObject: unknown = _kubesense_temp_
|
|
28
|
+
// @ts-ignore _kubesense_temp is defined using defineProperty
|
|
29
|
+
delete Object.prototype._kubesense_temp_
|
|
30
|
+
if (typeof globalObject !== 'object') {
|
|
31
|
+
// on safari _kubesense_temp_ is available on window but not globally
|
|
32
|
+
// fallback on other browser globals check
|
|
33
|
+
if (typeof self === 'object') {
|
|
34
|
+
globalObject = self
|
|
35
|
+
} else if (typeof window === 'object') {
|
|
36
|
+
globalObject = window
|
|
37
|
+
} else {
|
|
38
|
+
globalObject = {}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return globalObject as T
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Cached reference to the global object so it can be imported and re-used without
|
|
46
|
+
* re-evaluating the heavyweight fallback logic in `getGlobalObject()`.
|
|
47
|
+
*/
|
|
48
|
+
// eslint-disable-next-line local-rules/disallow-side-effects
|
|
49
|
+
export const globalObject = getGlobalObject<GlobalObject>()
|
|
50
|
+
|
|
51
|
+
export const isWorkerEnvironment = 'WorkerGlobalScope' in globalObject
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { setTimeout } from './timer'
|
|
2
|
+
import { callMonitored } from './monitor'
|
|
3
|
+
import { noop } from './utils/functionUtils'
|
|
4
|
+
import { createHandlingStack } from './stackTrace/handlingStack'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Object passed to the callback of an instrumented method call. See `instrumentMethod` for more
|
|
8
|
+
* info.
|
|
9
|
+
*/
|
|
10
|
+
export interface InstrumentedMethodCall<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET> {
|
|
11
|
+
/**
|
|
12
|
+
* The target object on which the method was called.
|
|
13
|
+
*/
|
|
14
|
+
target: TARGET
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The parameters with which the method was called.
|
|
18
|
+
*
|
|
19
|
+
* Note: if needed, parameters can be mutated by the instrumentation
|
|
20
|
+
*/
|
|
21
|
+
parameters: Parameters<TARGET[METHOD]>
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Registers a callback that will be called after the original method is called, with the method
|
|
25
|
+
* result passed as argument.
|
|
26
|
+
*/
|
|
27
|
+
onPostCall: (callback: PostCallCallback<TARGET, METHOD>) => void
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The stack trace of the method call.
|
|
31
|
+
*/
|
|
32
|
+
handlingStack?: string
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
type PostCallCallback<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET> = (
|
|
36
|
+
result: ReturnType<TARGET[METHOD]>
|
|
37
|
+
) => void
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Instruments a method on a object, calling the given callback before the original method is
|
|
41
|
+
* invoked. The callback receives an object with information about the method call.
|
|
42
|
+
*
|
|
43
|
+
* This function makes sure that we are "good citizens" regarding third party instrumentations: when
|
|
44
|
+
* removing the instrumentation, the original method is usually restored, but if a third party
|
|
45
|
+
* instrumentation was set after ours, we keep it in place and just replace our instrumentation with
|
|
46
|
+
* a noop.
|
|
47
|
+
*
|
|
48
|
+
* Note: it is generally better to instrument methods that are "owned" by the object instead of ones
|
|
49
|
+
* that are inherited from the prototype chain. Example:
|
|
50
|
+
* * do: `instrumentMethod(Array.prototype, 'push', ...)`
|
|
51
|
+
* * don't: `instrumentMethod([], 'push', ...)`
|
|
52
|
+
*
|
|
53
|
+
* This method is also used to set event handler properties (ex: window.onerror = ...), as it has
|
|
54
|
+
* the same requirements as instrumenting a method:
|
|
55
|
+
* * if the event handler is already set by a third party, we need to call it and not just blindly
|
|
56
|
+
* override it.
|
|
57
|
+
* * if the event handler is set by a third party after us, we need to keep it in place when
|
|
58
|
+
* removing ours.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
*
|
|
62
|
+
* instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {
|
|
63
|
+
* console.log('Before calling fetch on', target, 'with parameters', parameters)
|
|
64
|
+
*
|
|
65
|
+
* onPostCall((result) => {
|
|
66
|
+
* console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)
|
|
67
|
+
* })
|
|
68
|
+
* })
|
|
69
|
+
*/
|
|
70
|
+
export function instrumentMethod<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET>(
|
|
71
|
+
targetPrototype: TARGET,
|
|
72
|
+
method: METHOD,
|
|
73
|
+
onPreCall: (this: null, callInfos: InstrumentedMethodCall<TARGET, METHOD>) => void,
|
|
74
|
+
{ computeHandlingStack }: { computeHandlingStack?: boolean } = {}
|
|
75
|
+
) {
|
|
76
|
+
let original = targetPrototype[method]
|
|
77
|
+
|
|
78
|
+
if (typeof original !== 'function') {
|
|
79
|
+
if (method in targetPrototype && typeof method === 'string' && method.startsWith('on')) {
|
|
80
|
+
original = noop as TARGET[METHOD]
|
|
81
|
+
} else {
|
|
82
|
+
return { stop: noop }
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
let stopped = false
|
|
87
|
+
|
|
88
|
+
const instrumentation = function (this: TARGET): ReturnType<TARGET[METHOD]> {
|
|
89
|
+
if (stopped) {
|
|
90
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
|
|
91
|
+
return original.apply(this, arguments as unknown as Parameters<TARGET[METHOD]>)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const parameters = Array.from(arguments) as Parameters<TARGET[METHOD]>
|
|
95
|
+
|
|
96
|
+
let postCallCallback: PostCallCallback<TARGET, METHOD> | undefined
|
|
97
|
+
|
|
98
|
+
callMonitored(onPreCall, null, [
|
|
99
|
+
{
|
|
100
|
+
target: this,
|
|
101
|
+
parameters,
|
|
102
|
+
onPostCall: (callback) => {
|
|
103
|
+
postCallCallback = callback
|
|
104
|
+
},
|
|
105
|
+
handlingStack: computeHandlingStack ? createHandlingStack('instrumented method') : undefined,
|
|
106
|
+
},
|
|
107
|
+
])
|
|
108
|
+
|
|
109
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
110
|
+
const result = original.apply(this, parameters)
|
|
111
|
+
|
|
112
|
+
if (postCallCallback) {
|
|
113
|
+
callMonitored(postCallCallback, null, [result])
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
117
|
+
return result
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
targetPrototype[method] = instrumentation as TARGET[METHOD]
|
|
121
|
+
|
|
122
|
+
return {
|
|
123
|
+
stop: () => {
|
|
124
|
+
stopped = true
|
|
125
|
+
// If the instrumentation has been removed by a third party, keep the last one
|
|
126
|
+
if (targetPrototype[method] === instrumentation) {
|
|
127
|
+
targetPrototype[method] = original
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export function instrumentSetter<TARGET extends { [key: string]: any }, PROPERTY extends keyof TARGET>(
|
|
134
|
+
targetPrototype: TARGET,
|
|
135
|
+
property: PROPERTY,
|
|
136
|
+
after: (target: TARGET, value: TARGET[PROPERTY]) => void
|
|
137
|
+
) {
|
|
138
|
+
const originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property)
|
|
139
|
+
if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {
|
|
140
|
+
return { stop: noop }
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const stoppedInstrumentation = noop
|
|
144
|
+
let instrumentation = (target: TARGET, value: TARGET[PROPERTY]) => {
|
|
145
|
+
// put hooked setter into event loop to avoid of set latency
|
|
146
|
+
setTimeout(() => {
|
|
147
|
+
if (instrumentation !== stoppedInstrumentation) {
|
|
148
|
+
after(target, value)
|
|
149
|
+
}
|
|
150
|
+
}, 0)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const instrumentationWrapper = function (this: TARGET, value: TARGET[PROPERTY]) {
|
|
154
|
+
originalDescriptor.set!.call(this, value)
|
|
155
|
+
instrumentation(this, value)
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
Object.defineProperty(targetPrototype, property, {
|
|
159
|
+
set: instrumentationWrapper,
|
|
160
|
+
})
|
|
161
|
+
|
|
162
|
+
return {
|
|
163
|
+
stop: () => {
|
|
164
|
+
if (Object.getOwnPropertyDescriptor(targetPrototype, property)?.set === instrumentationWrapper) {
|
|
165
|
+
Object.defineProperty(targetPrototype, property, originalDescriptor)
|
|
166
|
+
}
|
|
167
|
+
instrumentation = stoppedInstrumentation
|
|
168
|
+
},
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { display } from './display'
|
|
2
|
+
import { getType } from './utils/typeUtils'
|
|
3
|
+
|
|
4
|
+
export type MatchOption = string | RegExp | ((value: string) => boolean)
|
|
5
|
+
|
|
6
|
+
export function isMatchOption(item: unknown): item is MatchOption {
|
|
7
|
+
const itemType = getType(item)
|
|
8
|
+
return itemType === 'string' || itemType === 'function' || item instanceof RegExp
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Returns true if value can be matched by at least one of the provided MatchOptions.
|
|
13
|
+
* When comparing strings, setting useStartsWith to true will compare the value with the start of
|
|
14
|
+
* the option, instead of requiring an exact match.
|
|
15
|
+
*/
|
|
16
|
+
export function matchList(list: MatchOption[], value: string, useStartsWith = false): boolean {
|
|
17
|
+
return list.some((item) => {
|
|
18
|
+
try {
|
|
19
|
+
if (typeof item === 'function') {
|
|
20
|
+
return item(value)
|
|
21
|
+
} else if (item instanceof RegExp) {
|
|
22
|
+
return item.test(value)
|
|
23
|
+
} else if (typeof item === 'string') {
|
|
24
|
+
return useStartsWith ? value.startsWith(item) : item === value
|
|
25
|
+
}
|
|
26
|
+
} catch (e) {
|
|
27
|
+
display.error(e)
|
|
28
|
+
}
|
|
29
|
+
return false
|
|
30
|
+
})
|
|
31
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { getType } from './utils/typeUtils'
|
|
2
|
+
|
|
3
|
+
type Merged<TDestination, TSource> =
|
|
4
|
+
// case 1 - source is undefined - return destination
|
|
5
|
+
TSource extends undefined
|
|
6
|
+
? TDestination
|
|
7
|
+
: // case 2 - destination is undefined - return source
|
|
8
|
+
TDestination extends undefined
|
|
9
|
+
? TSource
|
|
10
|
+
: // case 3 - source is an array - see if it merges or overwrites
|
|
11
|
+
TSource extends any[]
|
|
12
|
+
? TDestination extends any[]
|
|
13
|
+
? TDestination & TSource
|
|
14
|
+
: TSource
|
|
15
|
+
: // case 4 - source is an object - see if it merges or overwrites
|
|
16
|
+
TSource extends object
|
|
17
|
+
? TDestination extends object
|
|
18
|
+
? TDestination extends any[]
|
|
19
|
+
? TSource
|
|
20
|
+
: TDestination & TSource
|
|
21
|
+
: TSource
|
|
22
|
+
: // case 5 - cannot merge - return source
|
|
23
|
+
TSource
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Iterate over source and affect its sub values into destination, recursively.
|
|
27
|
+
* If the source and destination can't be merged, return source.
|
|
28
|
+
*/
|
|
29
|
+
export function mergeInto<D, S>(
|
|
30
|
+
destination: D,
|
|
31
|
+
source: S,
|
|
32
|
+
circularReferenceChecker = createCircularReferenceChecker()
|
|
33
|
+
): Merged<D, S> {
|
|
34
|
+
// ignore the source if it is undefined
|
|
35
|
+
if (source === undefined) {
|
|
36
|
+
return destination as Merged<D, S>
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (typeof source !== 'object' || source === null) {
|
|
40
|
+
// primitive values - just return source
|
|
41
|
+
return source as Merged<D, S>
|
|
42
|
+
} else if (source instanceof Date) {
|
|
43
|
+
return new Date(source.getTime()) as unknown as Merged<D, S>
|
|
44
|
+
} else if (source instanceof RegExp) {
|
|
45
|
+
const flags =
|
|
46
|
+
source.flags ||
|
|
47
|
+
// old browsers compatibility
|
|
48
|
+
[
|
|
49
|
+
source.global ? 'g' : '',
|
|
50
|
+
source.ignoreCase ? 'i' : '',
|
|
51
|
+
source.multiline ? 'm' : '',
|
|
52
|
+
source.sticky ? 'y' : '',
|
|
53
|
+
source.unicode ? 'u' : '',
|
|
54
|
+
].join('')
|
|
55
|
+
return new RegExp(source.source, flags) as unknown as Merged<D, S>
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {
|
|
59
|
+
// remove circular references
|
|
60
|
+
return undefined as unknown as Merged<D, S>
|
|
61
|
+
} else if (Array.isArray(source)) {
|
|
62
|
+
const merged: any[] = Array.isArray(destination) ? destination : []
|
|
63
|
+
for (let i = 0; i < source.length; ++i) {
|
|
64
|
+
merged[i] = mergeInto(merged[i], source[i], circularReferenceChecker)
|
|
65
|
+
}
|
|
66
|
+
return merged as unknown as Merged<D, S>
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const merged = getType(destination) === 'object' ? (destination as Record<any, any>) : {}
|
|
70
|
+
for (const key in source) {
|
|
71
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
72
|
+
merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker)
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return merged as unknown as Merged<D, S>
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* A simplistic implementation of a deep clone algorithm.
|
|
80
|
+
* Caveats:
|
|
81
|
+
* - It doesn't maintain prototype chains - don't use with instances of custom classes.
|
|
82
|
+
* - It doesn't handle Map and Set
|
|
83
|
+
*/
|
|
84
|
+
export function deepClone<T>(value: T): T {
|
|
85
|
+
return mergeInto(undefined, value) as T
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
type Combined<A, B> = A extends null ? B : B extends null ? A : Merged<A, B>
|
|
89
|
+
|
|
90
|
+
/*
|
|
91
|
+
* Performs a deep merge of objects and arrays.
|
|
92
|
+
* - Arguments won't be mutated
|
|
93
|
+
* - Object and arrays in the output value are de-referenced ("deep cloned")
|
|
94
|
+
* - Arrays values are merged index by index
|
|
95
|
+
* - Objects are merged by keys
|
|
96
|
+
* - Values get replaced, unless undefined
|
|
97
|
+
*/
|
|
98
|
+
export function combine<A, B>(a: A, b: B): Combined<A, B>
|
|
99
|
+
export function combine<A, B, C>(a: A, b: B, c: C): Combined<Combined<A, B>, C>
|
|
100
|
+
export function combine<A, B, C, D>(a: A, b: B, c: C, d: D): Combined<Combined<Combined<A, B>, C>, D>
|
|
101
|
+
export function combine<A, B, C, D, E>(
|
|
102
|
+
a: A,
|
|
103
|
+
b: B,
|
|
104
|
+
c: C,
|
|
105
|
+
d: D,
|
|
106
|
+
e: E
|
|
107
|
+
): Combined<Combined<Combined<Combined<A, B>, C>, D>, E>
|
|
108
|
+
export function combine<A, B, C, D, E, F>(
|
|
109
|
+
a: A,
|
|
110
|
+
b: B,
|
|
111
|
+
c: C,
|
|
112
|
+
d: D,
|
|
113
|
+
e: E,
|
|
114
|
+
f: F
|
|
115
|
+
): Combined<Combined<Combined<Combined<Combined<A, B>, C>, D>, E>, F>
|
|
116
|
+
export function combine<A, B, C, D, E, F, G>(
|
|
117
|
+
a: A,
|
|
118
|
+
b: B,
|
|
119
|
+
c: C,
|
|
120
|
+
d: D,
|
|
121
|
+
e: E,
|
|
122
|
+
f: F,
|
|
123
|
+
g: G
|
|
124
|
+
): Combined<Combined<Combined<Combined<Combined<Combined<A, B>, C>, D>, E>, F>, G>
|
|
125
|
+
export function combine<A, B, C, D, E, F, G, H>(
|
|
126
|
+
a: A,
|
|
127
|
+
b: B,
|
|
128
|
+
c: C,
|
|
129
|
+
d: D,
|
|
130
|
+
e: E,
|
|
131
|
+
f: F,
|
|
132
|
+
g: G,
|
|
133
|
+
h: H
|
|
134
|
+
): Combined<Combined<Combined<Combined<Combined<Combined<Combined<A, B>, C>, D>, E>, F>, G>, H>
|
|
135
|
+
export function combine(...sources: any[]): unknown {
|
|
136
|
+
let destination: any
|
|
137
|
+
|
|
138
|
+
for (const source of sources) {
|
|
139
|
+
// Ignore any undefined or null sources.
|
|
140
|
+
if (source === undefined || source === null) {
|
|
141
|
+
continue
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
destination = mergeInto(destination, source)
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return destination as unknown
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
interface CircularReferenceChecker {
|
|
151
|
+
hasAlreadyBeenSeen(value: any): boolean
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function createCircularReferenceChecker(): CircularReferenceChecker {
|
|
155
|
+
if (typeof WeakSet !== 'undefined') {
|
|
156
|
+
const set: WeakSet<any> = new WeakSet()
|
|
157
|
+
return {
|
|
158
|
+
hasAlreadyBeenSeen(value) {
|
|
159
|
+
const has = set.has(value)
|
|
160
|
+
if (!has) {
|
|
161
|
+
set.add(value)
|
|
162
|
+
}
|
|
163
|
+
return has
|
|
164
|
+
},
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
const array: any[] = []
|
|
168
|
+
return {
|
|
169
|
+
hasAlreadyBeenSeen(value) {
|
|
170
|
+
const has = array.indexOf(value) >= 0
|
|
171
|
+
if (!has) {
|
|
172
|
+
array.push(value)
|
|
173
|
+
}
|
|
174
|
+
return has
|
|
175
|
+
},
|
|
176
|
+
}
|
|
177
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { display } from './display'
|
|
2
|
+
|
|
3
|
+
let onMonitorErrorCollected: undefined | ((error: unknown) => void)
|
|
4
|
+
let debugMode = false
|
|
5
|
+
|
|
6
|
+
export function startMonitorErrorCollection(newOnMonitorErrorCollected: (error: unknown) => void) {
|
|
7
|
+
onMonitorErrorCollected = newOnMonitorErrorCollected
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function setDebugMode(newDebugMode: boolean) {
|
|
11
|
+
debugMode = newDebugMode
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function resetMonitor() {
|
|
15
|
+
onMonitorErrorCollected = undefined
|
|
16
|
+
debugMode = false
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function monitored<T extends (...params: any[]) => unknown>(
|
|
20
|
+
_: any,
|
|
21
|
+
__: string,
|
|
22
|
+
descriptor: TypedPropertyDescriptor<T>
|
|
23
|
+
) {
|
|
24
|
+
const originalMethod = descriptor.value!
|
|
25
|
+
descriptor.value = function (this: ThisParameterType<T>, ...args: Parameters<T>) {
|
|
26
|
+
const decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod
|
|
27
|
+
return decorated.apply(this, args) as ReturnType<T>
|
|
28
|
+
} as T
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function monitor<T extends (...args: any[]) => unknown>(fn: T): T {
|
|
32
|
+
return function (this: ThisParameterType<T>, ...args: Parameters<T>) {
|
|
33
|
+
return callMonitored(fn, this, args)
|
|
34
|
+
} as unknown as T // consider output type has input type
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function callMonitored<T extends (...args: any[]) => unknown>(
|
|
38
|
+
fn: T,
|
|
39
|
+
context: ThisParameterType<T>,
|
|
40
|
+
args: Parameters<T>
|
|
41
|
+
): ReturnType<T> | undefined
|
|
42
|
+
export function callMonitored<T extends (this: void) => unknown>(fn: T): ReturnType<T> | undefined
|
|
43
|
+
export function callMonitored<T extends (...args: any[]) => unknown>(
|
|
44
|
+
fn: T,
|
|
45
|
+
context?: any,
|
|
46
|
+
args?: any
|
|
47
|
+
): ReturnType<T> | undefined {
|
|
48
|
+
try {
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
50
|
+
return fn.apply(context, args) as ReturnType<T>
|
|
51
|
+
} catch (e) {
|
|
52
|
+
monitorError(e)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function monitorError(e: unknown) {
|
|
57
|
+
displayIfDebugEnabled(e)
|
|
58
|
+
if (onMonitorErrorCollected) {
|
|
59
|
+
try {
|
|
60
|
+
onMonitorErrorCollected(e)
|
|
61
|
+
} catch (e) {
|
|
62
|
+
displayIfDebugEnabled(e)
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function displayIfDebugEnabled(...args: unknown[]) {
|
|
68
|
+
if (debugMode) {
|
|
69
|
+
display.error('[MONITOR]', ...args)
|
|
70
|
+
}
|
|
71
|
+
}
|