@openobserve/browser-core 0.3.3 → 0.4.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/cjs/boot/displayAlreadyInitializedError.js +6 -7
- package/cjs/boot/displayAlreadyInitializedError.js.map +1 -1
- package/cjs/boot/init.js +26 -34
- package/cjs/boot/init.js.map +1 -1
- package/cjs/browser/addEventListener.d.ts +10 -8
- package/cjs/browser/addEventListener.js +107 -50
- package/cjs/browser/addEventListener.js.map +1 -1
- package/cjs/browser/browser.types.d.ts +91 -4
- package/cjs/browser/cookie.d.ts +0 -1
- package/cjs/browser/cookie.js +65 -92
- package/cjs/browser/cookie.js.map +1 -1
- package/cjs/browser/cookieAccess.d.ts +16 -0
- package/cjs/browser/cookieAccess.js +114 -0
- package/cjs/browser/cookieAccess.js.map +1 -0
- package/cjs/browser/fetch.d.ts +9 -0
- package/cjs/browser/fetch.js +18 -0
- package/cjs/browser/fetch.js.map +1 -0
- package/cjs/browser/fetchObservable.d.ts +3 -3
- package/cjs/browser/fetchObservable.js +80 -92
- package/cjs/browser/fetchObservable.js.map +1 -1
- package/cjs/browser/pageMayExitObservable.d.ts +1 -2
- package/cjs/browser/pageMayExitObservable.js +41 -40
- package/cjs/browser/pageMayExitObservable.js.map +1 -1
- package/cjs/browser/runOnReadyState.d.ts +2 -3
- package/cjs/browser/runOnReadyState.js +18 -17
- package/cjs/browser/runOnReadyState.js.map +1 -1
- package/cjs/browser/xhrObservable.d.ts +8 -3
- package/cjs/browser/xhrObservable.js +65 -77
- package/cjs/browser/xhrObservable.js.map +1 -1
- package/cjs/domain/allowedTrackingOrigins.d.ts +1 -1
- package/cjs/domain/allowedTrackingOrigins.js +25 -23
- package/cjs/domain/allowedTrackingOrigins.js.map +1 -1
- package/cjs/domain/bufferedData.d.ts +20 -6
- package/cjs/domain/bufferedData.js +41 -19
- package/cjs/domain/bufferedData.js.map +1 -1
- package/cjs/domain/configuration/configuration.d.ts +44 -43
- package/cjs/domain/configuration/configuration.js +122 -125
- package/cjs/domain/configuration/configuration.js.map +1 -1
- package/cjs/domain/configuration/endpointBuilder.d.ts +42 -7
- package/cjs/domain/configuration/endpointBuilder.js +67 -74
- package/cjs/domain/configuration/endpointBuilder.js.map +1 -1
- package/cjs/domain/configuration/index.d.ts +2 -3
- package/cjs/domain/connectivity/connectivity.d.ts +1 -7
- package/cjs/domain/connectivity/connectivity.js +11 -11
- package/cjs/domain/connectivity/connectivity.js.map +1 -1
- package/cjs/domain/console/consoleObservable.d.ts +1 -1
- package/cjs/domain/console/consoleObservable.js +59 -74
- package/cjs/domain/console/consoleObservable.js.map +1 -1
- package/cjs/domain/context/contextConstants.js +24 -15
- package/cjs/domain/context/contextConstants.js.map +1 -1
- package/cjs/domain/context/contextManager.js +49 -54
- package/cjs/domain/context/contextManager.js.map +1 -1
- package/cjs/domain/context/contextUtils.js +11 -12
- package/cjs/domain/context/contextUtils.js.map +1 -1
- package/cjs/domain/context/defineContextMethod.d.ts +2 -2
- package/cjs/domain/context/defineContextMethod.js +15 -16
- package/cjs/domain/context/defineContextMethod.js.map +1 -1
- package/cjs/domain/context/storeContextManager.d.ts +1 -2
- package/cjs/domain/context/storeContextManager.js +30 -33
- package/cjs/domain/context/storeContextManager.js.map +1 -1
- package/cjs/domain/contexts/accountContext.d.ts +2 -2
- package/cjs/domain/contexts/accountContext.js +26 -29
- package/cjs/domain/contexts/accountContext.js.map +1 -1
- package/cjs/domain/contexts/globalContext.d.ts +2 -2
- package/cjs/domain/contexts/globalContext.js +17 -17
- package/cjs/domain/contexts/globalContext.js.map +1 -1
- package/cjs/domain/contexts/tabContext.d.ts +4 -0
- package/cjs/domain/contexts/tabContext.js +27 -0
- package/cjs/domain/contexts/tabContext.js.map +1 -0
- package/cjs/domain/contexts/telemetrySessionContext.d.ts +4 -0
- package/cjs/domain/contexts/telemetrySessionContext.js +17 -0
- package/cjs/domain/contexts/telemetrySessionContext.js.map +1 -0
- package/cjs/domain/contexts/userContext.d.ts +8 -3
- package/cjs/domain/contexts/userContext.js +29 -41
- package/cjs/domain/contexts/userContext.js.map +1 -1
- package/cjs/domain/deflate/deflate.types.js +11 -2
- package/cjs/domain/deflate/deflate.types.js.map +1 -1
- package/cjs/domain/error/error.d.ts +1 -1
- package/cjs/domain/error/error.js +62 -60
- package/cjs/domain/error/error.js.map +1 -1
- package/cjs/domain/error/error.types.d.ts +1 -1
- package/cjs/domain/error/error.types.js +24 -11
- package/cjs/domain/error/error.types.js.map +1 -1
- package/cjs/domain/error/trackRuntimeError.d.ts +3 -2
- package/cjs/domain/error/trackRuntimeError.js +41 -41
- package/cjs/domain/error/trackRuntimeError.js.map +1 -1
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +33 -38
- package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -1
- package/cjs/domain/extension/extensionUtils.js +18 -25
- package/cjs/domain/extension/extensionUtils.js.map +1 -1
- package/cjs/domain/intakeSites.d.ts +3 -3
- package/cjs/domain/intakeSites.js +23 -10
- package/cjs/domain/intakeSites.js.map +1 -1
- package/cjs/domain/report/reportObservable.d.ts +1 -2
- package/cjs/domain/report/reportObservable.js +73 -85
- package/cjs/domain/report/reportObservable.js.map +1 -1
- package/cjs/domain/resourceUtils.js +19 -17
- package/cjs/domain/resourceUtils.js.map +1 -1
- package/cjs/domain/sampler.d.ts +11 -0
- package/cjs/domain/sampler.js +40 -0
- package/cjs/domain/sampler.js.map +1 -0
- package/cjs/domain/session/sessionConstants.d.ts +1 -0
- package/cjs/domain/session/sessionConstants.js +19 -13
- package/cjs/domain/session/sessionConstants.js.map +1 -1
- package/cjs/domain/session/sessionManager.d.ts +13 -13
- package/cjs/domain/session/sessionManager.js +219 -193
- package/cjs/domain/session/sessionManager.js.map +1 -1
- package/cjs/domain/session/sessionState.d.ts +10 -1
- package/cjs/domain/session/sessionState.js +70 -55
- package/cjs/domain/session/sessionState.js.map +1 -1
- package/cjs/domain/session/sessionStateValidation.js +7 -8
- package/cjs/domain/session/sessionStateValidation.js.map +1 -1
- package/cjs/domain/session/sessionStore.d.ts +4 -33
- package/cjs/domain/session/sessionStore.js +42 -180
- package/cjs/domain/session/sessionStore.js.map +1 -1
- package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +7 -11
- package/cjs/domain/session/storeStrategies/sessionInCookie.js +89 -95
- package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +1 -1
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +1 -4
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +39 -38
- package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -1
- package/cjs/domain/session/storeStrategies/sessionInMemory.d.ts +12 -0
- package/cjs/domain/session/storeStrategies/sessionInMemory.js +35 -0
- package/cjs/domain/session/storeStrategies/sessionInMemory.js.map +1 -0
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -7
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +7 -4
- package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -1
- package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +9 -3
- package/cjs/domain/synthetics/syntheticsWorkerValues.js +33 -25
- package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +1 -1
- package/cjs/domain/tags.d.ts +0 -1
- package/cjs/domain/tags.js +22 -58
- package/cjs/domain/tags.js.map +1 -1
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js +8 -7
- package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +1 -1
- package/cjs/domain/telemetry/telemetry.d.ts +8 -8
- package/cjs/domain/telemetry/telemetry.js +196 -211
- package/cjs/domain/telemetry/telemetry.js.map +1 -1
- package/cjs/domain/telemetry/telemetryEvent.types.d.ts +97 -17
- package/cjs/domain/trackingConsent.d.ts +1 -0
- package/cjs/domain/trackingConsent.js +35 -24
- package/cjs/domain/trackingConsent.js.map +1 -1
- package/cjs/index.d.ts +25 -22
- package/cjs/index.js +281 -194
- package/cjs/tools/abstractLifeCycle.js +19 -26
- package/cjs/tools/abstractLifeCycle.js.map +1 -1
- package/cjs/tools/catchUserErrors.js +12 -12
- package/cjs/tools/catchUserErrors.js.map +1 -1
- package/cjs/tools/display.d.ts +1 -35
- package/cjs/tools/display.js +11 -43
- package/cjs/tools/display.js.map +1 -1
- package/cjs/tools/encoder.js +36 -37
- package/cjs/tools/encoder.js.map +1 -1
- package/cjs/tools/experimentalFeatures.d.ts +1 -4
- package/cjs/tools/experimentalFeatures.js +29 -40
- package/cjs/tools/experimentalFeatures.js.map +1 -1
- package/cjs/tools/getZoneJsOriginalValue.d.ts +1 -1
- package/cjs/tools/getZoneJsOriginalValue.js +22 -25
- package/cjs/tools/getZoneJsOriginalValue.js.map +1 -1
- package/cjs/tools/globalObject.d.ts +16 -15
- package/cjs/tools/globalObject.js +7 -43
- package/cjs/tools/globalObject.js.map +1 -1
- package/cjs/tools/instrumentMethod.d.ts +58 -1
- package/cjs/tools/instrumentMethod.js +174 -112
- package/cjs/tools/instrumentMethod.js.map +1 -1
- package/cjs/tools/matchOption.js +25 -29
- package/cjs/tools/matchOption.js.map +1 -1
- package/cjs/tools/mockable.d.ts +22 -0
- package/cjs/tools/mockable.js +28 -0
- package/cjs/tools/mockable.js.map +1 -0
- package/cjs/tools/monitor.d.ts +5 -7
- package/cjs/tools/monitor.js +13 -58
- package/cjs/tools/monitor.js.map +1 -1
- package/cjs/tools/observable.d.ts +3 -1
- package/cjs/tools/observable.js +75 -85
- package/cjs/tools/observable.js.map +1 -1
- package/cjs/tools/queueMicrotask.js +9 -14
- package/cjs/tools/queueMicrotask.js.map +1 -1
- package/cjs/tools/readBytesFromStream.d.ts +1 -6
- package/cjs/tools/readBytesFromStream.js +18 -25
- package/cjs/tools/readBytesFromStream.js.map +1 -1
- package/cjs/tools/requestIdleCallback.js +22 -29
- package/cjs/tools/requestIdleCallback.js.map +1 -1
- package/cjs/tools/sendToExtension.js +10 -8
- package/cjs/tools/sendToExtension.js.map +1 -1
- package/cjs/tools/serialisation/jsonStringify.js +37 -42
- package/cjs/tools/serialisation/jsonStringify.js.map +1 -1
- package/cjs/tools/serialisation/sanitize.d.ts +1 -0
- package/cjs/tools/serialisation/sanitize.js +111 -167
- package/cjs/tools/serialisation/sanitize.js.map +1 -1
- package/cjs/tools/serialisation/stringify.d.ts +2 -0
- package/cjs/tools/serialisation/stringify.js +18 -0
- package/cjs/tools/serialisation/stringify.js.map +1 -0
- package/cjs/tools/stackTrace/computeStackTrace.js +121 -159
- package/cjs/tools/stackTrace/computeStackTrace.js.map +1 -1
- package/cjs/tools/stackTrace/handlingStack.d.ts +1 -1
- package/cjs/tools/stackTrace/handlingStack.js +39 -38
- package/cjs/tools/stackTrace/handlingStack.js.map +1 -1
- package/cjs/tools/taskQueue.js +40 -49
- package/cjs/tools/taskQueue.js.map +1 -1
- package/cjs/tools/timer.d.ts +2 -1
- package/cjs/tools/timer.js +14 -13
- package/cjs/tools/timer.js.map +1 -1
- package/cjs/tools/utils/arrayUtils.d.ts +1 -0
- package/cjs/tools/utils/arrayUtils.js +17 -13
- package/cjs/tools/utils/arrayUtils.js.map +1 -1
- package/cjs/tools/utils/browserDetection.d.ts +1 -0
- package/cjs/tools/utils/browserDetection.js +25 -23
- package/cjs/tools/utils/browserDetection.js.map +1 -1
- package/cjs/tools/utils/byteUtils.js +20 -28
- package/cjs/tools/utils/byteUtils.js.map +1 -1
- package/cjs/tools/utils/functionUtils.js +33 -40
- package/cjs/tools/utils/functionUtils.js.map +1 -1
- package/cjs/tools/utils/numberUtils.js +15 -14
- package/cjs/tools/utils/numberUtils.js.map +1 -1
- package/cjs/tools/utils/objectUtils.d.ts +2 -0
- package/cjs/tools/utils/objectUtils.js +27 -14
- package/cjs/tools/utils/objectUtils.js.map +1 -1
- package/cjs/tools/utils/polyfills.js +12 -16
- package/cjs/tools/utils/polyfills.js.map +1 -1
- package/cjs/tools/utils/responseUtils.js +11 -12
- package/cjs/tools/utils/responseUtils.js.map +1 -1
- package/cjs/tools/utils/stringUtils.js +56 -77
- package/cjs/tools/utils/stringUtils.js.map +1 -1
- package/cjs/tools/utils/timezone.js +9 -10
- package/cjs/tools/utils/timezone.js.map +1 -1
- package/cjs/tools/utils/urlPolyfill.js +42 -46
- package/cjs/tools/utils/urlPolyfill.js.map +1 -1
- package/cjs/tools/valueHistory.d.ts +9 -1
- package/cjs/tools/valueHistory.js +110 -99
- package/cjs/tools/valueHistory.js.map +1 -1
- package/cjs/transport/batch.js +73 -106
- package/cjs/transport/batch.js.map +1 -1
- package/cjs/transport/eventBridge.d.ts +6 -2
- package/cjs/transport/eventBridge.js +53 -38
- package/cjs/transport/eventBridge.js.map +1 -1
- package/cjs/transport/flushController.d.ts +2 -12
- package/cjs/transport/flushController.js +98 -117
- package/cjs/transport/flushController.js.map +1 -1
- package/cjs/transport/httpRequest.d.ts +0 -1
- package/cjs/transport/httpRequest.js +51 -85
- package/cjs/transport/httpRequest.js.map +1 -1
- package/cjs/transport/index.d.ts +1 -0
- package/cjs/transport/sendWithRetryStrategy.js +133 -146
- package/cjs/transport/sendWithRetryStrategy.js.map +1 -1
- package/esm/boot/displayAlreadyInitializedError.mjs +9 -0
- package/esm/boot/displayAlreadyInitializedError.mjs.map +1 -0
- package/esm/boot/init.mjs +30 -0
- package/esm/boot/init.mjs.map +1 -0
- package/esm/browser/addEventListener.mjs +107 -0
- package/esm/browser/addEventListener.mjs.map +1 -0
- package/esm/browser/cookie.mjs +81 -0
- package/esm/browser/cookie.mjs.map +1 -0
- package/esm/browser/cookieAccess.mjs +111 -0
- package/esm/browser/cookieAccess.mjs.map +1 -0
- package/esm/browser/fetch.mjs +18 -0
- package/esm/browser/fetch.mjs.map +1 -0
- package/esm/browser/fetchObservable.mjs +90 -0
- package/esm/browser/fetchObservable.mjs.map +1 -0
- package/esm/browser/pageMayExitObservable.mjs +44 -0
- package/esm/browser/pageMayExitObservable.mjs.map +1 -0
- package/esm/browser/runOnReadyState.mjs +19 -0
- package/esm/browser/runOnReadyState.mjs.map +1 -0
- package/esm/browser/xhrObservable.mjs +74 -0
- package/esm/browser/xhrObservable.mjs.map +1 -0
- package/esm/domain/allowedTrackingOrigins.mjs +27 -0
- package/esm/domain/allowedTrackingOrigins.mjs.map +1 -0
- package/esm/domain/bufferedData.mjs +43 -0
- package/esm/domain/bufferedData.mjs.map +1 -0
- package/esm/domain/configuration/configuration.mjs +131 -0
- package/esm/domain/configuration/configuration.mjs.map +1 -0
- package/esm/domain/configuration/endpointBuilder.mjs +72 -0
- package/esm/domain/configuration/endpointBuilder.mjs.map +1 -0
- package/esm/domain/connectivity/connectivity.mjs +14 -0
- package/esm/domain/connectivity/connectivity.mjs.map +1 -0
- package/esm/domain/console/consoleObservable.mjs +69 -0
- package/esm/domain/console/consoleObservable.mjs.map +1 -0
- package/esm/domain/context/contextConstants.mjs +25 -0
- package/esm/domain/context/contextConstants.mjs.map +1 -0
- package/esm/domain/context/contextManager.mjs +55 -0
- package/esm/domain/context/contextManager.mjs.map +1 -0
- package/esm/domain/context/contextUtils.mjs +15 -0
- package/esm/domain/context/contextUtils.mjs.map +1 -0
- package/esm/domain/context/defineContextMethod.mjs +19 -0
- package/esm/domain/context/defineContextMethod.mjs.map +1 -0
- package/esm/domain/context/storeContextManager.mjs +36 -0
- package/esm/domain/context/storeContextManager.mjs.map +1 -0
- package/esm/domain/contexts/accountContext.mjs +29 -0
- package/esm/domain/contexts/accountContext.mjs.map +1 -0
- package/esm/domain/contexts/globalContext.mjs +20 -0
- package/esm/domain/contexts/globalContext.mjs.map +1 -0
- package/esm/domain/contexts/tabContext.mjs +27 -0
- package/esm/domain/contexts/tabContext.mjs.map +1 -0
- package/esm/domain/contexts/telemetrySessionContext.mjs +17 -0
- package/esm/domain/contexts/telemetrySessionContext.mjs.map +1 -0
- package/esm/domain/contexts/userContext.mjs +32 -0
- package/esm/domain/contexts/userContext.mjs.map +1 -0
- package/esm/domain/deflate/deflate.types.mjs +12 -0
- package/esm/domain/deflate/deflate.types.mjs.map +1 -0
- package/esm/domain/error/error.mjs +73 -0
- package/esm/domain/error/error.mjs.map +1 -0
- package/esm/domain/error/error.types.mjs +24 -0
- package/esm/domain/error/error.types.mjs.map +1 -0
- package/esm/domain/error/trackRuntimeError.mjs +48 -0
- package/esm/domain/error/trackRuntimeError.mjs.map +1 -0
- package/esm/domain/eventRateLimiter/createEventRateLimiter.mjs +36 -0
- package/esm/domain/eventRateLimiter/createEventRateLimiter.mjs.map +1 -0
- package/esm/domain/extension/extensionUtils.mjs +23 -0
- package/esm/domain/extension/extensionUtils.mjs.map +1 -0
- package/esm/domain/intakeSites.mjs +18 -0
- package/esm/domain/intakeSites.mjs.map +1 -0
- package/esm/domain/report/reportObservable.mjs +86 -0
- package/esm/domain/report/reportObservable.mjs.map +1 -0
- package/esm/domain/resourceUtils.mjs +21 -0
- package/esm/domain/resourceUtils.mjs.map +1 -0
- package/esm/domain/sampler.mjs +37 -0
- package/esm/domain/sampler.mjs.map +1 -0
- package/esm/domain/session/sessionConstants.mjs +18 -0
- package/esm/domain/session/sessionConstants.mjs.map +1 -0
- package/esm/domain/session/sessionManager.mjs +225 -0
- package/esm/domain/session/sessionManager.mjs.map +1 -0
- package/esm/domain/session/sessionState.mjs +76 -0
- package/esm/domain/session/sessionState.mjs.map +1 -0
- package/esm/domain/session/sessionStateValidation.mjs +9 -0
- package/esm/domain/session/sessionStateValidation.mjs.map +1 -0
- package/esm/domain/session/sessionStore.mjs +46 -0
- package/esm/domain/session/sessionStore.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInCookie.mjs +97 -0
- package/esm/domain/session/storeStrategies/sessionInCookie.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.mjs +42 -0
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionInMemory.mjs +33 -0
- package/esm/domain/session/storeStrategies/sessionInMemory.mjs.map +1 -0
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.mjs +7 -0
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.mjs.map +1 -0
- package/esm/domain/synthetics/syntheticsWorkerValues.mjs +37 -0
- package/esm/domain/synthetics/syntheticsWorkerValues.mjs.map +1 -0
- package/esm/domain/tags.mjs +28 -0
- package/esm/domain/tags.mjs.map +1 -0
- package/esm/domain/telemetry/rawTelemetryEvent.types.mjs +10 -0
- package/esm/domain/telemetry/rawTelemetryEvent.types.mjs.map +1 -0
- package/esm/domain/telemetry/telemetry.mjs +219 -0
- package/esm/domain/telemetry/telemetry.mjs.map +1 -0
- package/esm/domain/trackingConsent.mjs +38 -0
- package/esm/domain/trackingConsent.mjs.map +1 -0
- package/esm/index.mjs +81 -0
- package/esm/tools/abstractLifeCycle.mjs +21 -0
- package/esm/tools/abstractLifeCycle.mjs.map +1 -0
- package/esm/tools/catchUserErrors.mjs +15 -0
- package/esm/tools/catchUserErrors.mjs.map +1 -0
- package/esm/tools/display.mjs +10 -0
- package/esm/tools/display.mjs.map +1 -0
- package/esm/tools/encoder.mjs +39 -0
- package/esm/tools/encoder.mjs.map +1 -0
- package/esm/tools/experimentalFeatures.mjs +35 -0
- package/esm/tools/experimentalFeatures.mjs.map +1 -0
- package/esm/tools/getZoneJsOriginalValue.mjs +26 -0
- package/esm/tools/getZoneJsOriginalValue.mjs.map +1 -0
- package/esm/tools/globalObject.mjs +7 -0
- package/esm/tools/globalObject.mjs.map +1 -0
- package/esm/tools/instrumentMethod.mjs +178 -0
- package/esm/tools/instrumentMethod.mjs.map +1 -0
- package/esm/tools/matchOption.mjs +30 -0
- package/esm/tools/matchOption.mjs.map +1 -0
- package/esm/tools/mockable.mjs +28 -0
- package/esm/tools/mockable.mjs.map +1 -0
- package/esm/tools/monitor.mjs +13 -0
- package/esm/tools/monitor.mjs.map +1 -0
- package/esm/tools/observable.mjs +77 -0
- package/esm/tools/observable.mjs.map +1 -0
- package/esm/tools/queueMicrotask.mjs +12 -0
- package/esm/tools/queueMicrotask.mjs.map +1 -0
- package/esm/tools/readBytesFromStream.mjs +21 -0
- package/esm/tools/readBytesFromStream.mjs.map +1 -0
- package/esm/tools/requestIdleCallback.mjs +28 -0
- package/esm/tools/requestIdleCallback.mjs.map +1 -0
- package/esm/tools/sendToExtension.mjs +13 -0
- package/esm/tools/sendToExtension.mjs.map +1 -0
- package/esm/tools/serialisation/jsonStringify.mjs +42 -0
- package/esm/tools/serialisation/jsonStringify.mjs.map +1 -0
- package/esm/tools/serialisation/sanitize.mjs +131 -0
- package/esm/tools/serialisation/sanitize.mjs.map +1 -0
- package/esm/tools/serialisation/stringify.mjs +17 -0
- package/esm/tools/serialisation/stringify.mjs.map +1 -0
- package/esm/tools/stackTrace/computeStackTrace.mjs +148 -0
- package/esm/tools/stackTrace/computeStackTrace.mjs.map +1 -0
- package/esm/tools/stackTrace/handlingStack.mjs +45 -0
- package/esm/tools/stackTrace/handlingStack.mjs.map +1 -0
- package/esm/tools/taskQueue.mjs +45 -0
- package/esm/tools/taskQueue.mjs.map +1 -0
- package/esm/tools/timer.mjs +20 -0
- package/esm/tools/timer.mjs.map +1 -0
- package/esm/tools/utils/arrayUtils.mjs +21 -0
- package/esm/tools/utils/arrayUtils.mjs.map +1 -0
- package/esm/tools/utils/browserDetection.mjs +31 -0
- package/esm/tools/utils/browserDetection.mjs.map +1 -0
- package/esm/tools/utils/byteUtils.mjs +23 -0
- package/esm/tools/utils/byteUtils.mjs.map +1 -0
- package/esm/tools/utils/functionUtils.mjs +35 -0
- package/esm/tools/utils/functionUtils.mjs.map +1 -0
- package/esm/tools/utils/numberUtils.mjs +22 -0
- package/esm/tools/utils/numberUtils.mjs.map +1 -0
- package/esm/tools/utils/objectUtils.mjs +31 -0
- package/esm/tools/utils/objectUtils.mjs.map +1 -0
- package/esm/tools/utils/polyfills.mjs +17 -0
- package/esm/tools/utils/polyfills.mjs.map +1 -0
- package/esm/tools/utils/responseUtils.mjs +15 -0
- package/esm/tools/utils/responseUtils.mjs.map +1 -0
- package/esm/tools/utils/stringUtils.mjs +66 -0
- package/esm/tools/utils/stringUtils.mjs.map +1 -0
- package/esm/tools/utils/timezone.mjs +12 -0
- package/esm/tools/utils/timezone.mjs.map +1 -0
- package/esm/tools/utils/urlPolyfill.mjs +51 -0
- package/esm/tools/utils/urlPolyfill.mjs.map +1 -0
- package/esm/tools/valueHistory.mjs +114 -0
- package/esm/tools/valueHistory.mjs.map +1 -0
- package/esm/transport/batch.mjs +77 -0
- package/esm/transport/batch.mjs.map +1 -0
- package/esm/transport/eventBridge.mjs +58 -0
- package/esm/transport/eventBridge.mjs.map +1 -0
- package/esm/transport/flushController.mjs +104 -0
- package/esm/transport/flushController.mjs.map +1 -0
- package/esm/transport/httpRequest.mjs +60 -0
- package/esm/transport/httpRequest.mjs.map +1 -0
- package/esm/transport/sendWithRetryStrategy.mjs +149 -0
- package/esm/transport/sendWithRetryStrategy.mjs.map +1 -0
- package/package.json +16 -5
- package/src/boot/init.ts +2 -2
- package/src/browser/addEventListener.ts +37 -5
- package/src/browser/browser.types.ts +127 -13
- package/src/browser/cookie.ts +21 -27
- package/src/browser/cookieAccess.ts +150 -0
- package/src/browser/fetch.ts +14 -0
- package/src/browser/fetchObservable.ts +22 -22
- package/src/browser/pageMayExitObservable.ts +7 -4
- package/src/browser/runOnReadyState.ts +3 -8
- package/src/browser/xhrObservable.ts +22 -12
- package/src/domain/allowedTrackingOrigins.ts +5 -5
- package/src/domain/bufferedData.ts +41 -14
- package/src/domain/configuration/configuration.ts +87 -72
- package/src/domain/configuration/endpointBuilder.ts +82 -52
- package/src/domain/configuration/index.ts +2 -2
- package/src/domain/connectivity/connectivity.ts +3 -15
- package/src/domain/console/consoleObservable.ts +3 -3
- package/src/domain/context/contextManager.ts +1 -1
- package/src/domain/context/contextUtils.ts +1 -1
- package/src/domain/context/defineContextMethod.ts +3 -3
- package/src/domain/context/storeContextManager.ts +9 -6
- package/src/domain/contexts/accountContext.ts +5 -5
- package/src/domain/contexts/globalContext.ts +4 -5
- package/src/domain/contexts/tabContext.ts +43 -0
- package/src/domain/contexts/telemetrySessionContext.ts +26 -0
- package/src/domain/contexts/userContext.ts +7 -11
- package/src/domain/error/error.ts +53 -23
- package/src/domain/error/error.types.ts +1 -1
- package/src/domain/error/trackRuntimeError.ts +11 -4
- package/src/domain/eventRateLimiter/createEventRateLimiter.ts +1 -1
- package/src/domain/intakeSites.ts +8 -3
- package/src/domain/report/reportObservable.ts +11 -7
- package/src/domain/sampler.ts +64 -0
- package/src/domain/session/sessionConstants.ts +2 -1
- package/src/domain/session/sessionManager.ts +281 -176
- package/src/domain/session/sessionState.ts +64 -8
- package/src/domain/session/sessionStore.ts +57 -223
- package/src/domain/session/storeStrategies/sessionInCookie.ts +121 -107
- package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +33 -21
- package/src/domain/session/storeStrategies/sessionInMemory.ts +55 -0
- package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +28 -6
- package/src/domain/synthetics/syntheticsWorkerValues.ts +44 -13
- package/src/domain/tags.ts +0 -16
- package/src/domain/telemetry/telemetry.ts +38 -34
- package/src/domain/telemetry/telemetryEvent.types.ts +116 -20
- package/src/domain/trackingConsent.ts +18 -3
- package/src/index.ts +51 -31
- package/src/tools/display.ts +2 -50
- package/src/tools/experimentalFeatures.ts +1 -4
- package/src/tools/getZoneJsOriginalValue.ts +3 -3
- package/src/tools/globalObject.ts +27 -41
- package/src/tools/instrumentMethod.ts +230 -20
- package/src/tools/matchOption.ts +3 -1
- package/src/tools/mockable.ts +32 -0
- package/src/tools/monitor.ts +14 -62
- package/src/tools/observable.ts +9 -1
- package/src/tools/queueMicrotask.ts +6 -1
- package/src/tools/readBytesFromStream.ts +3 -12
- package/src/tools/requestIdleCallback.ts +1 -1
- package/src/tools/serialisation/sanitize.ts +67 -65
- package/src/tools/serialisation/stringify.ts +18 -0
- package/src/tools/stackTrace/computeStackTrace.ts +15 -13
- package/src/tools/stackTrace/handlingStack.ts +14 -1
- package/src/tools/taskQueue.ts +5 -3
- package/src/tools/timer.ts +7 -6
- package/src/tools/utils/arrayUtils.ts +7 -0
- package/src/tools/utils/browserDetection.ts +8 -0
- package/src/tools/utils/byteUtils.ts +1 -5
- package/src/tools/utils/functionUtils.ts +2 -2
- package/src/tools/utils/objectUtils.ts +20 -0
- package/src/tools/utils/stringUtils.ts +4 -1
- package/src/tools/utils/urlPolyfill.ts +5 -4
- package/src/tools/valueHistory.ts +39 -6
- package/src/transport/batch.ts +9 -18
- package/src/transport/eventBridge.ts +23 -10
- package/src/transport/flushController.ts +17 -24
- package/src/transport/httpRequest.ts +4 -36
- package/src/transport/index.ts +1 -0
- package/src/transport/sendWithRetryStrategy.ts +1 -1
- package/cjs/browser/browser.types.js +0 -6
- package/cjs/browser/browser.types.js.map +0 -1
- package/cjs/domain/configuration/index.js +0 -16
- package/cjs/domain/configuration/index.js.map +0 -1
- package/cjs/domain/configuration/transportConfiguration.d.ts +0 -20
- package/cjs/domain/configuration/transportConfiguration.js +0 -54
- package/cjs/domain/configuration/transportConfiguration.js.map +0 -1
- package/cjs/domain/connectivity/index.js +0 -18
- package/cjs/domain/connectivity/index.js.map +0 -1
- package/cjs/domain/contexts/rumInternalContext.type.js +0 -3
- package/cjs/domain/contexts/rumInternalContext.type.js.map +0 -1
- package/cjs/domain/deflate/index.js +0 -18
- package/cjs/domain/deflate/index.js.map +0 -1
- package/cjs/domain/report/browser.types.js +0 -3
- package/cjs/domain/report/browser.types.js.map +0 -1
- package/cjs/domain/session/oldCookiesMigration.d.ts +0 -11
- package/cjs/domain/session/oldCookiesMigration.js +0 -40
- package/cjs/domain/session/oldCookiesMigration.js.map +0 -1
- package/cjs/domain/session/sessionStoreOperations.d.ts +0 -12
- package/cjs/domain/session/sessionStoreOperations.js +0 -119
- package/cjs/domain/session/sessionStoreOperations.js.map +0 -1
- package/cjs/domain/telemetry/index.js +0 -28
- package/cjs/domain/telemetry/index.js.map +0 -1
- package/cjs/domain/telemetry/telemetryEvent.types.js +0 -7
- package/cjs/domain/telemetry/telemetryEvent.types.js.map +0 -1
- package/cjs/index.js.map +0 -1
- package/cjs/tools/abstractHooks.d.ts +0 -24
- package/cjs/tools/abstractHooks.js +0 -41
- package/cjs/tools/abstractHooks.js.map +0 -1
- package/cjs/tools/boundedBuffer.d.ts +0 -16
- package/cjs/tools/boundedBuffer.js +0 -32
- package/cjs/tools/boundedBuffer.js.map +0 -1
- package/cjs/tools/mergeInto.d.ts +0 -25
- package/cjs/tools/mergeInto.js +0 -98
- package/cjs/tools/mergeInto.js.map +0 -1
- package/cjs/tools/serialisation/context.js +0 -3
- package/cjs/tools/serialisation/context.js.map +0 -1
- package/cjs/tools/utils/timeUtils.d.ts +0 -53
- package/cjs/tools/utils/timeUtils.js +0 -101
- package/cjs/tools/utils/timeUtils.js.map +0 -1
- package/cjs/tools/utils/typeUtils.d.ts +0 -4
- package/cjs/tools/utils/typeUtils.js +0 -16
- package/cjs/tools/utils/typeUtils.js.map +0 -1
- package/cjs/transport/index.js +0 -15
- package/cjs/transport/index.js.map +0 -1
- package/esm/boot/displayAlreadyInitializedError.d.ts +0 -2
- package/esm/boot/displayAlreadyInitializedError.js +0 -7
- package/esm/boot/displayAlreadyInitializedError.js.map +0 -1
- package/esm/boot/init.d.ts +0 -14
- package/esm/boot/init.js +0 -35
- package/esm/boot/init.js.map +0 -1
- package/esm/browser/addEventListener.d.ts +0 -87
- package/esm/browser/addEventListener.js +0 -51
- package/esm/browser/addEventListener.js.map +0 -1
- package/esm/browser/browser.types.d.ts +0 -51
- package/esm/browser/browser.types.js +0 -5
- package/esm/browser/browser.types.js.map +0 -1
- package/esm/browser/cookie.d.ts +0 -28
- package/esm/browser/cookie.js +0 -103
- package/esm/browser/cookie.js.map +0 -1
- package/esm/browser/fetchObservable.d.ts +0 -38
- package/esm/browser/fetchObservable.js +0 -99
- package/esm/browser/fetchObservable.js.map +0 -1
- package/esm/browser/pageMayExitObservable.d.ts +0 -14
- package/esm/browser/pageMayExitObservable.js +0 -40
- package/esm/browser/pageMayExitObservable.js.map +0 -1
- package/esm/browser/runOnReadyState.d.ts +0 -5
- package/esm/browser/runOnReadyState.js +0 -16
- package/esm/browser/runOnReadyState.js.map +0 -1
- package/esm/browser/xhrObservable.d.ts +0 -24
- package/esm/browser/xhrObservable.js +0 -83
- package/esm/browser/xhrObservable.js.map +0 -1
- package/esm/domain/allowedTrackingOrigins.d.ts +0 -4
- package/esm/domain/allowedTrackingOrigins.js +0 -21
- package/esm/domain/allowedTrackingOrigins.js.map +0 -1
- package/esm/domain/bufferedData.d.ts +0 -14
- package/esm/domain/bufferedData.js +0 -19
- package/esm/domain/bufferedData.js.map +0 -1
- package/esm/domain/configuration/configuration.d.ts +0 -312
- package/esm/domain/configuration/configuration.js +0 -132
- package/esm/domain/configuration/configuration.js.map +0 -1
- package/esm/domain/configuration/endpointBuilder.d.ts +0 -12
- package/esm/domain/configuration/endpointBuilder.js +0 -77
- package/esm/domain/configuration/endpointBuilder.js.map +0 -1
- package/esm/domain/configuration/index.d.ts +0 -5
- package/esm/domain/configuration/index.js +0 -4
- package/esm/domain/configuration/index.js.map +0 -1
- package/esm/domain/configuration/transportConfiguration.d.ts +0 -20
- package/esm/domain/configuration/transportConfiguration.js +0 -50
- package/esm/domain/configuration/transportConfiguration.js.map +0 -1
- package/esm/domain/connectivity/connectivity.d.ts +0 -14
- package/esm/domain/connectivity/connectivity.js +0 -11
- package/esm/domain/connectivity/connectivity.js.map +0 -1
- package/esm/domain/connectivity/index.d.ts +0 -1
- package/esm/domain/connectivity/index.js +0 -2
- package/esm/domain/connectivity/index.js.map +0 -1
- package/esm/domain/console/consoleObservable.d.ts +0 -21
- package/esm/domain/console/consoleObservable.js +0 -80
- package/esm/domain/console/consoleObservable.js.map +0 -1
- package/esm/domain/context/contextConstants.d.ts +0 -21
- package/esm/domain/context/contextConstants.js +0 -15
- package/esm/domain/context/contextConstants.js.map +0 -1
- package/esm/domain/context/contextManager.d.ts +0 -19
- package/esm/domain/context/contextManager.js +0 -57
- package/esm/domain/context/contextManager.js.map +0 -1
- package/esm/domain/context/contextUtils.d.ts +0 -5
- package/esm/domain/context/contextUtils.js +0 -13
- package/esm/domain/context/contextUtils.js.map +0 -1
- package/esm/domain/context/defineContextMethod.d.ts +0 -6
- package/esm/domain/context/defineContextMethod.js +0 -17
- package/esm/domain/context/defineContextMethod.js.map +0 -1
- package/esm/domain/context/storeContextManager.d.ts +0 -6
- package/esm/domain/context/storeContextManager.js +0 -35
- package/esm/domain/context/storeContextManager.js.map +0 -1
- package/esm/domain/contexts/accountContext.d.ts +0 -26
- package/esm/domain/contexts/accountContext.js +0 -29
- package/esm/domain/contexts/accountContext.js.map +0 -1
- package/esm/domain/contexts/globalContext.d.ts +0 -18
- package/esm/domain/contexts/globalContext.js +0 -17
- package/esm/domain/contexts/globalContext.js.map +0 -1
- package/esm/domain/contexts/rumInternalContext.type.d.ts +0 -14
- package/esm/domain/contexts/rumInternalContext.type.js +0 -2
- package/esm/domain/contexts/rumInternalContext.type.js.map +0 -1
- package/esm/domain/contexts/userContext.d.ts +0 -29
- package/esm/domain/contexts/userContext.js +0 -41
- package/esm/domain/contexts/userContext.js.map +0 -1
- package/esm/domain/deflate/deflate.types.d.ts +0 -40
- package/esm/domain/deflate/deflate.types.js +0 -2
- package/esm/domain/deflate/deflate.types.js.map +0 -1
- package/esm/domain/deflate/index.d.ts +0 -1
- package/esm/domain/deflate/index.js +0 -2
- package/esm/domain/deflate/index.js.map +0 -1
- package/esm/domain/error/error.d.ts +0 -23
- package/esm/domain/error/error.js +0 -65
- package/esm/domain/error/error.js.map +0 -1
- package/esm/domain/error/error.types.d.ts +0 -47
- package/esm/domain/error/error.types.js +0 -10
- package/esm/domain/error/error.types.js.map +0 -1
- package/esm/domain/error/trackRuntimeError.d.ts +0 -11
- package/esm/domain/error/trackRuntimeError.js +0 -43
- package/esm/domain/error/trackRuntimeError.js.map +0 -1
- package/esm/domain/eventRateLimiter/createEventRateLimiter.d.ts +0 -5
- package/esm/domain/eventRateLimiter/createEventRateLimiter.js +0 -38
- package/esm/domain/eventRateLimiter/createEventRateLimiter.js.map +0 -1
- package/esm/domain/extension/extensionUtils.d.ts +0 -10
- package/esm/domain/extension/extensionUtils.js +0 -25
- package/esm/domain/extension/extensionUtils.js.map +0 -1
- package/esm/domain/intakeSites.d.ts +0 -8
- package/esm/domain/intakeSites.js +0 -8
- package/esm/domain/intakeSites.js.map +0 -1
- package/esm/domain/report/browser.types.d.ts +0 -34
- package/esm/domain/report/browser.types.js +0 -2
- package/esm/domain/report/browser.types.js.map +0 -1
- package/esm/domain/report/reportObservable.d.ts +0 -14
- package/esm/domain/report/reportObservable.js +0 -95
- package/esm/domain/report/reportObservable.js.map +0 -1
- package/esm/domain/resourceUtils.d.ts +0 -18
- package/esm/domain/resourceUtils.js +0 -17
- package/esm/domain/resourceUtils.js.map +0 -1
- package/esm/domain/session/oldCookiesMigration.d.ts +0 -11
- package/esm/domain/session/oldCookiesMigration.js +0 -36
- package/esm/domain/session/oldCookiesMigration.js.map +0 -1
- package/esm/domain/session/sessionConstants.d.ts +0 -15
- package/esm/domain/session/sessionConstants.js +0 -13
- package/esm/domain/session/sessionConstants.js.map +0 -1
- package/esm/domain/session/sessionManager.d.ts +0 -28
- package/esm/domain/session/sessionManager.js +0 -196
- package/esm/domain/session/sessionManager.js.map +0 -1
- package/esm/domain/session/sessionState.d.ts +0 -16
- package/esm/domain/session/sessionState.js +0 -60
- package/esm/domain/session/sessionState.js.map +0 -1
- package/esm/domain/session/sessionStateValidation.d.ts +0 -3
- package/esm/domain/session/sessionStateValidation.js +0 -7
- package/esm/domain/session/sessionStateValidation.js.map +0 -1
- package/esm/domain/session/sessionStore.d.ts +0 -38
- package/esm/domain/session/sessionStore.js +0 -179
- package/esm/domain/session/sessionStore.js.map +0 -1
- package/esm/domain/session/sessionStoreOperations.d.ts +0 -12
- package/esm/domain/session/sessionStoreOperations.js +0 -114
- package/esm/domain/session/sessionStoreOperations.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +0 -12
- package/esm/domain/session/storeStrategies/sessionInCookie.js +0 -98
- package/esm/domain/session/storeStrategies/sessionInCookie.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +0 -6
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +0 -37
- package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -16
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.js +0 -2
- package/esm/domain/session/storeStrategies/sessionStoreStrategy.js.map +0 -1
- package/esm/domain/synthetics/syntheticsWorkerValues.d.ts +0 -12
- package/esm/domain/synthetics/syntheticsWorkerValues.js +0 -24
- package/esm/domain/synthetics/syntheticsWorkerValues.js.map +0 -1
- package/esm/domain/tags.d.ts +0 -6
- package/esm/domain/tags.js +0 -60
- package/esm/domain/tags.js.map +0 -1
- package/esm/domain/telemetry/index.d.ts +0 -4
- package/esm/domain/telemetry/index.js +0 -3
- package/esm/domain/telemetry/index.js.map +0 -1
- package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +0 -18
- package/esm/domain/telemetry/rawTelemetryEvent.types.js +0 -6
- package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +0 -1
- package/esm/domain/telemetry/telemetry.d.ts +0 -56
- package/esm/domain/telemetry/telemetry.js +0 -228
- package/esm/domain/telemetry/telemetry.js.map +0 -1
- package/esm/domain/telemetry/telemetryEvent.types.d.ts +0 -866
- package/esm/domain/telemetry/telemetryEvent.types.js +0 -6
- package/esm/domain/telemetry/telemetryEvent.types.js.map +0 -1
- package/esm/domain/trackingConsent.d.ts +0 -13
- package/esm/domain/trackingConsent.js +0 -24
- package/esm/domain/trackingConsent.js.map +0 -1
- package/esm/index.d.ts +0 -100
- package/esm/index.js +0 -76
- package/esm/index.js.map +0 -1
- package/esm/tools/abstractHooks.d.ts +0 -24
- package/esm/tools/abstractHooks.js +0 -37
- package/esm/tools/abstractHooks.js.map +0 -1
- package/esm/tools/abstractLifeCycle.d.ts +0 -23
- package/esm/tools/abstractLifeCycle.js +0 -24
- package/esm/tools/abstractLifeCycle.js.map +0 -1
- package/esm/tools/boundedBuffer.d.ts +0 -16
- package/esm/tools/boundedBuffer.js +0 -29
- package/esm/tools/boundedBuffer.js.map +0 -1
- package/esm/tools/catchUserErrors.d.ts +0 -1
- package/esm/tools/catchUserErrors.js +0 -12
- package/esm/tools/catchUserErrors.js.map +0 -1
- package/esm/tools/display.d.ts +0 -38
- package/esm/tools/display.js +0 -41
- package/esm/tools/display.js.map +0 -1
- package/esm/tools/encoder.d.ts +0 -54
- package/esm/tools/encoder.js +0 -37
- package/esm/tools/encoder.js.map +0 -1
- package/esm/tools/experimentalFeatures.d.ts +0 -21
- package/esm/tools/experimentalFeatures.js +0 -42
- package/esm/tools/experimentalFeatures.js.map +0 -1
- package/esm/tools/getZoneJsOriginalValue.d.ts +0 -19
- package/esm/tools/getZoneJsOriginalValue.js +0 -26
- package/esm/tools/getZoneJsOriginalValue.js.map +0 -1
- package/esm/tools/globalObject.d.ts +0 -19
- package/esm/tools/globalObject.js +0 -40
- package/esm/tools/globalObject.js.map +0 -1
- package/esm/tools/instrumentMethod.d.ts +0 -75
- package/esm/tools/instrumentMethod.js +0 -114
- package/esm/tools/instrumentMethod.js.map +0 -1
- package/esm/tools/matchOption.d.ts +0 -8
- package/esm/tools/matchOption.js +0 -31
- package/esm/tools/matchOption.js.map +0 -1
- package/esm/tools/mergeInto.d.ts +0 -25
- package/esm/tools/mergeInto.js +0 -93
- package/esm/tools/mergeInto.js.map +0 -1
- package/esm/tools/monitor.d.ts +0 -9
- package/esm/tools/monitor.js +0 -52
- package/esm/tools/monitor.js.map +0 -1
- package/esm/tools/observable.d.ts +0 -30
- package/esm/tools/observable.js +0 -83
- package/esm/tools/observable.js.map +0 -1
- package/esm/tools/queueMicrotask.d.ts +0 -1
- package/esm/tools/queueMicrotask.js +0 -14
- package/esm/tools/queueMicrotask.js.map +0 -1
- package/esm/tools/readBytesFromStream.d.ts +0 -10
- package/esm/tools/readBytesFromStream.js +0 -25
- package/esm/tools/readBytesFromStream.js.map +0 -1
- package/esm/tools/requestIdleCallback.d.ts +0 -12
- package/esm/tools/requestIdleCallback.js +0 -30
- package/esm/tools/requestIdleCallback.js.map +0 -1
- package/esm/tools/sendToExtension.d.ts +0 -3
- package/esm/tools/sendToExtension.js +0 -8
- package/esm/tools/sendToExtension.js.map +0 -1
- package/esm/tools/serialisation/context.d.ts +0 -9
- package/esm/tools/serialisation/context.js +0 -2
- package/esm/tools/serialisation/context.js.map +0 -1
- package/esm/tools/serialisation/jsonStringify.d.ts +0 -13
- package/esm/tools/serialisation/jsonStringify.js +0 -44
- package/esm/tools/serialisation/jsonStringify.js.map +0 -1
- package/esm/tools/serialisation/sanitize.d.ts +0 -18
- package/esm/tools/serialisation/sanitize.js +0 -185
- package/esm/tools/serialisation/sanitize.js.map +0 -1
- package/esm/tools/stackTrace/computeStackTrace.d.ts +0 -25
- package/esm/tools/stackTrace/computeStackTrace.js +0 -183
- package/esm/tools/stackTrace/computeStackTrace.js.map +0 -1
- package/esm/tools/stackTrace/handlingStack.d.ts +0 -10
- package/esm/tools/stackTrace/handlingStack.js +0 -41
- package/esm/tools/stackTrace/handlingStack.js.map +0 -1
- package/esm/tools/taskQueue.d.ts +0 -15
- package/esm/tools/taskQueue.js +0 -50
- package/esm/tools/taskQueue.js.map +0 -1
- package/esm/tools/timer.d.ts +0 -5
- package/esm/tools/timer.js +0 -16
- package/esm/tools/timer.js.map +0 -1
- package/esm/tools/utils/arrayUtils.d.ts +0 -3
- package/esm/tools/utils/arrayUtils.js +0 -15
- package/esm/tools/utils/arrayUtils.js.map +0 -1
- package/esm/tools/utils/browserDetection.d.ts +0 -8
- package/esm/tools/utils/browserDetection.js +0 -28
- package/esm/tools/utils/browserDetection.js.map +0 -1
- package/esm/tools/utils/byteUtils.d.ts +0 -8
- package/esm/tools/utils/byteUtils.js +0 -29
- package/esm/tools/utils/byteUtils.js.map +0 -1
- package/esm/tools/utils/functionUtils.d.ts +0 -8
- package/esm/tools/utils/functionUtils.js +0 -39
- package/esm/tools/utils/functionUtils.js.map +0 -1
- package/esm/tools/utils/numberUtils.d.ts +0 -9
- package/esm/tools/utils/numberUtils.js +0 -18
- package/esm/tools/utils/numberUtils.js.map +0 -1
- package/esm/tools/utils/objectUtils.d.ts +0 -10
- package/esm/tools/utils/objectUtils.js +0 -17
- package/esm/tools/utils/objectUtils.js.map +0 -1
- package/esm/tools/utils/polyfills.d.ts +0 -7
- package/esm/tools/utils/polyfills.js +0 -18
- package/esm/tools/utils/polyfills.js.map +0 -1
- package/esm/tools/utils/responseUtils.d.ts +0 -2
- package/esm/tools/utils/responseUtils.js +0 -13
- package/esm/tools/utils/responseUtils.js.map +0 -1
- package/esm/tools/utils/stringUtils.d.ts +0 -23
- package/esm/tools/utils/stringUtils.js +0 -84
- package/esm/tools/utils/stringUtils.js.map +0 -1
- package/esm/tools/utils/timeUtils.d.ts +0 -53
- package/esm/tools/utils/timeUtils.js +0 -84
- package/esm/tools/utils/timeUtils.js.map +0 -1
- package/esm/tools/utils/timezone.d.ts +0 -1
- package/esm/tools/utils/timezone.js +0 -10
- package/esm/tools/utils/timezone.js.map +0 -1
- package/esm/tools/utils/typeUtils.d.ts +0 -4
- package/esm/tools/utils/typeUtils.js +0 -13
- package/esm/tools/utils/typeUtils.js.map +0 -1
- package/esm/tools/utils/urlPolyfill.d.ts +0 -5
- package/esm/tools/utils/urlPolyfill.js +0 -52
- package/esm/tools/utils/urlPolyfill.js.map +0 -1
- package/esm/tools/valueHistory.d.ts +0 -27
- package/esm/tools/valueHistory.js +0 -100
- package/esm/tools/valueHistory.js.map +0 -1
- package/esm/transport/batch.d.ts +0 -16
- package/esm/transport/batch.js +0 -106
- package/esm/transport/batch.js.map +0 -1
- package/esm/transport/eventBridge.d.ts +0 -21
- package/esm/transport/eventBridge.js +0 -41
- package/esm/transport/eventBridge.js.map +0 -1
- package/esm/transport/flushController.d.ts +0 -65
- package/esm/transport/flushController.js +0 -119
- package/esm/transport/flushController.js.map +0 -1
- package/esm/transport/httpRequest.d.ts +0 -56
- package/esm/transport/httpRequest.js +0 -89
- package/esm/transport/httpRequest.js.map +0 -1
- package/esm/transport/index.d.ts +0 -7
- package/esm/transport/index.js +0 -5
- package/esm/transport/index.js.map +0 -1
- package/esm/transport/sendWithRetryStrategy.d.ts +0 -41
- package/esm/transport/sendWithRetryStrategy.js +0 -158
- package/esm/transport/sendWithRetryStrategy.js.map +0 -1
- package/src/domain/configuration/transportConfiguration.ts +0 -78
- package/src/domain/session/oldCookiesMigration.ts +0 -42
- package/src/domain/session/sessionStoreOperations.ts +0 -131
- package/src/tools/abstractHooks.ts +0 -72
- package/src/tools/boundedBuffer.ts +0 -45
- package/src/tools/mergeInto.ts +0 -177
- package/src/tools/utils/timeUtils.ts +0 -117
- package/src/tools/utils/typeUtils.ts +0 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functionUtils.mjs","names":[],"sources":["../../../src/tools/utils/functionUtils.ts"],"sourcesContent":["import type { TimeoutId } from '../timer'\nimport { setTimeout, clearTimeout } from '../timer'\n\n// use lodash API\nexport function throttle<T extends (...args: any[]) => void>(\n fn: T,\n wait: number,\n options?: { leading?: boolean; trailing?: boolean }\n) {\n const needLeadingExecution = options?.leading !== undefined ? options.leading : true\n const needTrailingExecution = options?.trailing !== undefined ? options.trailing : true\n let inWaitPeriod = false\n let pendingExecutionWithParameters: Parameters<T> | undefined\n let pendingTimeoutId: TimeoutId\n\n return {\n throttled: (...parameters: Parameters<T>) => {\n if (inWaitPeriod) {\n pendingExecutionWithParameters = parameters\n return\n }\n if (needLeadingExecution) {\n fn(...parameters)\n } else {\n pendingExecutionWithParameters = parameters\n }\n inWaitPeriod = true\n pendingTimeoutId = setTimeout(() => {\n if (needTrailingExecution && pendingExecutionWithParameters) {\n fn(...pendingExecutionWithParameters)\n }\n inWaitPeriod = false\n pendingExecutionWithParameters = undefined\n }, wait)\n },\n cancel: () => {\n clearTimeout(pendingTimeoutId)\n inWaitPeriod = false\n pendingExecutionWithParameters = undefined\n },\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() {}\n"],"mappings":";;AAIA,SAAgB,SACd,IACA,MACA,SACA;CACA,MAAM,uBAAuB,SAAS,YAAY,KAAA,IAAY,QAAQ,UAAU;CAChF,MAAM,wBAAwB,SAAS,aAAa,KAAA,IAAY,QAAQ,WAAW;CACnF,IAAI,eAAe;CACnB,IAAI;CACJ,IAAI;CAEJ,OAAO;EACL,YAAY,GAAG,eAA8B;GAC3C,IAAI,cAAc;IAChB,iCAAiC;IACjC;GACF;GACA,IAAI,sBACF,GAAG,GAAG,UAAU;QAEhB,iCAAiC;GAEnC,eAAe;GACf,mBAAmB,iBAAiB;IAClC,IAAI,yBAAyB,gCAC3B,GAAG,GAAG,8BAA8B;IAEtC,eAAe;IACf,iCAAiC,KAAA;GACnC,GAAG,IAAI;EACT;EACA,cAAc;GACZ,aAAa,gBAAgB;GAC7B,eAAe;GACf,iCAAiC,KAAA;EACnC;CACF;AACF;AAGA,SAAgB,OAAO,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/tools/utils/numberUtils.ts
|
|
2
|
+
/**
|
|
3
|
+
* Return true if the draw is successful
|
|
4
|
+
*
|
|
5
|
+
* @param threshold - Threshold between 0 and 100
|
|
6
|
+
*/
|
|
7
|
+
function performDraw(threshold) {
|
|
8
|
+
return threshold !== 0 && Math.random() * 100 <= threshold;
|
|
9
|
+
}
|
|
10
|
+
function round(num, decimals) {
|
|
11
|
+
return +num.toFixed(decimals);
|
|
12
|
+
}
|
|
13
|
+
function isPercentage(value) {
|
|
14
|
+
return isNumber(value) && value >= 0 && value <= 100;
|
|
15
|
+
}
|
|
16
|
+
function isNumber(value) {
|
|
17
|
+
return typeof value === "number";
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { isNumber, isPercentage, performDraw, round };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=numberUtils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numberUtils.mjs","names":[],"sources":["../../../src/tools/utils/numberUtils.ts"],"sourcesContent":["/**\n * Return true if the draw is successful\n *\n * @param threshold - Threshold between 0 and 100\n */\nexport function performDraw(threshold: number): boolean {\n return threshold !== 0 && Math.random() * 100 <= threshold\n}\n\nexport function round(num: number, decimals: 0 | 1 | 2 | 3 | 4) {\n return +num.toFixed(decimals)\n}\n\nexport function isPercentage(value: unknown) {\n return isNumber(value) && value >= 0 && value <= 100\n}\n\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number'\n}\n"],"mappings":";;;;;;AAKA,SAAgB,YAAY,WAA4B;CACtD,OAAO,cAAc,KAAK,KAAK,OAAO,IAAI,OAAO;AACnD;AAEA,SAAgB,MAAM,KAAa,UAA6B;CAC9D,OAAO,CAAC,IAAI,QAAQ,QAAQ;AAC9B;AAEA,SAAgB,aAAa,OAAgB;CAC3C,OAAO,SAAS,KAAK,KAAK,SAAS,KAAK,SAAS;AACnD;AAEA,SAAgB,SAAS,OAAiC;CACxD,OAAO,OAAO,UAAU;AAC1B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//#region src/tools/utils/objectUtils.ts
|
|
2
|
+
const stripDangerousKeys = (key, value) => key === "__proto__" ? void 0 : value;
|
|
3
|
+
function tryJsonParse(text) {
|
|
4
|
+
try {
|
|
5
|
+
return JSON.parse(text, stripDangerousKeys);
|
|
6
|
+
} catch {}
|
|
7
|
+
}
|
|
8
|
+
function shallowClone(object) {
|
|
9
|
+
return { ...object };
|
|
10
|
+
}
|
|
11
|
+
function objectHasValue(object, value) {
|
|
12
|
+
return Object.keys(object).some((key) => object[key] === value);
|
|
13
|
+
}
|
|
14
|
+
function isEmptyObject(object) {
|
|
15
|
+
return Object.keys(object).length === 0;
|
|
16
|
+
}
|
|
17
|
+
function mapValues(object, fn) {
|
|
18
|
+
const newObject = {};
|
|
19
|
+
for (const key of Object.keys(object)) newObject[key] = fn(object[key]);
|
|
20
|
+
return newObject;
|
|
21
|
+
}
|
|
22
|
+
function getConstructorName(value) {
|
|
23
|
+
try {
|
|
24
|
+
const name = value?.constructor?.name;
|
|
25
|
+
return typeof name === "string" && name ? name : void 0;
|
|
26
|
+
} catch {}
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { getConstructorName, isEmptyObject, mapValues, objectHasValue, shallowClone, tryJsonParse };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=objectUtils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objectUtils.mjs","names":[],"sources":["../../../src/tools/utils/objectUtils.ts"],"sourcesContent":["// Prevent prototype pollution: __proto__ as an own property in parsed JSON can corrupt Object.prototype\nconst stripDangerousKeys = (key: string, value: unknown) => (key === '__proto__' ? undefined : value)\n\nexport function tryJsonParse<T = unknown>(text: string): T | undefined {\n try {\n return JSON.parse(text, stripDangerousKeys) as T\n } catch {\n // ignore\n }\n}\n\nexport function shallowClone<T>(object: T): T & Record<string, never> {\n return { ...object } as T & Record<string, never>\n}\n\nexport function objectHasValue<T extends { [key: string]: unknown }>(object: T, value: unknown): value is T[keyof T] {\n return Object.keys(object).some((key) => object[key] === value)\n}\n\nexport function isEmptyObject(object: object) {\n return Object.keys(object).length === 0\n}\n\nexport function mapValues<A, B>(object: { [key: string]: A }, fn: (arg: A) => B) {\n const newObject: { [key: string]: B } = {}\n for (const key of Object.keys(object)) {\n newObject[key] = fn(object[key])\n }\n return newObject\n}\n\nexport function getConstructorName(value: unknown): string | undefined {\n try {\n const name = (value as { constructor?: { name?: unknown } } | null | undefined)?.constructor?.name\n return typeof name === 'string' && name ? name : undefined\n } catch {\n // ignore: accessing `constructor` can throw on hostile objects\n }\n}\n"],"mappings":";AACA,MAAM,sBAAsB,KAAa,UAAoB,QAAQ,cAAc,KAAA,IAAY;AAE/F,SAAgB,aAA0B,MAA6B;CACrE,IAAI;EACF,OAAO,KAAK,MAAM,MAAM,kBAAkB;CAC5C,QAAQ,CAER;AACF;AAEA,SAAgB,aAAgB,QAAsC;CACpE,OAAO,EAAE,GAAG,OAAO;AACrB;AAEA,SAAgB,eAAqD,QAAW,OAAqC;CACnH,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,MAAM,QAAQ,OAAO,SAAS,KAAK;AAChE;AAEA,SAAgB,cAAc,QAAgB;CAC5C,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,WAAW;AACxC;AAEA,SAAgB,UAAgB,QAA8B,IAAmB;CAC/E,MAAM,YAAkC,CAAC;CACzC,KAAK,MAAM,OAAO,OAAO,KAAK,MAAM,GAClC,UAAU,OAAO,GAAG,OAAO,IAAI;CAEjC,OAAO;AACT;AAEA,SAAgB,mBAAmB,OAAoC;CACrE,IAAI;EACF,MAAM,OAAQ,OAAmE,aAAa;EAC9F,OAAO,OAAO,SAAS,YAAY,OAAO,OAAO,KAAA;CACnD,QAAQ,CAER;AACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/tools/utils/polyfills.ts
|
|
2
|
+
function findLast(array, predicate) {
|
|
3
|
+
for (let i = array.length - 1; i >= 0; i -= 1) {
|
|
4
|
+
const item = array[i];
|
|
5
|
+
if (predicate(item, i, array)) return item;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
function objectValues(object) {
|
|
9
|
+
return Object.values(object);
|
|
10
|
+
}
|
|
11
|
+
function objectEntries(object) {
|
|
12
|
+
return Object.entries(object);
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { findLast, objectEntries, objectValues };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=polyfills.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polyfills.mjs","names":[],"sources":["../../../src/tools/utils/polyfills.ts"],"sourcesContent":["export function findLast<T, S extends T>(\n array: readonly T[],\n predicate: (item: T, index: number, array: readonly T[]) => item is S\n): S | undefined {\n for (let i = array.length - 1; i >= 0; i -= 1) {\n const item = array[i]\n if (predicate(item, i, array)) {\n return item\n }\n }\n return undefined\n}\n\n// Keep the following wrapper functions as it can be mangled and will result in smaller bundle size that using\n// the native Object.values and Object.entries directly\n\nexport function objectValues<T = unknown>(object: { [key: string]: T }) {\n return Object.values(object)\n}\n\nexport function objectEntries<T = unknown>(object: { [key: string]: T }): Array<[string, T]> {\n return Object.entries(object)\n}\n"],"mappings":";AAAA,SAAgB,SACd,OACA,WACe;CACf,KAAK,IAAI,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG;EAC7C,MAAM,OAAO,MAAM;EACnB,IAAI,UAAU,MAAM,GAAG,KAAK,GAC1B,OAAO;CAEX;AAEF;AAKA,SAAgB,aAA0B,QAA8B;CACtE,OAAO,OAAO,OAAO,MAAM;AAC7B;AAEA,SAAgB,cAA2B,QAAkD;CAC3F,OAAO,OAAO,QAAQ,MAAM;AAC9B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/tools/utils/responseUtils.ts
|
|
2
|
+
function isServerError(status) {
|
|
3
|
+
return status >= 500;
|
|
4
|
+
}
|
|
5
|
+
function tryToClone(response) {
|
|
6
|
+
try {
|
|
7
|
+
return response.clone();
|
|
8
|
+
} catch {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { isServerError, tryToClone };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=responseUtils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responseUtils.mjs","names":[],"sources":["../../../src/tools/utils/responseUtils.ts"],"sourcesContent":["export function isServerError(status: number) {\n return status >= 500\n}\n\nexport function tryToClone(response: Response): Response | undefined {\n try {\n return response.clone()\n } catch {\n // clone can throw if the response has already been used by another instrumentation or is disturbed\n return\n }\n}\n"],"mappings":";AAAA,SAAgB,cAAc,QAAgB;CAC5C,OAAO,UAAU;AACnB;AAEA,SAAgB,WAAW,UAA0C;CACnE,IAAI;EACF,OAAO,SAAS,MAAM;CACxB,QAAQ;EAEN;CACF;AACF"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
//#region src/tools/utils/stringUtils.ts
|
|
2
|
+
/**
|
|
3
|
+
* UUID v4
|
|
4
|
+
* from https://gist.github.com/jed/982883
|
|
5
|
+
*/
|
|
6
|
+
function generateUUID(placeholder) {
|
|
7
|
+
return placeholder ? (parseInt(placeholder, 10) ^ Math.random() * 16 >> parseInt(placeholder, 10) / 4).toString(16) : `10000000-1000-4000-8000-100000000000`.replace(/[018]/g, generateUUID);
|
|
8
|
+
}
|
|
9
|
+
const COMMA_SEPARATED_KEY_VALUE = /(\S+?)\s*=\s*(.*?)(?:;|$)/g;
|
|
10
|
+
/**
|
|
11
|
+
* Returns the value of the key with the given name
|
|
12
|
+
* If there are multiple values with the same key, returns the first one
|
|
13
|
+
*/
|
|
14
|
+
function findCommaSeparatedValue(rawString, name) {
|
|
15
|
+
COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;
|
|
16
|
+
while (true) {
|
|
17
|
+
const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);
|
|
18
|
+
if (match) {
|
|
19
|
+
if (match[1] === name) return match[2];
|
|
20
|
+
} else break;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Returns a map of all the values with the given key
|
|
25
|
+
* If there are multiple values with the same key, returns all the values
|
|
26
|
+
*/
|
|
27
|
+
function findAllCommaSeparatedValues(rawString) {
|
|
28
|
+
const result = /* @__PURE__ */ new Map();
|
|
29
|
+
COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;
|
|
30
|
+
while (true) {
|
|
31
|
+
const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);
|
|
32
|
+
if (match) {
|
|
33
|
+
const key = match[1];
|
|
34
|
+
const value = match[2];
|
|
35
|
+
if (result.has(key)) result.get(key).push(value);
|
|
36
|
+
else result.set(key, [value]);
|
|
37
|
+
} else break;
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Returns a map of the values with the given key
|
|
43
|
+
* ⚠️ If there are multiple values with the same key, returns the LAST one
|
|
44
|
+
*
|
|
45
|
+
* @deprecated use `findAllCommaSeparatedValues()` instead
|
|
46
|
+
*/
|
|
47
|
+
function findCommaSeparatedValues(rawString) {
|
|
48
|
+
const result = /* @__PURE__ */ new Map();
|
|
49
|
+
COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;
|
|
50
|
+
while (true) {
|
|
51
|
+
const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);
|
|
52
|
+
if (match) result.set(match[1], match[2]);
|
|
53
|
+
else break;
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
function safeTruncate(candidate, length, suffix = "") {
|
|
58
|
+
const lastChar = candidate.charCodeAt(length - 1);
|
|
59
|
+
const correctedLength = lastChar >= 55296 && lastChar <= 56319 ? length + 1 : length;
|
|
60
|
+
if (candidate.length <= correctedLength) return candidate;
|
|
61
|
+
return `${candidate.slice(0, correctedLength)}${suffix}`;
|
|
62
|
+
}
|
|
63
|
+
//#endregion
|
|
64
|
+
export { findAllCommaSeparatedValues, findCommaSeparatedValue, findCommaSeparatedValues, generateUUID, safeTruncate };
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=stringUtils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringUtils.mjs","names":[],"sources":["../../../src/tools/utils/stringUtils.ts"],"sourcesContent":["/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder?: string): string {\n return placeholder\n ? // eslint-disable-next-line no-bitwise\n (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n : `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, generateUUID)\n}\n\n// Assuming input string is following the HTTP Cookie format defined in\n// https://www.ietf.org/rfc/rfc2616.txt and https://www.ietf.org/rfc/rfc6265.txt, we don't need to\n// be too strict with this regex.\nconst COMMA_SEPARATED_KEY_VALUE = /(\\S+?)\\s*=\\s*(.*?)(?:;|$)/g\n\n/**\n * Returns the value of the key with the given name\n * If there are multiple values with the same key, returns the first one\n */\nexport function findCommaSeparatedValue(rawString: string, name: string): string | undefined {\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString)\n if (match) {\n if (match[1] === name) {\n return match[2]\n }\n } else {\n break\n }\n }\n}\n\n/**\n * Returns a map of all the values with the given key\n * If there are multiple values with the same key, returns all the values\n */\nexport function findAllCommaSeparatedValues(rawString: string): Map<string, string[]> {\n const result = new Map<string, string[]>()\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString)\n if (match) {\n const key = match[1]\n const value = match[2]\n if (result.has(key)) {\n result.get(key)!.push(value)\n } else {\n result.set(key, [value])\n }\n } else {\n break\n }\n }\n return result\n}\n\n/**\n * Returns a map of the values with the given key\n * ⚠️ If there are multiple values with the same key, returns the LAST one\n *\n * @deprecated use `findAllCommaSeparatedValues()` instead\n */\nexport function findCommaSeparatedValues(rawString: string): Map<string, string> {\n const result = new Map<string, string>()\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString)\n if (match) {\n result.set(match[1], match[2])\n } else {\n break\n }\n }\n return result\n}\n\nexport function safeTruncate(candidate: string, length: number, suffix = '') {\n const lastChar = candidate.charCodeAt(length - 1)\n const isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff\n const correctedLength = isLastCharSurrogatePair ? length + 1 : length\n\n if (candidate.length <= correctedLength) {\n return candidate\n }\n\n return `${candidate.slice(0, correctedLength)}${suffix}`\n}\n"],"mappings":";;;;;AAIA,SAAgB,aAAa,aAA8B;CACzD,OAAO,eAEF,SAAS,aAAa,EAAE,IAAM,KAAK,OAAO,IAAI,MAAQ,SAAS,aAAa,EAAE,IAAI,EAAA,CAAK,SAAS,EAAE,IACnG,uCAAsC,QAAQ,UAAU,YAAY;AAC1E;AAKA,MAAM,4BAA4B;;;;;AAMlC,SAAgB,wBAAwB,WAAmB,MAAkC;CAC3F,0BAA0B,YAAY;CACtC,OAAO,MAAM;EACX,MAAM,QAAQ,0BAA0B,KAAK,SAAS;EACtD,IAAI;OACE,MAAM,OAAO,MACf,OAAO,MAAM;EAAA,OAGf;CAEJ;AACF;;;;;AAMA,SAAgB,4BAA4B,WAA0C;CACpF,MAAM,yBAAS,IAAI,IAAsB;CACzC,0BAA0B,YAAY;CACtC,OAAO,MAAM;EACX,MAAM,QAAQ,0BAA0B,KAAK,SAAS;EACtD,IAAI,OAAO;GACT,MAAM,MAAM,MAAM;GAClB,MAAM,QAAQ,MAAM;GACpB,IAAI,OAAO,IAAI,GAAG,GAChB,OAAO,IAAI,GAAG,CAAC,CAAE,KAAK,KAAK;QAE3B,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC;EAE3B,OACE;CAEJ;CACA,OAAO;AACT;;;;;;;AAQA,SAAgB,yBAAyB,WAAwC;CAC/E,MAAM,yBAAS,IAAI,IAAoB;CACvC,0BAA0B,YAAY;CACtC,OAAO,MAAM;EACX,MAAM,QAAQ,0BAA0B,KAAK,SAAS;EACtD,IAAI,OACF,OAAO,IAAI,MAAM,IAAI,MAAM,EAAE;OAE7B;CAEJ;CACA,OAAO;AACT;AAEA,SAAgB,aAAa,WAAmB,QAAgB,SAAS,IAAI;CAC3E,MAAM,WAAW,UAAU,WAAW,SAAS,CAAC;CAEhD,MAAM,kBAD0B,YAAY,SAAU,YAAY,QAChB,SAAS,IAAI;CAE/D,IAAI,UAAU,UAAU,iBACtB,OAAO;CAGT,OAAO,GAAG,UAAU,MAAM,GAAG,eAAe,IAAI;AAClD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timezone.mjs","names":[],"sources":["../../../src/tools/utils/timezone.ts"],"sourcesContent":["export function getTimeZone() {\n try {\n const intl = new Intl.DateTimeFormat()\n\n return intl.resolvedOptions().timeZone\n } catch {\n return undefined\n }\n}\n"],"mappings":";AAAA,SAAgB,cAAc;CAC5B,IAAI;EAGF,OAAO,IAFU,KAAK,eAEZ,CAAC,CAAC,gBAAgB,CAAC,CAAC;CAChC,QAAQ;EACN;CACF;AACF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { globalObject } from "../globalObject.mjs";
|
|
2
|
+
//#region src/tools/utils/urlPolyfill.ts
|
|
3
|
+
function normalizeUrl(url) {
|
|
4
|
+
return buildUrl(url, globalObject.location?.href).href;
|
|
5
|
+
}
|
|
6
|
+
function isValidUrl(url) {
|
|
7
|
+
try {
|
|
8
|
+
return !!buildUrl(url);
|
|
9
|
+
} catch {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function getPathName(url) {
|
|
14
|
+
const pathname = buildUrl(url).pathname;
|
|
15
|
+
return pathname[0] === "/" ? pathname : `/${pathname}`;
|
|
16
|
+
}
|
|
17
|
+
function buildUrl(url, base) {
|
|
18
|
+
const { URL } = getPristineWindow();
|
|
19
|
+
try {
|
|
20
|
+
return base !== void 0 ? new URL(url, base) : new URL(url);
|
|
21
|
+
} catch (error) {
|
|
22
|
+
throw new Error(`Failed to construct URL: ${String(error)}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get native URL constructor from a clean iframe
|
|
27
|
+
* This avoids polyfill issues by getting the native implementation from a fresh iframe context
|
|
28
|
+
* Falls back to the original URL constructor if iframe approach fails
|
|
29
|
+
*/
|
|
30
|
+
let getPristineGlobalObjectCache;
|
|
31
|
+
function getPristineWindow() {
|
|
32
|
+
if (!getPristineGlobalObjectCache) {
|
|
33
|
+
let iframe;
|
|
34
|
+
let pristineWindow;
|
|
35
|
+
try {
|
|
36
|
+
iframe = document.createElement("iframe");
|
|
37
|
+
iframe.style.display = "none";
|
|
38
|
+
document.body.appendChild(iframe);
|
|
39
|
+
pristineWindow = iframe.contentWindow ?? globalObject;
|
|
40
|
+
} catch {
|
|
41
|
+
pristineWindow = globalObject;
|
|
42
|
+
}
|
|
43
|
+
getPristineGlobalObjectCache = { URL: pristineWindow.URL };
|
|
44
|
+
iframe?.remove();
|
|
45
|
+
}
|
|
46
|
+
return getPristineGlobalObjectCache;
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { buildUrl, getPathName, getPristineWindow, isValidUrl, normalizeUrl };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=urlPolyfill.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlPolyfill.mjs","names":[],"sources":["../../../src/tools/utils/urlPolyfill.ts"],"sourcesContent":["import type { GlobalObject } from '../globalObject'\nimport { globalObject } from '../globalObject'\n\nexport function normalizeUrl(url: string) {\n return buildUrl(url, globalObject.location?.href).href\n}\n\nexport function isValidUrl(url: string) {\n try {\n return !!buildUrl(url)\n } catch {\n return false\n }\n}\n\nexport function getPathName(url: string) {\n const pathname = buildUrl(url).pathname\n return pathname[0] === '/' ? pathname : `/${pathname}`\n}\n\nexport function buildUrl(url: string, base?: string) {\n const { URL } = getPristineWindow()\n\n try {\n return base !== undefined ? new URL(url, base) : new URL(url)\n } catch (error) {\n throw new Error(`Failed to construct URL: ${String(error)}`)\n }\n}\n\n/**\n * Get native URL constructor from a clean iframe\n * This avoids polyfill issues by getting the native implementation from a fresh iframe context\n * Falls back to the original URL constructor if iframe approach fails\n */\nlet getPristineGlobalObjectCache: Pick<typeof window, 'URL'> | undefined\n\nexport function getPristineWindow() {\n if (!getPristineGlobalObjectCache) {\n let iframe: HTMLIFrameElement | undefined\n let pristineWindow: GlobalObject\n try {\n iframe = document.createElement('iframe')\n iframe.style.display = 'none'\n document.body.appendChild(iframe)\n pristineWindow = (iframe.contentWindow as GlobalObject | null) ?? globalObject\n } catch {\n pristineWindow = globalObject\n }\n getPristineGlobalObjectCache = {\n URL: pristineWindow.URL,\n }\n iframe?.remove()\n }\n\n return getPristineGlobalObjectCache\n}\n"],"mappings":";;AAGA,SAAgB,aAAa,KAAa;CACxC,OAAO,SAAS,KAAK,aAAa,UAAU,IAAI,CAAC,CAAC;AACpD;AAEA,SAAgB,WAAW,KAAa;CACtC,IAAI;EACF,OAAO,CAAC,CAAC,SAAS,GAAG;CACvB,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAgB,YAAY,KAAa;CACvC,MAAM,WAAW,SAAS,GAAG,CAAC,CAAC;CAC/B,OAAO,SAAS,OAAO,MAAM,WAAW,IAAI;AAC9C;AAEA,SAAgB,SAAS,KAAa,MAAe;CACnD,MAAM,EAAE,QAAQ,kBAAkB;CAElC,IAAI;EACF,OAAO,SAAS,KAAA,IAAY,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG;CAC9D,SAAS,OAAO;EACd,MAAM,IAAI,MAAM,4BAA4B,OAAO,KAAK,GAAG;CAC7D;AACF;;;;;;AAOA,IAAI;AAEJ,SAAgB,oBAAoB;CAClC,IAAI,CAAC,8BAA8B;EACjC,IAAI;EACJ,IAAI;EACJ,IAAI;GACF,SAAS,SAAS,cAAc,QAAQ;GACxC,OAAO,MAAM,UAAU;GACvB,SAAS,KAAK,YAAY,MAAM;GAChC,iBAAkB,OAAO,iBAAyC;EACpE,QAAQ;GACN,iBAAiB;EACnB;EACA,+BAA+B,EAC7B,KAAK,eAAe,IACtB;EACA,QAAQ,OAAO;CACjB;CAEA,OAAO;AACT"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { clearInterval, setInterval } from "./timer.mjs";
|
|
2
|
+
import { removeItem } from "./utils/arrayUtils.mjs";
|
|
3
|
+
import { ONE_MINUTE, addDuration, relativeNow } from "@openobserve/js-core/time";
|
|
4
|
+
//#region src/tools/valueHistory.ts
|
|
5
|
+
const END_OF_TIMES = Infinity;
|
|
6
|
+
const CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE;
|
|
7
|
+
let cleanupHistoriesInterval;
|
|
8
|
+
const cleanupTasks = /* @__PURE__ */ new Set();
|
|
9
|
+
function cleanupHistories() {
|
|
10
|
+
cleanupTasks.forEach((task) => task());
|
|
11
|
+
}
|
|
12
|
+
function createValueHistory({ expireDelay, maxEntries }) {
|
|
13
|
+
let entries = [];
|
|
14
|
+
if (!cleanupHistoriesInterval) cleanupHistoriesInterval = setInterval(() => cleanupHistories(), CLEAR_OLD_VALUES_INTERVAL);
|
|
15
|
+
const clearExpiredValues = () => {
|
|
16
|
+
const oldTimeThreshold = relativeNow() - expireDelay;
|
|
17
|
+
while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) entries.pop();
|
|
18
|
+
};
|
|
19
|
+
cleanupTasks.add(clearExpiredValues);
|
|
20
|
+
/**
|
|
21
|
+
* Add a value to the history associated with a start time. Returns a reference to this newly
|
|
22
|
+
* added entry that can be removed or closed.
|
|
23
|
+
*/
|
|
24
|
+
function add(value, startTime) {
|
|
25
|
+
const entry = {
|
|
26
|
+
value,
|
|
27
|
+
startTime,
|
|
28
|
+
endTime: END_OF_TIMES,
|
|
29
|
+
remove: () => {
|
|
30
|
+
removeItem(entries, entry);
|
|
31
|
+
},
|
|
32
|
+
close: (endTime) => {
|
|
33
|
+
entry.endTime = endTime;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
if (maxEntries && entries.length >= maxEntries) entries.pop();
|
|
37
|
+
entries.unshift(entry);
|
|
38
|
+
return entry;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Return the latest value that was active during `startTime`, or the currently active value
|
|
42
|
+
* if no `startTime` is provided. This method assumes that entries are not overlapping.
|
|
43
|
+
*
|
|
44
|
+
* If `option.returnInactive` is true, returns the value at `startTime` (active or not).
|
|
45
|
+
*/
|
|
46
|
+
function find(startTime = END_OF_TIMES, options = { returnInactive: false }) {
|
|
47
|
+
for (const entry of entries) if (entry.startTime <= startTime) {
|
|
48
|
+
if (options.returnInactive || startTime <= entry.endTime) return entry.value;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Helper function to close the currently active value, if any. This method assumes that entries
|
|
54
|
+
* are not overlapping.
|
|
55
|
+
*/
|
|
56
|
+
function closeActive(endTime) {
|
|
57
|
+
const latestEntry = entries[0];
|
|
58
|
+
if (latestEntry?.endTime === END_OF_TIMES) latestEntry.close(endTime);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Return all values with an active period overlapping with the duration,
|
|
62
|
+
* or all values that were active during `startTime` if no duration is provided,
|
|
63
|
+
* or all currently active values if no `startTime` is provided.
|
|
64
|
+
*/
|
|
65
|
+
function findAll(startTime = END_OF_TIMES, duration = 0) {
|
|
66
|
+
const endTime = addDuration(startTime, duration);
|
|
67
|
+
return entries.filter((entry) => entry.startTime <= endTime && startTime <= entry.endTime).map((entry) => entry.value);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Return all entries with an active period overlapping with the duration,
|
|
71
|
+
* or all entries that were active during `startTime` if no duration is provided,
|
|
72
|
+
* or all currently active entries if no `startTime` is provided.
|
|
73
|
+
*/
|
|
74
|
+
function findAllEntries(startTime = END_OF_TIMES, duration = 0) {
|
|
75
|
+
const endTime = addDuration(startTime, duration);
|
|
76
|
+
return entries.filter((entry) => entry.startTime <= endTime && startTime <= entry.endTime);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Return all the entries whose start time is equal to the given startTime.
|
|
80
|
+
*/
|
|
81
|
+
function getEntries(startTime) {
|
|
82
|
+
return entries.filter((entry) => entry.startTime === startTime);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Remove all entries from this collection.
|
|
86
|
+
*/
|
|
87
|
+
function reset() {
|
|
88
|
+
entries = [];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Stop internal garbage collection of past entries.
|
|
92
|
+
*/
|
|
93
|
+
function stop() {
|
|
94
|
+
cleanupTasks.delete(clearExpiredValues);
|
|
95
|
+
if (cleanupTasks.size === 0 && cleanupHistoriesInterval) {
|
|
96
|
+
clearInterval(cleanupHistoriesInterval);
|
|
97
|
+
cleanupHistoriesInterval = void 0;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
add,
|
|
102
|
+
find,
|
|
103
|
+
closeActive,
|
|
104
|
+
findAll,
|
|
105
|
+
findAllEntries,
|
|
106
|
+
getEntries,
|
|
107
|
+
reset,
|
|
108
|
+
stop
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
//#endregion
|
|
112
|
+
export { CLEAR_OLD_VALUES_INTERVAL, createValueHistory };
|
|
113
|
+
|
|
114
|
+
//# sourceMappingURL=valueHistory.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valueHistory.mjs","names":[],"sources":["../../src/tools/valueHistory.ts"],"sourcesContent":["import { ONE_MINUTE, addDuration, relativeNow } from '@openobserve/js-core/time'\nimport type { Duration, RelativeTime } from '@openobserve/js-core/time'\nimport { setInterval, clearInterval } from './timer'\nimport type { TimeoutId } from './timer'\nimport { removeItem } from './utils/arrayUtils'\n\nconst END_OF_TIMES = Infinity as RelativeTime\n\nexport interface ValueHistoryEntry<T> {\n startTime: RelativeTime\n endTime: RelativeTime\n value: T\n remove(): void\n close(endTime: RelativeTime): void\n}\n\nexport const CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE\n\n/**\n * Store and keep track of values spans. This whole cache assumes that values are added in\n * chronological order (i.e. all entries have an increasing start time).\n */\nexport interface ValueHistory<Value> {\n add: (value: Value, startTime: RelativeTime) => ValueHistoryEntry<Value>\n find: (startTime?: RelativeTime, options?: { returnInactive: boolean }) => Value | undefined\n\n closeActive: (endTime: RelativeTime) => void\n findAll: (startTime?: RelativeTime, duration?: Duration) => Value[]\n findAllEntries: (startTime?: RelativeTime, duration?: Duration) => Array<ValueHistoryEntry<Value>>\n getEntries: (startTime: RelativeTime) => Array<ValueHistoryEntry<Value>>\n reset: () => void\n stop: () => void\n}\n\nlet cleanupHistoriesInterval: TimeoutId | undefined\n\nconst cleanupTasks: Set<() => void> = new Set()\n\nfunction cleanupHistories() {\n cleanupTasks.forEach((task) => task())\n}\n\nexport function createValueHistory<Value>({\n expireDelay,\n maxEntries,\n}: {\n expireDelay: number\n maxEntries?: number\n}): ValueHistory<Value> {\n let entries: Array<ValueHistoryEntry<Value>> = []\n\n if (!cleanupHistoriesInterval) {\n cleanupHistoriesInterval = setInterval(() => cleanupHistories(), CLEAR_OLD_VALUES_INTERVAL)\n }\n\n const clearExpiredValues = () => {\n const oldTimeThreshold = relativeNow() - expireDelay\n while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {\n entries.pop()\n }\n }\n\n cleanupTasks.add(clearExpiredValues)\n\n /**\n * Add a value to the history associated with a start time. Returns a reference to this newly\n * added entry that can be removed or closed.\n */\n function add(value: Value, startTime: RelativeTime): ValueHistoryEntry<Value> {\n const entry: ValueHistoryEntry<Value> = {\n value,\n startTime,\n endTime: END_OF_TIMES,\n remove: () => {\n removeItem(entries, entry)\n },\n close: (endTime: RelativeTime) => {\n entry.endTime = endTime\n },\n }\n\n if (maxEntries && entries.length >= maxEntries) {\n entries.pop()\n }\n\n entries.unshift(entry)\n\n return entry\n }\n\n /**\n * Return the latest value that was active during `startTime`, or the currently active value\n * if no `startTime` is provided. This method assumes that entries are not overlapping.\n *\n * If `option.returnInactive` is true, returns the value at `startTime` (active or not).\n */\n function find(\n startTime: RelativeTime = END_OF_TIMES,\n options: { returnInactive: boolean } = { returnInactive: false }\n ): Value | undefined {\n for (const entry of entries) {\n if (entry.startTime <= startTime) {\n if (options.returnInactive || startTime <= entry.endTime) {\n return entry.value\n }\n break\n }\n }\n }\n\n /**\n * Helper function to close the currently active value, if any. This method assumes that entries\n * are not overlapping.\n */\n function closeActive(endTime: RelativeTime) {\n const latestEntry = entries[0]\n if (latestEntry?.endTime === END_OF_TIMES) {\n latestEntry.close(endTime)\n }\n }\n\n /**\n * Return all values with an active period overlapping with the duration,\n * or all values that were active during `startTime` if no duration is provided,\n * or all currently active values if no `startTime` is provided.\n */\n function findAll(startTime: RelativeTime = END_OF_TIMES, duration = 0 as Duration): Value[] {\n const endTime = addDuration(startTime, duration)\n return entries\n .filter((entry) => entry.startTime <= endTime && startTime <= entry.endTime)\n .map((entry) => entry.value)\n }\n\n /**\n * Return all entries with an active period overlapping with the duration,\n * or all entries that were active during `startTime` if no duration is provided,\n * or all currently active entries if no `startTime` is provided.\n */\n function findAllEntries(\n startTime: RelativeTime = END_OF_TIMES,\n duration = 0 as Duration\n ): Array<ValueHistoryEntry<Value>> {\n const endTime = addDuration(startTime, duration)\n return entries.filter((entry) => entry.startTime <= endTime && startTime <= entry.endTime)\n }\n\n /**\n * Return all the entries whose start time is equal to the given startTime.\n */\n function getEntries(startTime: RelativeTime): Array<ValueHistoryEntry<Value>> {\n return entries.filter((entry) => entry.startTime === startTime)\n }\n\n /**\n * Remove all entries from this collection.\n */\n function reset() {\n entries = []\n }\n\n /**\n * Stop internal garbage collection of past entries.\n */\n function stop() {\n cleanupTasks.delete(clearExpiredValues)\n if (cleanupTasks.size === 0 && cleanupHistoriesInterval) {\n clearInterval(cleanupHistoriesInterval)\n cleanupHistoriesInterval = undefined\n }\n }\n\n return { add, find, closeActive, findAll, findAllEntries, getEntries, reset, stop }\n}\n\n/**\n * Reset all global state. This is useful for testing to ensure clean state between tests.\n *\n * @internal\n */\nexport function resetValueHistoryGlobals() {\n cleanupTasks.clear()\n clearInterval(cleanupHistoriesInterval)\n cleanupHistoriesInterval = undefined\n}\n"],"mappings":";;;;AAMA,MAAM,eAAe;AAUrB,MAAa,4BAA4B;AAkBzC,IAAI;AAEJ,MAAM,+BAAgC,IAAI,IAAI;AAE9C,SAAS,mBAAmB;CAC1B,aAAa,SAAS,SAAS,KAAK,CAAC;AACvC;AAEA,SAAgB,mBAA0B,EACxC,aACA,cAIsB;CACtB,IAAI,UAA2C,CAAC;CAEhD,IAAI,CAAC,0BACH,2BAA2B,kBAAkB,iBAAiB,GAAG,yBAAyB;CAG5F,MAAM,2BAA2B;EAC/B,MAAM,mBAAmB,YAAY,IAAI;EACzC,OAAO,QAAQ,SAAS,KAAK,QAAQ,QAAQ,SAAS,EAAE,CAAC,UAAU,kBACjE,QAAQ,IAAI;CAEhB;CAEA,aAAa,IAAI,kBAAkB;;;;;CAMnC,SAAS,IAAI,OAAc,WAAmD;EAC5E,MAAM,QAAkC;GACtC;GACA;GACA,SAAS;GACT,cAAc;IACZ,WAAW,SAAS,KAAK;GAC3B;GACA,QAAQ,YAA0B;IAChC,MAAM,UAAU;GAClB;EACF;EAEA,IAAI,cAAc,QAAQ,UAAU,YAClC,QAAQ,IAAI;EAGd,QAAQ,QAAQ,KAAK;EAErB,OAAO;CACT;;;;;;;CAQA,SAAS,KACP,YAA0B,cAC1B,UAAuC,EAAE,gBAAgB,MAAM,GAC5C;EACnB,KAAK,MAAM,SAAS,SAClB,IAAI,MAAM,aAAa,WAAW;GAChC,IAAI,QAAQ,kBAAkB,aAAa,MAAM,SAC/C,OAAO,MAAM;GAEf;EACF;CAEJ;;;;;CAMA,SAAS,YAAY,SAAuB;EAC1C,MAAM,cAAc,QAAQ;EAC5B,IAAI,aAAa,YAAY,cAC3B,YAAY,MAAM,OAAO;CAE7B;;;;;;CAOA,SAAS,QAAQ,YAA0B,cAAc,WAAW,GAAwB;EAC1F,MAAM,UAAU,YAAY,WAAW,QAAQ;EAC/C,OAAO,QACJ,QAAQ,UAAU,MAAM,aAAa,WAAW,aAAa,MAAM,OAAO,CAAC,CAC3E,KAAK,UAAU,MAAM,KAAK;CAC/B;;;;;;CAOA,SAAS,eACP,YAA0B,cAC1B,WAAW,GACsB;EACjC,MAAM,UAAU,YAAY,WAAW,QAAQ;EAC/C,OAAO,QAAQ,QAAQ,UAAU,MAAM,aAAa,WAAW,aAAa,MAAM,OAAO;CAC3F;;;;CAKA,SAAS,WAAW,WAA0D;EAC5E,OAAO,QAAQ,QAAQ,UAAU,MAAM,cAAc,SAAS;CAChE;;;;CAKA,SAAS,QAAQ;EACf,UAAU,CAAC;CACb;;;;CAKA,SAAS,OAAO;EACd,aAAa,OAAO,kBAAkB;EACtC,IAAI,aAAa,SAAS,KAAK,0BAA0B;GACvD,cAAc,wBAAwB;GACtC,2BAA2B,KAAA;EAC7B;CACF;CAEA,OAAO;EAAE;EAAK;EAAM;EAAa;EAAS;EAAgB;EAAY;EAAO;CAAK;AACpF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from "../tools/display.mjs";
|
|
2
|
+
import { ONE_KIBI_BYTE, computeBytesCount } from "../tools/utils/byteUtils.mjs";
|
|
3
|
+
import { jsonStringify } from "../tools/serialisation/jsonStringify.mjs";
|
|
4
|
+
import { objectValues } from "../tools/utils/polyfills.mjs";
|
|
5
|
+
import { isPageExitReason } from "../browser/pageMayExitObservable.mjs";
|
|
6
|
+
//#region src/transport/batch.ts
|
|
7
|
+
const MESSAGE_BYTES_LIMIT = 256 * ONE_KIBI_BYTE;
|
|
8
|
+
function createBatch({ encoder, request, flushController }) {
|
|
9
|
+
let upsertBuffer = {};
|
|
10
|
+
const flushSubscription = flushController.flushObservable.subscribe((event) => flush(event));
|
|
11
|
+
function push(serializedMessage, estimatedMessageBytesCount, key) {
|
|
12
|
+
if (key !== void 0) {
|
|
13
|
+
let bytesDiff;
|
|
14
|
+
if (upsertBuffer[key] !== void 0) bytesDiff = estimatedMessageBytesCount - encoder.estimateEncodedBytesCount(upsertBuffer[key]);
|
|
15
|
+
else {
|
|
16
|
+
flushController.notifyBeforeAddMessage(estimatedMessageBytesCount);
|
|
17
|
+
bytesDiff = 0;
|
|
18
|
+
}
|
|
19
|
+
upsertBuffer[key] = serializedMessage;
|
|
20
|
+
flushController.notifyAfterAddMessage(bytesDiff);
|
|
21
|
+
} else {
|
|
22
|
+
flushController.notifyBeforeAddMessage(estimatedMessageBytesCount);
|
|
23
|
+
encoder.write(encoder.isEmpty ? serializedMessage : `\n${serializedMessage}`, (realMessageBytesCount) => {
|
|
24
|
+
flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function addOrUpdate(message, key) {
|
|
29
|
+
const serializedMessage = jsonStringify(message);
|
|
30
|
+
const estimatedMessageBytesCount = encoder.estimateEncodedBytesCount(serializedMessage);
|
|
31
|
+
if (estimatedMessageBytesCount >= MESSAGE_BYTES_LIMIT) {
|
|
32
|
+
display.warn(`Discarded a message whose size was bigger than the maximum allowed size ${MESSAGE_BYTES_LIMIT / ONE_KIBI_BYTE}KiB. ${MORE_DETAILS} ${DOCS_TROUBLESHOOTING}/#technical-limitations`);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
push(serializedMessage, estimatedMessageBytesCount, key);
|
|
36
|
+
}
|
|
37
|
+
function flush(event) {
|
|
38
|
+
const upsertMessages = objectValues(upsertBuffer).join("\n");
|
|
39
|
+
upsertBuffer = {};
|
|
40
|
+
const pageMightExit = isPageExitReason(event.reason);
|
|
41
|
+
const send = pageMightExit ? request.sendOnExit : request.send;
|
|
42
|
+
if (pageMightExit && encoder.isAsync) {
|
|
43
|
+
const encoderResult = encoder.finishSync();
|
|
44
|
+
if (encoderResult.outputBytesCount) send(formatPayloadFromEncoder(encoderResult));
|
|
45
|
+
const pendingMessages = [encoderResult.pendingData, upsertMessages].filter(Boolean).join("\n");
|
|
46
|
+
if (pendingMessages) send({
|
|
47
|
+
data: pendingMessages,
|
|
48
|
+
bytesCount: computeBytesCount(pendingMessages)
|
|
49
|
+
});
|
|
50
|
+
} else {
|
|
51
|
+
if (upsertMessages) encoder.write(encoder.isEmpty ? upsertMessages : `\n${upsertMessages}`);
|
|
52
|
+
encoder.finish((encoderResult) => {
|
|
53
|
+
send(formatPayloadFromEncoder(encoderResult));
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
flushController,
|
|
59
|
+
add: addOrUpdate,
|
|
60
|
+
upsert: addOrUpdate,
|
|
61
|
+
stop: flushSubscription.unsubscribe
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function formatPayloadFromEncoder(encoderResult) {
|
|
65
|
+
let data;
|
|
66
|
+
if (typeof encoderResult.output === "string") data = encoderResult.output;
|
|
67
|
+
else data = new Blob([encoderResult.output], { type: "text/plain" });
|
|
68
|
+
return {
|
|
69
|
+
data,
|
|
70
|
+
bytesCount: encoderResult.outputBytesCount,
|
|
71
|
+
encoding: encoderResult.encoding
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//#endregion
|
|
75
|
+
export { createBatch };
|
|
76
|
+
|
|
77
|
+
//# sourceMappingURL=batch.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.mjs","names":[],"sources":["../../src/transport/batch.ts"],"sourcesContent":["import { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../tools/display'\nimport type { Context } from '../tools/serialisation/context'\nimport { objectValues } from '../tools/utils/polyfills'\nimport { isPageExitReason } from '../browser/pageMayExitObservable'\nimport { jsonStringify } from '../tools/serialisation/jsonStringify'\nimport type { Encoder, EncoderResult } from '../tools/encoder'\nimport { computeBytesCount, ONE_KIBI_BYTE } from '../tools/utils/byteUtils'\nimport type { HttpRequest, Payload } from './httpRequest'\nimport type { FlushController, FlushEvent } from './flushController'\n\nexport const MESSAGE_BYTES_LIMIT = 256 * ONE_KIBI_BYTE\n\nexport interface Batch {\n flushController: FlushController\n add: (message: Context) => void\n upsert: (message: Context, key: string) => void\n stop: () => void\n}\n\nexport function createBatch({\n encoder,\n request,\n flushController,\n}: {\n encoder: Encoder\n request: HttpRequest\n flushController: FlushController\n}): Batch {\n let upsertBuffer: { [key: string]: string } = {}\n const flushSubscription = flushController.flushObservable.subscribe((event) => flush(event))\n\n function push(serializedMessage: string, estimatedMessageBytesCount: number, key?: string) {\n if (key !== undefined) {\n let bytesDiff: number\n if (upsertBuffer[key] !== undefined) {\n bytesDiff = estimatedMessageBytesCount - encoder.estimateEncodedBytesCount(upsertBuffer[key])\n } else {\n flushController.notifyBeforeAddMessage(estimatedMessageBytesCount)\n bytesDiff = 0\n }\n upsertBuffer[key] = serializedMessage\n flushController.notifyAfterAddMessage(bytesDiff)\n } else {\n flushController.notifyBeforeAddMessage(estimatedMessageBytesCount)\n encoder.write(encoder.isEmpty ? serializedMessage : `\\n${serializedMessage}`, (realMessageBytesCount) => {\n flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount)\n })\n }\n }\n\n function addOrUpdate(message: Context, key?: string) {\n const serializedMessage = jsonStringify(message)!\n\n const estimatedMessageBytesCount = encoder.estimateEncodedBytesCount(serializedMessage)\n\n if (estimatedMessageBytesCount >= MESSAGE_BYTES_LIMIT) {\n display.warn(\n `Discarded a message whose size was bigger than the maximum allowed size ${MESSAGE_BYTES_LIMIT / ONE_KIBI_BYTE}KiB. ${MORE_DETAILS} ${DOCS_TROUBLESHOOTING}/#technical-limitations`\n )\n return\n }\n\n push(serializedMessage, estimatedMessageBytesCount, key)\n }\n\n function flush(event: FlushEvent) {\n const upsertMessages = objectValues(upsertBuffer).join('\\n')\n upsertBuffer = {}\n\n const pageMightExit = isPageExitReason(event.reason)\n const send = pageMightExit ? request.sendOnExit : request.send\n\n if (\n pageMightExit &&\n // Note: checking that the encoder is async is not strictly needed, but it's an optimization:\n // if the encoder is async we need to send two requests in some cases (one for encoded data\n // and the other for non-encoded data). But if it's not async, we don't have to worry about\n // it and always send a single request.\n encoder.isAsync\n ) {\n const encoderResult = encoder.finishSync()\n\n // Send encoded messages\n if (encoderResult.outputBytesCount) {\n send(formatPayloadFromEncoder(encoderResult))\n }\n\n // Send messages that are not yet encoded at this point\n const pendingMessages = [encoderResult.pendingData, upsertMessages].filter(Boolean).join('\\n')\n if (pendingMessages) {\n send({\n data: pendingMessages,\n bytesCount: computeBytesCount(pendingMessages),\n })\n }\n } else {\n if (upsertMessages) {\n encoder.write(encoder.isEmpty ? upsertMessages : `\\n${upsertMessages}`)\n }\n encoder.finish((encoderResult) => {\n send(formatPayloadFromEncoder(encoderResult))\n })\n }\n }\n\n return {\n flushController,\n add: addOrUpdate,\n upsert: addOrUpdate,\n stop: flushSubscription.unsubscribe,\n }\n}\n\nfunction formatPayloadFromEncoder(encoderResult: EncoderResult): Payload {\n let data: string | Blob\n if (typeof encoderResult.output === 'string') {\n data = encoderResult.output\n } else {\n data = new Blob([encoderResult.output], {\n // This will set the 'Content-Type: text/plain' header. Reasoning:\n // * The intake rejects the request if there is no content type.\n // * The browser will issue CORS preflight requests if we set it to 'application/json', which\n // could induce higher intake load (and maybe has other impacts).\n // * Also it's not quite JSON, since we are concatenating multiple JSON objects separated by\n // new lines.\n type: 'text/plain',\n })\n }\n\n return {\n data,\n bytesCount: encoderResult.outputBytesCount,\n encoding: encoderResult.encoding,\n }\n}\n"],"mappings":";;;;;;AAUA,MAAa,sBAAsB,MAAM;AASzC,SAAgB,YAAY,EAC1B,SACA,SACA,mBAKQ;CACR,IAAI,eAA0C,CAAC;CAC/C,MAAM,oBAAoB,gBAAgB,gBAAgB,WAAW,UAAU,MAAM,KAAK,CAAC;CAE3F,SAAS,KAAK,mBAA2B,4BAAoC,KAAc;EACzF,IAAI,QAAQ,KAAA,GAAW;GACrB,IAAI;GACJ,IAAI,aAAa,SAAS,KAAA,GACxB,YAAY,6BAA6B,QAAQ,0BAA0B,aAAa,IAAI;QACvF;IACL,gBAAgB,uBAAuB,0BAA0B;IACjE,YAAY;GACd;GACA,aAAa,OAAO;GACpB,gBAAgB,sBAAsB,SAAS;EACjD,OAAO;GACL,gBAAgB,uBAAuB,0BAA0B;GACjE,QAAQ,MAAM,QAAQ,UAAU,oBAAoB,KAAK,sBAAsB,0BAA0B;IACvG,gBAAgB,sBAAsB,wBAAwB,0BAA0B;GAC1F,CAAC;EACH;CACF;CAEA,SAAS,YAAY,SAAkB,KAAc;EACnD,MAAM,oBAAoB,cAAc,OAAO;EAE/C,MAAM,6BAA6B,QAAQ,0BAA0B,iBAAiB;EAEtF,IAAI,8BAA8B,qBAAqB;GACrD,QAAQ,KACN,2EAA2E,sBAAsB,cAAc,OAAO,aAAa,GAAG,qBAAqB,wBAC7J;GACA;EACF;EAEA,KAAK,mBAAmB,4BAA4B,GAAG;CACzD;CAEA,SAAS,MAAM,OAAmB;EAChC,MAAM,iBAAiB,aAAa,YAAY,CAAC,CAAC,KAAK,IAAI;EAC3D,eAAe,CAAC;EAEhB,MAAM,gBAAgB,iBAAiB,MAAM,MAAM;EACnD,MAAM,OAAO,gBAAgB,QAAQ,aAAa,QAAQ;EAE1D,IACE,iBAKA,QAAQ,SACR;GACA,MAAM,gBAAgB,QAAQ,WAAW;GAGzC,IAAI,cAAc,kBAChB,KAAK,yBAAyB,aAAa,CAAC;GAI9C,MAAM,kBAAkB,CAAC,cAAc,aAAa,cAAc,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,IAAI;GAC7F,IAAI,iBACF,KAAK;IACH,MAAM;IACN,YAAY,kBAAkB,eAAe;GAC/C,CAAC;EAEL,OAAO;GACL,IAAI,gBACF,QAAQ,MAAM,QAAQ,UAAU,iBAAiB,KAAK,gBAAgB;GAExE,QAAQ,QAAQ,kBAAkB;IAChC,KAAK,yBAAyB,aAAa,CAAC;GAC9C,CAAC;EACH;CACF;CAEA,OAAO;EACL;EACA,KAAK;EACL,QAAQ;EACR,MAAM,kBAAkB;CAC1B;AACF;AAEA,SAAS,yBAAyB,eAAuC;CACvE,IAAI;CACJ,IAAI,OAAO,cAAc,WAAW,UAClC,OAAO,cAAc;MAErB,OAAO,IAAI,KAAK,CAAC,cAAc,MAAM,GAAG,EAOtC,MAAM,aACR,CAAC;CAGH,OAAO;EACL;EACA,YAAY,cAAc;EAC1B,UAAU,cAAc;CAC1B;AACF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { display } from "../tools/display.mjs";
|
|
2
|
+
import { globalObject } from "../tools/globalObject.mjs";
|
|
3
|
+
//#region src/transport/eventBridge.ts
|
|
4
|
+
let BridgeCapability = /* @__PURE__ */ function(BridgeCapability) {
|
|
5
|
+
BridgeCapability["RECORDS"] = "records";
|
|
6
|
+
BridgeCapability["PROFILES"] = "profiles";
|
|
7
|
+
return BridgeCapability;
|
|
8
|
+
}({});
|
|
9
|
+
function getEventBridge() {
|
|
10
|
+
const eventBridgeGlobal = getEventBridgeGlobal();
|
|
11
|
+
if (!eventBridgeGlobal) return;
|
|
12
|
+
return {
|
|
13
|
+
getCapabilities() {
|
|
14
|
+
return JSON.parse(eventBridgeGlobal.getCapabilities?.() || "[]");
|
|
15
|
+
},
|
|
16
|
+
getPrivacyLevel() {
|
|
17
|
+
return eventBridgeGlobal.getPrivacyLevel?.();
|
|
18
|
+
},
|
|
19
|
+
getIsTraceSampled() {
|
|
20
|
+
return JSON.parse(eventBridgeGlobal.getIsTraceSampled?.() || "null");
|
|
21
|
+
},
|
|
22
|
+
getAllowedWebViewHosts() {
|
|
23
|
+
return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());
|
|
24
|
+
},
|
|
25
|
+
send(eventType, event, viewId) {
|
|
26
|
+
const view = viewId ? { id: viewId } : void 0;
|
|
27
|
+
eventBridgeGlobal.send(JSON.stringify({
|
|
28
|
+
eventType,
|
|
29
|
+
event,
|
|
30
|
+
view
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function bridgeSupports(capability) {
|
|
36
|
+
const bridge = getEventBridge();
|
|
37
|
+
return !!bridge && bridge.getCapabilities().includes(capability);
|
|
38
|
+
}
|
|
39
|
+
function canUseEventBridge(currentHost = globalObject.location?.hostname) {
|
|
40
|
+
return getEventBridge()?.getAllowedWebViewHosts().some((entry) => matchesHostEntry(currentHost, entry)) ?? false;
|
|
41
|
+
}
|
|
42
|
+
function matchesHostEntry(host, entry) {
|
|
43
|
+
if (!entry.includes("*")) return host === entry || host.endsWith(`.${entry}`);
|
|
44
|
+
const parts = entry.split("*");
|
|
45
|
+
if (parts.length !== 2) {
|
|
46
|
+
display.error(`Invalid WebView host pattern "${entry}": only one wildcard (*) is supported.`);
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
const [prefix, suffix] = parts;
|
|
50
|
+
return host.length > prefix.length + suffix.length && host.startsWith(prefix) && host.endsWith(suffix);
|
|
51
|
+
}
|
|
52
|
+
function getEventBridgeGlobal() {
|
|
53
|
+
return globalObject.DatadogEventBridge;
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
export { BridgeCapability, bridgeSupports, canUseEventBridge, getEventBridge };
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=eventBridge.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventBridge.mjs","names":[],"sources":["../../src/transport/eventBridge.ts"],"sourcesContent":["import { display } from '../tools/display'\nimport { globalObject } from '../tools/globalObject'\nimport type { DefaultPrivacyLevel } from '../domain/configuration'\n\nexport interface BrowserWindowWithEventBridge {\n DatadogEventBridge?: DatadogEventBridge\n}\n\nexport interface DatadogEventBridge {\n getCapabilities?(): string\n getPrivacyLevel?(): DefaultPrivacyLevel\n getIsTraceSampled?(): 'true' | 'false' | 'null'\n getAllowedWebViewHosts(): string\n send(msg: string): void\n}\n\nexport const enum BridgeCapability {\n RECORDS = 'records',\n PROFILES = 'profiles',\n}\n\nexport function getEventBridge<T, E>() {\n const eventBridgeGlobal = getEventBridgeGlobal()\n\n if (!eventBridgeGlobal) {\n return\n }\n\n return {\n getCapabilities() {\n return JSON.parse(eventBridgeGlobal.getCapabilities?.() || '[]') as BridgeCapability[]\n },\n getPrivacyLevel() {\n return eventBridgeGlobal.getPrivacyLevel?.()\n },\n getIsTraceSampled() {\n return JSON.parse(eventBridgeGlobal.getIsTraceSampled?.() || 'null') as boolean | null\n },\n getAllowedWebViewHosts() {\n return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts()) as string[]\n },\n send(eventType: T, event: E, viewId?: string) {\n const view = viewId ? { id: viewId } : undefined\n eventBridgeGlobal.send(JSON.stringify({ eventType, event, view }))\n },\n }\n}\n\nexport function bridgeSupports(capability: BridgeCapability): boolean {\n const bridge = getEventBridge()\n return !!bridge && bridge.getCapabilities().includes(capability)\n}\n\nexport function canUseEventBridge(currentHost = globalObject.location?.hostname): boolean {\n const bridge = getEventBridge()\n return bridge?.getAllowedWebViewHosts().some((entry) => matchesHostEntry(currentHost, entry)) ?? false\n}\n\nexport function matchesHostEntry(host: string, entry: string): boolean {\n if (!entry.includes('*')) {\n return host === entry || host.endsWith(`.${entry}`)\n }\n const parts = entry.split('*')\n if (parts.length !== 2) {\n display.error(`Invalid WebView host pattern \"${entry}\": only one wildcard (*) is supported.`)\n return false\n }\n const [prefix, suffix] = parts\n return host.length > prefix.length + suffix.length && host.startsWith(prefix) && host.endsWith(suffix)\n}\n\nfunction getEventBridgeGlobal() {\n return (globalObject as BrowserWindowWithEventBridge).DatadogEventBridge\n}\n"],"mappings":";;;AAgBA,IAAkB,mBAAX,yBAAA,kBAAA;CACL,iBAAA,aAAA;CACA,iBAAA,cAAA;;AACF,EAAA,CAAA,CAAA;AAEA,SAAgB,iBAAuB;CACrC,MAAM,oBAAoB,qBAAqB;CAE/C,IAAI,CAAC,mBACH;CAGF,OAAO;EACL,kBAAkB;GAChB,OAAO,KAAK,MAAM,kBAAkB,kBAAkB,KAAK,IAAI;EACjE;EACA,kBAAkB;GAChB,OAAO,kBAAkB,kBAAkB;EAC7C;EACA,oBAAoB;GAClB,OAAO,KAAK,MAAM,kBAAkB,oBAAoB,KAAK,MAAM;EACrE;EACA,yBAAyB;GACvB,OAAO,KAAK,MAAM,kBAAkB,uBAAuB,CAAC;EAC9D;EACA,KAAK,WAAc,OAAU,QAAiB;GAC5C,MAAM,OAAO,SAAS,EAAE,IAAI,OAAO,IAAI,KAAA;GACvC,kBAAkB,KAAK,KAAK,UAAU;IAAE;IAAW;IAAO;GAAK,CAAC,CAAC;EACnE;CACF;AACF;AAEA,SAAgB,eAAe,YAAuC;CACpE,MAAM,SAAS,eAAe;CAC9B,OAAO,CAAC,CAAC,UAAU,OAAO,gBAAgB,CAAC,CAAC,SAAS,UAAU;AACjE;AAEA,SAAgB,kBAAkB,cAAc,aAAa,UAAU,UAAmB;CAExF,OADe,eACH,CAAC,EAAE,uBAAuB,CAAC,CAAC,MAAM,UAAU,iBAAiB,aAAa,KAAK,CAAC,KAAK;AACnG;AAEA,SAAgB,iBAAiB,MAAc,OAAwB;CACrE,IAAI,CAAC,MAAM,SAAS,GAAG,GACrB,OAAO,SAAS,SAAS,KAAK,SAAS,IAAI,OAAO;CAEpD,MAAM,QAAQ,MAAM,MAAM,GAAG;CAC7B,IAAI,MAAM,WAAW,GAAG;EACtB,QAAQ,MAAM,iCAAiC,MAAM,uCAAuC;EAC5F,OAAO;CACT;CACA,MAAM,CAAC,QAAQ,UAAU;CACzB,OAAO,KAAK,SAAS,OAAO,SAAS,OAAO,UAAU,KAAK,WAAW,MAAM,KAAK,KAAK,SAAS,MAAM;AACvG;AAEA,SAAS,uBAAuB;CAC9B,OAAQ,aAA8C;AACxD"}
|