@scalebun-release/web 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +57 -0
- package/dist/bootstrap/FeatureRegistry.d.ts +44 -0
- package/dist/bootstrap/FeatureRegistry.d.ts.map +1 -0
- package/dist/bootstrap/FeatureRegistry.js +85 -0
- package/dist/bootstrap/FeatureRegistry.js.map +1 -0
- package/dist/bootstrap/SDKBootstrapper.d.ts +37 -0
- package/dist/bootstrap/SDKBootstrapper.d.ts.map +1 -0
- package/dist/bootstrap/SDKBootstrapper.js +346 -0
- package/dist/bootstrap/SDKBootstrapper.js.map +1 -0
- package/dist/browser.d.ts +51 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +86 -0
- package/dist/browser.js.map +1 -0
- package/dist/config/endpoints.d.ts +12 -0
- package/dist/config/endpoints.d.ts.map +1 -0
- package/dist/config/endpoints.js +12 -0
- package/dist/config/endpoints.js.map +1 -0
- package/dist/config/schema.d.ts +120 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +117 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/core/breadcrumbs.d.ts +56 -0
- package/dist/core/breadcrumbs.d.ts.map +1 -0
- package/dist/core/breadcrumbs.js +141 -0
- package/dist/core/breadcrumbs.js.map +1 -0
- package/dist/core/capabilities.d.ts +38 -0
- package/dist/core/capabilities.d.ts.map +1 -0
- package/dist/core/capabilities.js +78 -0
- package/dist/core/capabilities.js.map +1 -0
- package/dist/core/consent.d.ts +17 -0
- package/dist/core/consent.d.ts.map +1 -0
- package/dist/core/consent.js +38 -0
- package/dist/core/consent.js.map +1 -0
- package/dist/core/csp.d.ts +31 -0
- package/dist/core/csp.d.ts.map +1 -0
- package/dist/core/csp.js +74 -0
- package/dist/core/csp.js.map +1 -0
- package/dist/core/evalContext.d.ts +7 -0
- package/dist/core/evalContext.d.ts.map +1 -0
- package/dist/core/evalContext.js +22 -0
- package/dist/core/evalContext.js.map +1 -0
- package/dist/core/ids.d.ts +6 -0
- package/dist/core/ids.d.ts.map +1 -0
- package/dist/core/ids.js +35 -0
- package/dist/core/ids.js.map +1 -0
- package/dist/core/index.d.ts +16 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +16 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lifecycle.d.ts +4 -0
- package/dist/core/lifecycle.d.ts.map +1 -0
- package/dist/core/lifecycle.js +24 -0
- package/dist/core/lifecycle.js.map +1 -0
- package/dist/core/logger.d.ts +12 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +14 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/observe.d.ts +3 -0
- package/dist/core/observe.d.ts.map +1 -0
- package/dist/core/observe.js +22 -0
- package/dist/core/observe.js.map +1 -0
- package/dist/core/pageContext.d.ts +13 -0
- package/dist/core/pageContext.d.ts.map +1 -0
- package/dist/core/pageContext.js +90 -0
- package/dist/core/pageContext.js.map +1 -0
- package/dist/core/prune.d.ts +31 -0
- package/dist/core/prune.d.ts.map +1 -0
- package/dist/core/prune.js +112 -0
- package/dist/core/prune.js.map +1 -0
- package/dist/core/redact.d.ts +15 -0
- package/dist/core/redact.d.ts.map +1 -0
- package/dist/core/redact.js +72 -0
- package/dist/core/redact.js.map +1 -0
- package/dist/core/replayCoord.d.ts +22 -0
- package/dist/core/replayCoord.d.ts.map +1 -0
- package/dist/core/replayCoord.js +20 -0
- package/dist/core/replayCoord.js.map +1 -0
- package/dist/core/retry.d.ts +25 -0
- package/dist/core/retry.d.ts.map +1 -0
- package/dist/core/retry.js +44 -0
- package/dist/core/retry.js.map +1 -0
- package/dist/core/runtime.d.ts +28 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +67 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/scrollDepth.d.ts +48 -0
- package/dist/core/scrollDepth.d.ts.map +1 -0
- package/dist/core/scrollDepth.js +63 -0
- package/dist/core/scrollDepth.js.map +1 -0
- package/dist/core/uiStateReader.d.ts +35 -0
- package/dist/core/uiStateReader.d.ts.map +1 -0
- package/dist/core/uiStateReader.js +47 -0
- package/dist/core/uiStateReader.js.map +1 -0
- package/dist/core/version.generated.d.ts +9 -0
- package/dist/core/version.generated.d.ts.map +1 -0
- package/dist/core/version.generated.js +9 -0
- package/dist/core/version.generated.js.map +1 -0
- package/dist/debug/index.d.ts +6 -0
- package/dist/debug/index.d.ts.map +1 -0
- package/dist/debug/index.js +2 -0
- package/dist/debug/index.js.map +1 -0
- package/dist/features/analytics/AnalyticsFeature.d.ts +123 -0
- package/dist/features/analytics/AnalyticsFeature.d.ts.map +1 -0
- package/dist/features/analytics/AnalyticsFeature.js +785 -0
- package/dist/features/analytics/AnalyticsFeature.js.map +1 -0
- package/dist/features/analytics/autocapture.d.ts +13 -0
- package/dist/features/analytics/autocapture.d.ts.map +1 -0
- package/dist/features/analytics/autocapture.js +436 -0
- package/dist/features/analytics/autocapture.js.map +1 -0
- package/dist/features/analytics/governance.d.ts +15 -0
- package/dist/features/analytics/governance.d.ts.map +1 -0
- package/dist/features/analytics/governance.js +30 -0
- package/dist/features/analytics/governance.js.map +1 -0
- package/dist/features/analytics/revenue.d.ts +77 -0
- package/dist/features/analytics/revenue.d.ts.map +1 -0
- package/dist/features/analytics/revenue.js +56 -0
- package/dist/features/analytics/revenue.js.map +1 -0
- package/dist/features/analytics/sampler.d.ts +2 -0
- package/dist/features/analytics/sampler.d.ts.map +1 -0
- package/dist/features/analytics/sampler.js +24 -0
- package/dist/features/analytics/sampler.js.map +1 -0
- package/dist/features/analytics/subscription.d.ts +35 -0
- package/dist/features/analytics/subscription.d.ts.map +1 -0
- package/dist/features/analytics/subscription.js +95 -0
- package/dist/features/analytics/subscription.js.map +1 -0
- package/dist/features/attention/index.d.ts +29 -0
- package/dist/features/attention/index.d.ts.map +1 -0
- package/dist/features/attention/index.js +128 -0
- package/dist/features/attention/index.js.map +1 -0
- package/dist/features/bugreport/BugReportFeature.d.ts +37 -0
- package/dist/features/bugreport/BugReportFeature.d.ts.map +1 -0
- package/dist/features/bugreport/BugReportFeature.js +56 -0
- package/dist/features/bugreport/BugReportFeature.js.map +1 -0
- package/dist/features/bugreport/collect.d.ts +33 -0
- package/dist/features/bugreport/collect.d.ts.map +1 -0
- package/dist/features/bugreport/collect.js +30 -0
- package/dist/features/bugreport/collect.js.map +1 -0
- package/dist/features/bugreport/widget.d.ts +40 -0
- package/dist/features/bugreport/widget.d.ts.map +1 -0
- package/dist/features/bugreport/widget.js +145 -0
- package/dist/features/bugreport/widget.js.map +1 -0
- package/dist/features/coach/CoachmarkFeature.d.ts +78 -0
- package/dist/features/coach/CoachmarkFeature.d.ts.map +1 -0
- package/dist/features/coach/CoachmarkFeature.js +161 -0
- package/dist/features/coach/CoachmarkFeature.js.map +1 -0
- package/dist/features/coach/anchor.d.ts +32 -0
- package/dist/features/coach/anchor.d.ts.map +1 -0
- package/dist/features/coach/anchor.js +128 -0
- package/dist/features/coach/anchor.js.map +1 -0
- package/dist/features/coach/observers.d.ts +17 -0
- package/dist/features/coach/observers.d.ts.map +1 -0
- package/dist/features/coach/observers.js +49 -0
- package/dist/features/coach/observers.js.map +1 -0
- package/dist/features/coach/overlay.d.ts +15 -0
- package/dist/features/coach/overlay.d.ts.map +1 -0
- package/dist/features/coach/overlay.js +205 -0
- package/dist/features/coach/overlay.js.map +1 -0
- package/dist/features/coach/position.d.ts +9 -0
- package/dist/features/coach/position.d.ts.map +1 -0
- package/dist/features/coach/position.js +83 -0
- package/dist/features/coach/position.js.map +1 -0
- package/dist/features/coach/predicate.d.ts +10 -0
- package/dist/features/coach/predicate.d.ts.map +1 -0
- package/dist/features/coach/predicate.js +36 -0
- package/dist/features/coach/predicate.js.map +1 -0
- package/dist/features/coach/tour.d.ts +55 -0
- package/dist/features/coach/tour.d.ts.map +1 -0
- package/dist/features/coach/tour.js +181 -0
- package/dist/features/coach/tour.js.map +1 -0
- package/dist/features/coach/types.d.ts +161 -0
- package/dist/features/coach/types.d.ts.map +1 -0
- package/dist/features/coach/types.js +2 -0
- package/dist/features/coach/types.js.map +1 -0
- package/dist/features/coach/wait.d.ts +34 -0
- package/dist/features/coach/wait.d.ts.map +1 -0
- package/dist/features/coach/wait.js +107 -0
- package/dist/features/coach/wait.js.map +1 -0
- package/dist/features/config/ConfigFeature.d.ts +117 -0
- package/dist/features/config/ConfigFeature.d.ts.map +1 -0
- package/dist/features/config/ConfigFeature.js +437 -0
- package/dist/features/config/ConfigFeature.js.map +1 -0
- package/dist/features/config/bucketing.d.ts +20 -0
- package/dist/features/config/bucketing.d.ts.map +1 -0
- package/dist/features/config/bucketing.js +37 -0
- package/dist/features/config/bucketing.js.map +1 -0
- package/dist/features/config/configStore.d.ts +11 -0
- package/dist/features/config/configStore.d.ts.map +1 -0
- package/dist/features/config/configStore.js +66 -0
- package/dist/features/config/configStore.js.map +1 -0
- package/dist/features/config/targeting.d.ts +11 -0
- package/dist/features/config/targeting.d.ts.map +1 -0
- package/dist/features/config/targeting.js +57 -0
- package/dist/features/config/targeting.js.map +1 -0
- package/dist/features/config/types.d.ts +100 -0
- package/dist/features/config/types.d.ts.map +1 -0
- package/dist/features/config/types.js +9 -0
- package/dist/features/config/types.js.map +1 -0
- package/dist/features/console/ConsoleFeature.d.ts +31 -0
- package/dist/features/console/ConsoleFeature.d.ts.map +1 -0
- package/dist/features/console/ConsoleFeature.js +98 -0
- package/dist/features/console/ConsoleFeature.js.map +1 -0
- package/dist/features/console/normalize.d.ts +18 -0
- package/dist/features/console/normalize.d.ts.map +1 -0
- package/dist/features/console/normalize.js +64 -0
- package/dist/features/console/normalize.js.map +1 -0
- package/dist/features/console/serialize.d.ts +24 -0
- package/dist/features/console/serialize.d.ts.map +1 -0
- package/dist/features/console/serialize.js +99 -0
- package/dist/features/console/serialize.js.map +1 -0
- package/dist/features/console/throttle.d.ts +27 -0
- package/dist/features/console/throttle.d.ts.map +1 -0
- package/dist/features/console/throttle.js +37 -0
- package/dist/features/console/throttle.js.map +1 -0
- package/dist/features/crash/CrashFeature.d.ts +46 -0
- package/dist/features/crash/CrashFeature.d.ts.map +1 -0
- package/dist/features/crash/CrashFeature.js +173 -0
- package/dist/features/crash/CrashFeature.js.map +1 -0
- package/dist/features/crash/liveness.d.ts +30 -0
- package/dist/features/crash/liveness.d.ts.map +1 -0
- package/dist/features/crash/liveness.js +131 -0
- package/dist/features/crash/liveness.js.map +1 -0
- package/dist/features/engage/EngageFeature.d.ts +67 -0
- package/dist/features/engage/EngageFeature.d.ts.map +1 -0
- package/dist/features/engage/EngageFeature.js +243 -0
- package/dist/features/engage/EngageFeature.js.map +1 -0
- package/dist/features/engage/attachments.d.ts +24 -0
- package/dist/features/engage/attachments.d.ts.map +1 -0
- package/dist/features/engage/attachments.js +209 -0
- package/dist/features/engage/attachments.js.map +1 -0
- package/dist/features/engage/gameLogic.d.ts +60 -0
- package/dist/features/engage/gameLogic.d.ts.map +1 -0
- package/dist/features/engage/gameLogic.js +213 -0
- package/dist/features/engage/gameLogic.js.map +1 -0
- package/dist/features/engage/gameResolver.d.ts +35 -0
- package/dist/features/engage/gameResolver.d.ts.map +1 -0
- package/dist/features/engage/gameResolver.js +81 -0
- package/dist/features/engage/gameResolver.js.map +1 -0
- package/dist/features/engage/gameTypes.d.ts +76 -0
- package/dist/features/engage/gameTypes.d.ts.map +1 -0
- package/dist/features/engage/gameTypes.js +17 -0
- package/dist/features/engage/gameTypes.js.map +1 -0
- package/dist/features/engage/inappSlots.d.ts +39 -0
- package/dist/features/engage/inappSlots.d.ts.map +1 -0
- package/dist/features/engage/inappSlots.js +50 -0
- package/dist/features/engage/inappSlots.js.map +1 -0
- package/dist/features/engage/normalize.d.ts +11 -0
- package/dist/features/engage/normalize.d.ts.map +1 -0
- package/dist/features/engage/normalize.js +210 -0
- package/dist/features/engage/normalize.js.map +1 -0
- package/dist/features/engage/richInApp.d.ts +64 -0
- package/dist/features/engage/richInApp.d.ts.map +1 -0
- package/dist/features/engage/richInApp.js +1082 -0
- package/dist/features/engage/richInApp.js.map +1 -0
- package/dist/features/engage/runtime.d.ts +89 -0
- package/dist/features/engage/runtime.d.ts.map +1 -0
- package/dist/features/engage/runtime.js +364 -0
- package/dist/features/engage/runtime.js.map +1 -0
- package/dist/features/engage/shakeDetector.d.ts +6 -0
- package/dist/features/engage/shakeDetector.d.ts.map +1 -0
- package/dist/features/engage/shakeDetector.js +105 -0
- package/dist/features/engage/shakeDetector.js.map +1 -0
- package/dist/features/engage/theme.d.ts +129 -0
- package/dist/features/engage/theme.d.ts.map +1 -0
- package/dist/features/engage/theme.js +270 -0
- package/dist/features/engage/theme.js.map +1 -0
- package/dist/features/engage/throttle.d.ts +41 -0
- package/dist/features/engage/throttle.d.ts.map +1 -0
- package/dist/features/engage/throttle.js +220 -0
- package/dist/features/engage/throttle.js.map +1 -0
- package/dist/features/engage/transport.d.ts +62 -0
- package/dist/features/engage/transport.d.ts.map +1 -0
- package/dist/features/engage/transport.js +185 -0
- package/dist/features/engage/transport.js.map +1 -0
- package/dist/features/engage/triggerEngine.d.ts +39 -0
- package/dist/features/engage/triggerEngine.d.ts.map +1 -0
- package/dist/features/engage/triggerEngine.js +105 -0
- package/dist/features/engage/triggerEngine.js.map +1 -0
- package/dist/features/engage/types.d.ts +271 -0
- package/dist/features/engage/types.d.ts.map +1 -0
- package/dist/features/engage/types.js +3 -0
- package/dist/features/engage/types.js.map +1 -0
- package/dist/features/engage/widget/InAppWidget.d.ts +10 -0
- package/dist/features/engage/widget/InAppWidget.d.ts.map +1 -0
- package/dist/features/engage/widget/InAppWidget.js +137 -0
- package/dist/features/engage/widget/InAppWidget.js.map +1 -0
- package/dist/features/engage/widget/SurveyWidget.d.ts +11 -0
- package/dist/features/engage/widget/SurveyWidget.d.ts.map +1 -0
- package/dist/features/engage/widget/SurveyWidget.js +547 -0
- package/dist/features/engage/widget/SurveyWidget.js.map +1 -0
- package/dist/features/errors/ErrorsFeature.d.ts +62 -0
- package/dist/features/errors/ErrorsFeature.d.ts.map +1 -0
- package/dist/features/errors/ErrorsFeature.js +209 -0
- package/dist/features/errors/ErrorsFeature.js.map +1 -0
- package/dist/features/errors/causes.d.ts +15 -0
- package/dist/features/errors/causes.d.ts.map +1 -0
- package/dist/features/errors/causes.js +29 -0
- package/dist/features/errors/causes.js.map +1 -0
- package/dist/features/errors/dedup.d.ts +28 -0
- package/dist/features/errors/dedup.d.ts.map +1 -0
- package/dist/features/errors/dedup.js +42 -0
- package/dist/features/errors/dedup.js.map +1 -0
- package/dist/features/errors/group/fingerprint.d.ts +13 -0
- package/dist/features/errors/group/fingerprint.d.ts.map +1 -0
- package/dist/features/errors/group/fingerprint.js +45 -0
- package/dist/features/errors/group/fingerprint.js.map +1 -0
- package/dist/features/errors/lazy.d.ts +8 -0
- package/dist/features/errors/lazy.d.ts.map +1 -0
- package/dist/features/errors/lazy.js +8 -0
- package/dist/features/errors/lazy.js.map +1 -0
- package/dist/features/errors/normalize.d.ts +26 -0
- package/dist/features/errors/normalize.d.ts.map +1 -0
- package/dist/features/errors/normalize.js +58 -0
- package/dist/features/errors/normalize.js.map +1 -0
- package/dist/features/errors/parse/stacktrace.d.ts +13 -0
- package/dist/features/errors/parse/stacktrace.d.ts.map +1 -0
- package/dist/features/errors/parse/stacktrace.js +85 -0
- package/dist/features/errors/parse/stacktrace.js.map +1 -0
- package/dist/features/errors/redact.d.ts +7 -0
- package/dist/features/errors/redact.d.ts.map +1 -0
- package/dist/features/errors/redact.js +39 -0
- package/dist/features/errors/redact.js.map +1 -0
- package/dist/features/errors/sampling.d.ts +2 -0
- package/dist/features/errors/sampling.d.ts.map +1 -0
- package/dist/features/errors/sampling.js +24 -0
- package/dist/features/errors/sampling.js.map +1 -0
- package/dist/features/errors/scope.d.ts +26 -0
- package/dist/features/errors/scope.d.ts.map +1 -0
- package/dist/features/errors/scope.js +30 -0
- package/dist/features/errors/scope.js.map +1 -0
- package/dist/features/exit-intent/ExitIntentFeature.d.ts +16 -0
- package/dist/features/exit-intent/ExitIntentFeature.d.ts.map +1 -0
- package/dist/features/exit-intent/ExitIntentFeature.js +25 -0
- package/dist/features/exit-intent/ExitIntentFeature.js.map +1 -0
- package/dist/features/exit-intent/engine.d.ts +127 -0
- package/dist/features/exit-intent/engine.d.ts.map +1 -0
- package/dist/features/exit-intent/engine.js +227 -0
- package/dist/features/exit-intent/engine.js.map +1 -0
- package/dist/features/forms/index.d.ts +83 -0
- package/dist/features/forms/index.d.ts.map +1 -0
- package/dist/features/forms/index.js +405 -0
- package/dist/features/forms/index.js.map +1 -0
- package/dist/features/inapp/InApp2Feature.d.ts +24 -0
- package/dist/features/inapp/InApp2Feature.d.ts.map +1 -0
- package/dist/features/inapp/InApp2Feature.js +44 -0
- package/dist/features/inapp/InApp2Feature.js.map +1 -0
- package/dist/features/inapp/a11y/focus.d.ts +24 -0
- package/dist/features/inapp/a11y/focus.d.ts.map +1 -0
- package/dist/features/inapp/a11y/focus.js +112 -0
- package/dist/features/inapp/a11y/focus.js.map +1 -0
- package/dist/features/inapp/anchor/controller.d.ts +64 -0
- package/dist/features/inapp/anchor/controller.d.ts.map +1 -0
- package/dist/features/inapp/anchor/controller.js +155 -0
- package/dist/features/inapp/anchor/controller.js.map +1 -0
- package/dist/features/inapp/api.d.ts +28 -0
- package/dist/features/inapp/api.d.ts.map +1 -0
- package/dist/features/inapp/api.js +41 -0
- package/dist/features/inapp/api.js.map +1 -0
- package/dist/features/inapp/blocks/blocks.d.ts +65 -0
- package/dist/features/inapp/blocks/blocks.d.ts.map +1 -0
- package/dist/features/inapp/blocks/blocks.js +196 -0
- package/dist/features/inapp/blocks/blocks.js.map +1 -0
- package/dist/features/inapp/blocks/feedback.d.ts +13 -0
- package/dist/features/inapp/blocks/feedback.d.ts.map +1 -0
- package/dist/features/inapp/blocks/feedback.js +154 -0
- package/dist/features/inapp/blocks/feedback.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/carousel.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/carousel.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/carousel.js +67 -0
- package/dist/features/inapp/blocks/heavy/carousel.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/chart.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/chart.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/chart.js +83 -0
- package/dist/features/inapp/blocks/heavy/chart.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/code.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/code.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/code.js +47 -0
- package/dist/features/inapp/blocks/heavy/code.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/confetti.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/confetti.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/confetti.js +76 -0
- package/dist/features/inapp/blocks/heavy/confetti.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/countdown.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/countdown.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/countdown.js +59 -0
- package/dist/features/inapp/blocks/heavy/countdown.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/index.d.ts +11 -0
- package/dist/features/inapp/blocks/heavy/index.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/index.js +45 -0
- package/dist/features/inapp/blocks/heavy/index.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/markdown.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/markdown.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/markdown.js +76 -0
- package/dist/features/inapp/blocks/heavy/markdown.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/productgrid.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/productgrid.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/productgrid.js +46 -0
- package/dist/features/inapp/blocks/heavy/productgrid.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/qr.d.ts +10 -0
- package/dist/features/inapp/blocks/heavy/qr.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/qr.js +69 -0
- package/dist/features/inapp/blocks/heavy/qr.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/scratch.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/scratch.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/scratch.js +141 -0
- package/dist/features/inapp/blocks/heavy/scratch.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/slot.d.ts +8 -0
- package/dist/features/inapp/blocks/heavy/slot.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/slot.js +96 -0
- package/dist/features/inapp/blocks/heavy/slot.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/spinwheel.d.ts +9 -0
- package/dist/features/inapp/blocks/heavy/spinwheel.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/spinwheel.js +127 -0
- package/dist/features/inapp/blocks/heavy/spinwheel.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/steps.d.ts +27 -0
- package/dist/features/inapp/blocks/heavy/steps.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/steps.js +135 -0
- package/dist/features/inapp/blocks/heavy/steps.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/streak.d.ts +18 -0
- package/dist/features/inapp/blocks/heavy/streak.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/streak.js +52 -0
- package/dist/features/inapp/blocks/heavy/streak.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/table.d.ts +7 -0
- package/dist/features/inapp/blocks/heavy/table.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/table.js +30 -0
- package/dist/features/inapp/blocks/heavy/table.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/unavailable.d.ts +28 -0
- package/dist/features/inapp/blocks/heavy/unavailable.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/unavailable.js +33 -0
- package/dist/features/inapp/blocks/heavy/unavailable.js.map +1 -0
- package/dist/features/inapp/blocks/heavy/video.d.ts +7 -0
- package/dist/features/inapp/blocks/heavy/video.d.ts.map +1 -0
- package/dist/features/inapp/blocks/heavy/video.js +38 -0
- package/dist/features/inapp/blocks/heavy/video.js.map +1 -0
- package/dist/features/inapp/blocks/styles.d.ts +7 -0
- package/dist/features/inapp/blocks/styles.d.ts.map +1 -0
- package/dist/features/inapp/blocks/styles.js +225 -0
- package/dist/features/inapp/blocks/styles.js.map +1 -0
- package/dist/features/inapp/center/bridge.d.ts +12 -0
- package/dist/features/inapp/center/bridge.d.ts.map +1 -0
- package/dist/features/inapp/center/bridge.js +59 -0
- package/dist/features/inapp/center/bridge.js.map +1 -0
- package/dist/features/inapp/center/panel.d.ts +20 -0
- package/dist/features/inapp/center/panel.d.ts.map +1 -0
- package/dist/features/inapp/center/panel.js +228 -0
- package/dist/features/inapp/center/panel.js.map +1 -0
- package/dist/features/inapp/center/store.d.ts +50 -0
- package/dist/features/inapp/center/store.d.ts.map +1 -0
- package/dist/features/inapp/center/store.js +188 -0
- package/dist/features/inapp/center/store.js.map +1 -0
- package/dist/features/inapp/center/sync.d.ts +32 -0
- package/dist/features/inapp/center/sync.d.ts.map +1 -0
- package/dist/features/inapp/center/sync.js +60 -0
- package/dist/features/inapp/center/sync.js.map +1 -0
- package/dist/features/inapp/center/types.d.ts +46 -0
- package/dist/features/inapp/center/types.d.ts.map +1 -0
- package/dist/features/inapp/center/types.js +5 -0
- package/dist/features/inapp/center/types.js.map +1 -0
- package/dist/features/inapp/core/analytics.d.ts +35 -0
- package/dist/features/inapp/core/analytics.d.ts.map +1 -0
- package/dist/features/inapp/core/analytics.js +70 -0
- package/dist/features/inapp/core/analytics.js.map +1 -0
- package/dist/features/inapp/core/compat.d.ts +28 -0
- package/dist/features/inapp/core/compat.d.ts.map +1 -0
- package/dist/features/inapp/core/compat.js +104 -0
- package/dist/features/inapp/core/compat.js.map +1 -0
- package/dist/features/inapp/core/debugOverlay.d.ts +5 -0
- package/dist/features/inapp/core/debugOverlay.d.ts.map +1 -0
- package/dist/features/inapp/core/debugOverlay.js +79 -0
- package/dist/features/inapp/core/debugOverlay.js.map +1 -0
- package/dist/features/inapp/core/engine.d.ts +72 -0
- package/dist/features/inapp/core/engine.d.ts.map +1 -0
- package/dist/features/inapp/core/engine.js +248 -0
- package/dist/features/inapp/core/engine.js.map +1 -0
- package/dist/features/inapp/core/environment.d.ts +21 -0
- package/dist/features/inapp/core/environment.d.ts.map +1 -0
- package/dist/features/inapp/core/environment.js +57 -0
- package/dist/features/inapp/core/environment.js.map +1 -0
- package/dist/features/inapp/core/host.d.ts +53 -0
- package/dist/features/inapp/core/host.d.ts.map +1 -0
- package/dist/features/inapp/core/host.js +243 -0
- package/dist/features/inapp/core/host.js.map +1 -0
- package/dist/features/inapp/core/keyboard.d.ts +27 -0
- package/dist/features/inapp/core/keyboard.d.ts.map +1 -0
- package/dist/features/inapp/core/keyboard.js +69 -0
- package/dist/features/inapp/core/keyboard.js.map +1 -0
- package/dist/features/inapp/core/metrics.d.ts +73 -0
- package/dist/features/inapp/core/metrics.d.ts.map +1 -0
- package/dist/features/inapp/core/metrics.js +125 -0
- package/dist/features/inapp/core/metrics.js.map +1 -0
- package/dist/features/inapp/core/migration.d.ts +32 -0
- package/dist/features/inapp/core/migration.d.ts.map +1 -0
- package/dist/features/inapp/core/migration.js +28 -0
- package/dist/features/inapp/core/migration.js.map +1 -0
- package/dist/features/inapp/core/orchestrator.d.ts +77 -0
- package/dist/features/inapp/core/orchestrator.d.ts.map +1 -0
- package/dist/features/inapp/core/orchestrator.js +144 -0
- package/dist/features/inapp/core/orchestrator.js.map +1 -0
- package/dist/features/inapp/core/respect.d.ts +51 -0
- package/dist/features/inapp/core/respect.d.ts.map +1 -0
- package/dist/features/inapp/core/respect.js +78 -0
- package/dist/features/inapp/core/respect.js.map +1 -0
- package/dist/features/inapp/core/slots.d.ts +19 -0
- package/dist/features/inapp/core/slots.d.ts.map +1 -0
- package/dist/features/inapp/core/slots.js +53 -0
- package/dist/features/inapp/core/slots.js.map +1 -0
- package/dist/features/inapp/core/targeting.d.ts +85 -0
- package/dist/features/inapp/core/targeting.d.ts.map +1 -0
- package/dist/features/inapp/core/targeting.js +255 -0
- package/dist/features/inapp/core/targeting.js.map +1 -0
- package/dist/features/inapp/core/transport.d.ts +66 -0
- package/dist/features/inapp/core/transport.d.ts.map +1 -0
- package/dist/features/inapp/core/transport.js +154 -0
- package/dist/features/inapp/core/transport.js.map +1 -0
- package/dist/features/inapp/core/triggers.d.ts +94 -0
- package/dist/features/inapp/core/triggers.d.ts.map +1 -0
- package/dist/features/inapp/core/triggers.js +368 -0
- package/dist/features/inapp/core/triggers.js.map +1 -0
- package/dist/features/inapp/inappContract.web.d.ts +47 -0
- package/dist/features/inapp/inappContract.web.d.ts.map +1 -0
- package/dist/features/inapp/inappContract.web.js +230 -0
- package/dist/features/inapp/inappContract.web.js.map +1 -0
- package/dist/features/inapp/index.d.ts +23 -0
- package/dist/features/inapp/index.d.ts.map +1 -0
- package/dist/features/inapp/index.js +23 -0
- package/dist/features/inapp/index.js.map +1 -0
- package/dist/features/inapp/registry.canonical.hash.d.ts +7 -0
- package/dist/features/inapp/registry.canonical.hash.d.ts.map +1 -0
- package/dist/features/inapp/registry.canonical.hash.js +7 -0
- package/dist/features/inapp/registry.canonical.hash.js.map +1 -0
- package/dist/features/inapp/registry.web.canonical.d.ts +21 -0
- package/dist/features/inapp/registry.web.canonical.d.ts.map +1 -0
- package/dist/features/inapp/registry.web.canonical.js +136 -0
- package/dist/features/inapp/registry.web.canonical.js.map +1 -0
- package/dist/features/inapp/registry.web.catalog.d.ts +12 -0
- package/dist/features/inapp/registry.web.catalog.d.ts.map +1 -0
- package/dist/features/inapp/registry.web.catalog.js +208 -0
- package/dist/features/inapp/registry.web.catalog.js.map +1 -0
- package/dist/features/inapp/surfaces/banner.d.ts +7 -0
- package/dist/features/inapp/surfaces/banner.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/banner.js +30 -0
- package/dist/features/inapp/surfaces/banner.js.map +1 -0
- package/dist/features/inapp/surfaces/checklist.d.ts +13 -0
- package/dist/features/inapp/surfaces/checklist.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/checklist.js +127 -0
- package/dist/features/inapp/surfaces/checklist.js.map +1 -0
- package/dist/features/inapp/surfaces/coachmark.d.ts +10 -0
- package/dist/features/inapp/surfaces/coachmark.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/coachmark.js +95 -0
- package/dist/features/inapp/surfaces/coachmark.js.map +1 -0
- package/dist/features/inapp/surfaces/hotspot.d.ts +8 -0
- package/dist/features/inapp/surfaces/hotspot.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/hotspot.js +91 -0
- package/dist/features/inapp/surfaces/hotspot.js.map +1 -0
- package/dist/features/inapp/surfaces/inline.d.ts +13 -0
- package/dist/features/inapp/surfaces/inline.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/inline.js +78 -0
- package/dist/features/inapp/surfaces/inline.js.map +1 -0
- package/dist/features/inapp/surfaces/launcher.d.ts +9 -0
- package/dist/features/inapp/surfaces/launcher.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/launcher.js +54 -0
- package/dist/features/inapp/surfaces/launcher.js.map +1 -0
- package/dist/features/inapp/surfaces/modal.d.ts +8 -0
- package/dist/features/inapp/surfaces/modal.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/modal.js +70 -0
- package/dist/features/inapp/surfaces/modal.js.map +1 -0
- package/dist/features/inapp/surfaces/mount.d.ts +19 -0
- package/dist/features/inapp/surfaces/mount.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/mount.js +29 -0
- package/dist/features/inapp/surfaces/mount.js.map +1 -0
- package/dist/features/inapp/surfaces/palette.d.ts +9 -0
- package/dist/features/inapp/surfaces/palette.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/palette.js +127 -0
- package/dist/features/inapp/surfaces/palette.js.map +1 -0
- package/dist/features/inapp/surfaces/panel.d.ts +14 -0
- package/dist/features/inapp/surfaces/panel.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/panel.js +91 -0
- package/dist/features/inapp/surfaces/panel.js.map +1 -0
- package/dist/features/inapp/surfaces/popover.d.ts +10 -0
- package/dist/features/inapp/surfaces/popover.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/popover.js +69 -0
- package/dist/features/inapp/surfaces/popover.js.map +1 -0
- package/dist/features/inapp/surfaces/render.d.ts +34 -0
- package/dist/features/inapp/surfaces/render.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/render.js +56 -0
- package/dist/features/inapp/surfaces/render.js.map +1 -0
- package/dist/features/inapp/surfaces/slideover.d.ts +9 -0
- package/dist/features/inapp/surfaces/slideover.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/slideover.js +144 -0
- package/dist/features/inapp/surfaces/slideover.js.map +1 -0
- package/dist/features/inapp/surfaces/styles.d.ts +7 -0
- package/dist/features/inapp/surfaces/styles.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/styles.js +235 -0
- package/dist/features/inapp/surfaces/styles.js.map +1 -0
- package/dist/features/inapp/surfaces/surface.d.ts +69 -0
- package/dist/features/inapp/surfaces/surface.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/surface.js +80 -0
- package/dist/features/inapp/surfaces/surface.js.map +1 -0
- package/dist/features/inapp/surfaces/takeover.d.ts +9 -0
- package/dist/features/inapp/surfaces/takeover.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/takeover.js +60 -0
- package/dist/features/inapp/surfaces/takeover.js.map +1 -0
- package/dist/features/inapp/surfaces/toast.d.ts +7 -0
- package/dist/features/inapp/surfaces/toast.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/toast.js +48 -0
- package/dist/features/inapp/surfaces/toast.js.map +1 -0
- package/dist/features/inapp/surfaces/toolbar.d.ts +8 -0
- package/dist/features/inapp/surfaces/toolbar.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/toolbar.js +65 -0
- package/dist/features/inapp/surfaces/toolbar.js.map +1 -0
- package/dist/features/inapp/surfaces/tour.d.ts +14 -0
- package/dist/features/inapp/surfaces/tour.d.ts.map +1 -0
- package/dist/features/inapp/surfaces/tour.js +202 -0
- package/dist/features/inapp/surfaces/tour.js.map +1 -0
- package/dist/features/inapp/types.d.ts +165 -0
- package/dist/features/inapp/types.d.ts.map +1 -0
- package/dist/features/inapp/types.js +12 -0
- package/dist/features/inapp/types.js.map +1 -0
- package/dist/features/inbox/InboxFeature.d.ts +57 -0
- package/dist/features/inbox/InboxFeature.d.ts.map +1 -0
- package/dist/features/inbox/InboxFeature.js +225 -0
- package/dist/features/inbox/InboxFeature.js.map +1 -0
- package/dist/features/inbox/runtime.d.ts +67 -0
- package/dist/features/inbox/runtime.d.ts.map +1 -0
- package/dist/features/inbox/runtime.js +376 -0
- package/dist/features/inbox/runtime.js.map +1 -0
- package/dist/features/inbox/store.d.ts +37 -0
- package/dist/features/inbox/store.d.ts.map +1 -0
- package/dist/features/inbox/store.js +149 -0
- package/dist/features/inbox/store.js.map +1 -0
- package/dist/features/inbox/sync.d.ts +49 -0
- package/dist/features/inbox/sync.d.ts.map +1 -0
- package/dist/features/inbox/sync.js +131 -0
- package/dist/features/inbox/sync.js.map +1 -0
- package/dist/features/inbox/types.d.ts +275 -0
- package/dist/features/inbox/types.d.ts.map +1 -0
- package/dist/features/inbox/types.js +42 -0
- package/dist/features/inbox/types.js.map +1 -0
- package/dist/features/inbox/widget/InboxWidget.d.ts +16 -0
- package/dist/features/inbox/widget/InboxWidget.d.ts.map +1 -0
- package/dist/features/inbox/widget/InboxWidget.js +609 -0
- package/dist/features/inbox/widget/InboxWidget.js.map +1 -0
- package/dist/features/index.d.ts +21 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +2 -0
- package/dist/features/index.js.map +1 -0
- package/dist/features/journey/InteractionTracker.d.ts +87 -0
- package/dist/features/journey/InteractionTracker.d.ts.map +1 -0
- package/dist/features/journey/InteractionTracker.js +466 -0
- package/dist/features/journey/InteractionTracker.js.map +1 -0
- package/dist/features/journey/JourneyFeature.d.ts +18 -0
- package/dist/features/journey/JourneyFeature.d.ts.map +1 -0
- package/dist/features/journey/JourneyFeature.js +71 -0
- package/dist/features/journey/JourneyFeature.js.map +1 -0
- package/dist/features/journey/NavigationTracker.d.ts +16 -0
- package/dist/features/journey/NavigationTracker.d.ts.map +1 -0
- package/dist/features/journey/NavigationTracker.js +92 -0
- package/dist/features/journey/NavigationTracker.js.map +1 -0
- package/dist/features/journey/friction.d.ts +28 -0
- package/dist/features/journey/friction.d.ts.map +1 -0
- package/dist/features/journey/friction.js +64 -0
- package/dist/features/journey/friction.js.map +1 -0
- package/dist/features/journey/positionContext.d.ts +30 -0
- package/dist/features/journey/positionContext.d.ts.map +1 -0
- package/dist/features/journey/positionContext.js +116 -0
- package/dist/features/journey/positionContext.js.map +1 -0
- package/dist/features/journey/uiState.d.ts +44 -0
- package/dist/features/journey/uiState.d.ts.map +1 -0
- package/dist/features/journey/uiState.js +158 -0
- package/dist/features/journey/uiState.js.map +1 -0
- package/dist/features/manifest.d.ts +41 -0
- package/dist/features/manifest.d.ts.map +1 -0
- package/dist/features/manifest.js +93 -0
- package/dist/features/manifest.js.map +1 -0
- package/dist/features/network/NetworkFeature.d.ts +60 -0
- package/dist/features/network/NetworkFeature.d.ts.map +1 -0
- package/dist/features/network/NetworkFeature.js +260 -0
- package/dist/features/network/NetworkFeature.js.map +1 -0
- package/dist/features/network/capture/body.d.ts +31 -0
- package/dist/features/network/capture/body.d.ts.map +1 -0
- package/dist/features/network/capture/body.js +81 -0
- package/dist/features/network/capture/body.js.map +1 -0
- package/dist/features/network/classify.d.ts +21 -0
- package/dist/features/network/classify.d.ts.map +1 -0
- package/dist/features/network/classify.js +50 -0
- package/dist/features/network/classify.js.map +1 -0
- package/dist/features/network/dedup.d.ts +36 -0
- package/dist/features/network/dedup.d.ts.map +1 -0
- package/dist/features/network/dedup.js +68 -0
- package/dist/features/network/dedup.js.map +1 -0
- package/dist/features/network/fetchInterceptor.d.ts +20 -0
- package/dist/features/network/fetchInterceptor.d.ts.map +1 -0
- package/dist/features/network/fetchInterceptor.js +158 -0
- package/dist/features/network/fetchInterceptor.js.map +1 -0
- package/dist/features/network/intercept/beacon.d.ts +14 -0
- package/dist/features/network/intercept/beacon.d.ts.map +1 -0
- package/dist/features/network/intercept/beacon.js +56 -0
- package/dist/features/network/intercept/beacon.js.map +1 -0
- package/dist/features/network/intercept/sse.d.ts +16 -0
- package/dist/features/network/intercept/sse.d.ts.map +1 -0
- package/dist/features/network/intercept/sse.js +74 -0
- package/dist/features/network/intercept/sse.js.map +1 -0
- package/dist/features/network/intercept/streams.d.ts +23 -0
- package/dist/features/network/intercept/streams.d.ts.map +1 -0
- package/dist/features/network/intercept/streams.js +25 -0
- package/dist/features/network/intercept/streams.js.map +1 -0
- package/dist/features/network/intercept/websocket.d.ts +14 -0
- package/dist/features/network/intercept/websocket.d.ts.map +1 -0
- package/dist/features/network/intercept/websocket.js +97 -0
- package/dist/features/network/intercept/websocket.js.map +1 -0
- package/dist/features/network/lazy.d.ts +23 -0
- package/dist/features/network/lazy.d.ts.map +1 -0
- package/dist/features/network/lazy.js +65 -0
- package/dist/features/network/lazy.js.map +1 -0
- package/dist/features/network/normalize.d.ts +9 -0
- package/dist/features/network/normalize.d.ts.map +1 -0
- package/dist/features/network/normalize.js +49 -0
- package/dist/features/network/normalize.js.map +1 -0
- package/dist/features/network/parse/graphql.d.ts +17 -0
- package/dist/features/network/parse/graphql.d.ts.map +1 -0
- package/dist/features/network/parse/graphql.js +106 -0
- package/dist/features/network/parse/graphql.js.map +1 -0
- package/dist/features/network/parse/url.d.ts +12 -0
- package/dist/features/network/parse/url.d.ts.map +1 -0
- package/dist/features/network/parse/url.js +52 -0
- package/dist/features/network/parse/url.js.map +1 -0
- package/dist/features/network/sampler.d.ts +21 -0
- package/dist/features/network/sampler.d.ts.map +1 -0
- package/dist/features/network/sampler.js +25 -0
- package/dist/features/network/sampler.js.map +1 -0
- package/dist/features/network/size.d.ts +21 -0
- package/dist/features/network/size.d.ts.map +1 -0
- package/dist/features/network/size.js +63 -0
- package/dist/features/network/size.js.map +1 -0
- package/dist/features/network/thirdParty.d.ts +95 -0
- package/dist/features/network/thirdParty.d.ts.map +1 -0
- package/dist/features/network/thirdParty.js +126 -0
- package/dist/features/network/thirdParty.js.map +1 -0
- package/dist/features/network/timing.d.ts +41 -0
- package/dist/features/network/timing.d.ts.map +1 -0
- package/dist/features/network/timing.js +134 -0
- package/dist/features/network/timing.js.map +1 -0
- package/dist/features/network/tracing.d.ts +18 -0
- package/dist/features/network/tracing.d.ts.map +1 -0
- package/dist/features/network/tracing.js +46 -0
- package/dist/features/network/tracing.js.map +1 -0
- package/dist/features/network/types.d.ts +75 -0
- package/dist/features/network/types.d.ts.map +1 -0
- package/dist/features/network/types.js +2 -0
- package/dist/features/network/types.js.map +1 -0
- package/dist/features/network/xhrInterceptor.d.ts +12 -0
- package/dist/features/network/xhrInterceptor.d.ts.map +1 -0
- package/dist/features/network/xhrInterceptor.js +108 -0
- package/dist/features/network/xhrInterceptor.js.map +1 -0
- package/dist/features/performance/PerformanceFeature.d.ts +76 -0
- package/dist/features/performance/PerformanceFeature.d.ts.map +1 -0
- package/dist/features/performance/PerformanceFeature.js +265 -0
- package/dist/features/performance/PerformanceFeature.js.map +1 -0
- package/dist/features/performance/jankTap.d.ts +23 -0
- package/dist/features/performance/jankTap.d.ts.map +1 -0
- package/dist/features/performance/jankTap.js +20 -0
- package/dist/features/performance/jankTap.js.map +1 -0
- package/dist/features/performance/longTasks.d.ts +14 -0
- package/dist/features/performance/longTasks.d.ts.map +1 -0
- package/dist/features/performance/longTasks.js +55 -0
- package/dist/features/performance/longTasks.js.map +1 -0
- package/dist/features/performance/normalize.d.ts +15 -0
- package/dist/features/performance/normalize.d.ts.map +1 -0
- package/dist/features/performance/normalize.js +30 -0
- package/dist/features/performance/normalize.js.map +1 -0
- package/dist/features/performance/resources.d.ts +19 -0
- package/dist/features/performance/resources.d.ts.map +1 -0
- package/dist/features/performance/resources.js +78 -0
- package/dist/features/performance/resources.js.map +1 -0
- package/dist/features/performance/sampler.d.ts +10 -0
- package/dist/features/performance/sampler.d.ts.map +1 -0
- package/dist/features/performance/sampler.js +23 -0
- package/dist/features/performance/sampler.js.map +1 -0
- package/dist/features/performance/spa.d.ts +2 -0
- package/dist/features/performance/spa.d.ts.map +1 -0
- package/dist/features/performance/spa.js +40 -0
- package/dist/features/performance/spa.js.map +1 -0
- package/dist/features/performance/throttle.d.ts +21 -0
- package/dist/features/performance/throttle.d.ts.map +1 -0
- package/dist/features/performance/throttle.js +26 -0
- package/dist/features/performance/throttle.js.map +1 -0
- package/dist/features/performance/trace/context.d.ts +17 -0
- package/dist/features/performance/trace/context.d.ts.map +1 -0
- package/dist/features/performance/trace/context.js +33 -0
- package/dist/features/performance/trace/context.js.map +1 -0
- package/dist/features/performance/trace/index.d.ts +7 -0
- package/dist/features/performance/trace/index.d.ts.map +1 -0
- package/dist/features/performance/trace/index.js +6 -0
- package/dist/features/performance/trace/index.js.map +1 -0
- package/dist/features/performance/trace/pageload.d.ts +3 -0
- package/dist/features/performance/trace/pageload.d.ts.map +1 -0
- package/dist/features/performance/trace/pageload.js +34 -0
- package/dist/features/performance/trace/pageload.js.map +1 -0
- package/dist/features/performance/trace/transaction.d.ts +61 -0
- package/dist/features/performance/trace/transaction.d.ts.map +1 -0
- package/dist/features/performance/trace/transaction.js +90 -0
- package/dist/features/performance/trace/transaction.js.map +1 -0
- package/dist/features/performance/trace/types.d.ts +23 -0
- package/dist/features/performance/trace/types.d.ts.map +1 -0
- package/dist/features/performance/trace/types.js +10 -0
- package/dist/features/performance/trace/types.js.map +1 -0
- package/dist/features/performance/traces.d.ts +36 -0
- package/dist/features/performance/traces.d.ts.map +1 -0
- package/dist/features/performance/traces.js +50 -0
- package/dist/features/performance/traces.js.map +1 -0
- package/dist/features/profiler/ProfilerFeature.d.ts +28 -0
- package/dist/features/profiler/ProfilerFeature.d.ts.map +1 -0
- package/dist/features/profiler/ProfilerFeature.js +82 -0
- package/dist/features/profiler/ProfilerFeature.js.map +1 -0
- package/dist/features/profiler/capture.d.ts +8 -0
- package/dist/features/profiler/capture.d.ts.map +1 -0
- package/dist/features/profiler/capture.js +21 -0
- package/dist/features/profiler/capture.js.map +1 -0
- package/dist/features/push/PushFeature.d.ts +120 -0
- package/dist/features/push/PushFeature.d.ts.map +1 -0
- package/dist/features/push/PushFeature.js +319 -0
- package/dist/features/push/PushFeature.js.map +1 -0
- package/dist/features/push/diagnostics.d.ts +55 -0
- package/dist/features/push/diagnostics.d.ts.map +1 -0
- package/dist/features/push/diagnostics.js +383 -0
- package/dist/features/push/diagnostics.js.map +1 -0
- package/dist/features/push/pushState.d.ts +58 -0
- package/dist/features/push/pushState.d.ts.map +1 -0
- package/dist/features/push/pushState.js +75 -0
- package/dist/features/push/pushState.js.map +1 -0
- package/dist/features/push/softAsk.d.ts +68 -0
- package/dist/features/push/softAsk.d.ts.map +1 -0
- package/dist/features/push/softAsk.js +142 -0
- package/dist/features/push/softAsk.js.map +1 -0
- package/dist/features/replay/ReplayFeature.d.ts +52 -0
- package/dist/features/replay/ReplayFeature.d.ts.map +1 -0
- package/dist/features/replay/ReplayFeature.js +282 -0
- package/dist/features/replay/ReplayFeature.js.map +1 -0
- package/dist/features/replay/engine/canvas.d.ts +45 -0
- package/dist/features/replay/engine/canvas.d.ts.map +1 -0
- package/dist/features/replay/engine/canvas.js +122 -0
- package/dist/features/replay/engine/canvas.js.map +1 -0
- package/dist/features/replay/engine/crossOrigin.d.ts +23 -0
- package/dist/features/replay/engine/crossOrigin.d.ts.map +1 -0
- package/dist/features/replay/engine/crossOrigin.js +108 -0
- package/dist/features/replay/engine/crossOrigin.js.map +1 -0
- package/dist/features/replay/engine/cssom.d.ts +31 -0
- package/dist/features/replay/engine/cssom.d.ts.map +1 -0
- package/dist/features/replay/engine/cssom.js +128 -0
- package/dist/features/replay/engine/cssom.js.map +1 -0
- package/dist/features/replay/engine/iframe.d.ts +65 -0
- package/dist/features/replay/engine/iframe.d.ts.map +1 -0
- package/dist/features/replay/engine/iframe.js +186 -0
- package/dist/features/replay/engine/iframe.js.map +1 -0
- package/dist/features/replay/engine/interactions.d.ts +172 -0
- package/dist/features/replay/engine/interactions.d.ts.map +1 -0
- package/dist/features/replay/engine/interactions.js +437 -0
- package/dist/features/replay/engine/interactions.js.map +1 -0
- package/dist/features/replay/engine/mutations.d.ts +65 -0
- package/dist/features/replay/engine/mutations.d.ts.map +1 -0
- package/dist/features/replay/engine/mutations.js +304 -0
- package/dist/features/replay/engine/mutations.js.map +1 -0
- package/dist/features/replay/engine/nodeRegistry.d.ts +23 -0
- package/dist/features/replay/engine/nodeRegistry.d.ts.map +1 -0
- package/dist/features/replay/engine/nodeRegistry.js +51 -0
- package/dist/features/replay/engine/nodeRegistry.js.map +1 -0
- package/dist/features/replay/engine/player.d.ts +11 -0
- package/dist/features/replay/engine/player.d.ts.map +1 -0
- package/dist/features/replay/engine/player.js +284 -0
- package/dist/features/replay/engine/player.js.map +1 -0
- package/dist/features/replay/engine/rebuild.d.ts +8 -0
- package/dist/features/replay/engine/rebuild.d.ts.map +1 -0
- package/dist/features/replay/engine/rebuild.js +46 -0
- package/dist/features/replay/engine/rebuild.js.map +1 -0
- package/dist/features/replay/engine/replayWorker.d.ts +33 -0
- package/dist/features/replay/engine/replayWorker.d.ts.map +1 -0
- package/dist/features/replay/engine/replayWorker.js +175 -0
- package/dist/features/replay/engine/replayWorker.js.map +1 -0
- package/dist/features/replay/engine/resources.d.ts +52 -0
- package/dist/features/replay/engine/resources.d.ts.map +1 -0
- package/dist/features/replay/engine/resources.js +132 -0
- package/dist/features/replay/engine/resources.js.map +1 -0
- package/dist/features/replay/engine/snapshot.d.ts +103 -0
- package/dist/features/replay/engine/snapshot.d.ts.map +1 -0
- package/dist/features/replay/engine/snapshot.js +459 -0
- package/dist/features/replay/engine/snapshot.js.map +1 -0
- package/dist/features/replay/engine/traverse.d.ts +19 -0
- package/dist/features/replay/engine/traverse.d.ts.map +1 -0
- package/dist/features/replay/engine/traverse.js +39 -0
- package/dist/features/replay/engine/traverse.js.map +1 -0
- package/dist/features/replay/engine/types.d.ts +149 -0
- package/dist/features/replay/engine/types.d.ts.map +1 -0
- package/dist/features/replay/engine/types.js +6 -0
- package/dist/features/replay/engine/types.js.map +1 -0
- package/dist/features/replay/engine/webglPatch.d.ts +26 -0
- package/dist/features/replay/engine/webglPatch.d.ts.map +1 -0
- package/dist/features/replay/engine/webglPatch.js +83 -0
- package/dist/features/replay/engine/webglPatch.js.map +1 -0
- package/dist/features/replay/lifecycle/adaptive.d.ts +38 -0
- package/dist/features/replay/lifecycle/adaptive.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/adaptive.js +90 -0
- package/dist/features/replay/lifecycle/adaptive.js.map +1 -0
- package/dist/features/replay/lifecycle/cadence.d.ts +35 -0
- package/dist/features/replay/lifecycle/cadence.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/cadence.js +149 -0
- package/dist/features/replay/lifecycle/cadence.js.map +1 -0
- package/dist/features/replay/lifecycle/deltaBatcher.d.ts +31 -0
- package/dist/features/replay/lifecycle/deltaBatcher.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/deltaBatcher.js +32 -0
- package/dist/features/replay/lifecycle/deltaBatcher.js.map +1 -0
- package/dist/features/replay/lifecycle/deviceSignals.d.ts +35 -0
- package/dist/features/replay/lifecycle/deviceSignals.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/deviceSignals.js +61 -0
- package/dist/features/replay/lifecycle/deviceSignals.js.map +1 -0
- package/dist/features/replay/lifecycle/offloadDomFrames.d.ts +69 -0
- package/dist/features/replay/lifecycle/offloadDomFrames.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/offloadDomFrames.js +107 -0
- package/dist/features/replay/lifecycle/offloadDomFrames.js.map +1 -0
- package/dist/features/replay/lifecycle/pii.d.ts +14 -0
- package/dist/features/replay/lifecycle/pii.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/pii.js +52 -0
- package/dist/features/replay/lifecycle/pii.js.map +1 -0
- package/dist/features/replay/lifecycle/recorder.d.ts +178 -0
- package/dist/features/replay/lifecycle/recorder.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/recorder.js +644 -0
- package/dist/features/replay/lifecycle/recorder.js.map +1 -0
- package/dist/features/replay/lifecycle/sampling.d.ts +28 -0
- package/dist/features/replay/lifecycle/sampling.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/sampling.js +31 -0
- package/dist/features/replay/lifecycle/sampling.js.map +1 -0
- package/dist/features/replay/lifecycle/segmentBuffer.d.ts +75 -0
- package/dist/features/replay/lifecycle/segmentBuffer.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/segmentBuffer.js +130 -0
- package/dist/features/replay/lifecycle/segmentBuffer.js.map +1 -0
- package/dist/features/replay/lifecycle/viewContext.d.ts +7 -0
- package/dist/features/replay/lifecycle/viewContext.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/viewContext.js +51 -0
- package/dist/features/replay/lifecycle/viewContext.js.map +1 -0
- package/dist/features/scroll/index.d.ts +33 -0
- package/dist/features/scroll/index.d.ts.map +1 -0
- package/dist/features/scroll/index.js +106 -0
- package/dist/features/scroll/index.js.map +1 -0
- package/dist/features/session/sessionManager.d.ts +41 -0
- package/dist/features/session/sessionManager.d.ts.map +1 -0
- package/dist/features/session/sessionManager.js +67 -0
- package/dist/features/session/sessionManager.js.map +1 -0
- package/dist/features/session/sessionStore.d.ts +137 -0
- package/dist/features/session/sessionStore.d.ts.map +1 -0
- package/dist/features/session/sessionStore.js +323 -0
- package/dist/features/session/sessionStore.js.map +1 -0
- package/dist/features/watchdog/WatchdogFeature.d.ts +23 -0
- package/dist/features/watchdog/WatchdogFeature.d.ts.map +1 -0
- package/dist/features/watchdog/WatchdogFeature.js +29 -0
- package/dist/features/watchdog/WatchdogFeature.js.map +1 -0
- package/dist/features/watchdog/collectors.d.ts +18 -0
- package/dist/features/watchdog/collectors.d.ts.map +1 -0
- package/dist/features/watchdog/collectors.js +107 -0
- package/dist/features/watchdog/collectors.js.map +1 -0
- package/dist/features/watchdog/config.d.ts +51 -0
- package/dist/features/watchdog/config.d.ts.map +1 -0
- package/dist/features/watchdog/config.js +28 -0
- package/dist/features/watchdog/config.js.map +1 -0
- package/dist/features/watchdog/engine.d.ts +22 -0
- package/dist/features/watchdog/engine.d.ts.map +1 -0
- package/dist/features/watchdog/engine.js +123 -0
- package/dist/features/watchdog/engine.js.map +1 -0
- package/dist/features/watchdog/incidents.d.ts +79 -0
- package/dist/features/watchdog/incidents.d.ts.map +1 -0
- package/dist/features/watchdog/incidents.js +204 -0
- package/dist/features/watchdog/incidents.js.map +1 -0
- package/dist/features/watchdog/rollup.d.ts +41 -0
- package/dist/features/watchdog/rollup.d.ts.map +1 -0
- package/dist/features/watchdog/rollup.js +76 -0
- package/dist/features/watchdog/rollup.js.map +1 -0
- package/dist/features/webVitals/WebVitalsFeature.d.ts +46 -0
- package/dist/features/webVitals/WebVitalsFeature.d.ts.map +1 -0
- package/dist/features/webVitals/WebVitalsFeature.js +252 -0
- package/dist/features/webVitals/WebVitalsFeature.js.map +1 -0
- package/dist/features/webVitals/attribution.d.ts +50 -0
- package/dist/features/webVitals/attribution.d.ts.map +1 -0
- package/dist/features/webVitals/attribution.js +186 -0
- package/dist/features/webVitals/attribution.js.map +1 -0
- package/dist/features/webVitals/observe.d.ts +6 -0
- package/dist/features/webVitals/observe.d.ts.map +1 -0
- package/dist/features/webVitals/observe.js +6 -0
- package/dist/features/webVitals/observe.js.map +1 -0
- package/dist/features/webVitals/vitals.d.ts +99 -0
- package/dist/features/webVitals/vitals.d.ts.map +1 -0
- package/dist/features/webVitals/vitals.js +166 -0
- package/dist/features/webVitals/vitals.js.map +1 -0
- package/dist/features/webperf/WebPerfFeature.d.ts +19 -0
- package/dist/features/webperf/WebPerfFeature.d.ts.map +1 -0
- package/dist/features/webperf/WebPerfFeature.js +48 -0
- package/dist/features/webperf/WebPerfFeature.js.map +1 -0
- package/dist/features/webperf/collectors.d.ts +3 -0
- package/dist/features/webperf/collectors.d.ts.map +1 -0
- package/dist/features/webperf/collectors.js +118 -0
- package/dist/features/webperf/collectors.js.map +1 -0
- package/dist/features/webperf/math.d.ts +12 -0
- package/dist/features/webperf/math.d.ts.map +1 -0
- package/dist/features/webperf/math.js +26 -0
- package/dist/features/webperf/math.js.map +1 -0
- package/dist/inapp.d.ts +6 -0
- package/dist/inapp.d.ts.map +1 -0
- package/dist/inapp.js +6 -0
- package/dist/inapp.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/index.d.ts +7 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +2 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/pipeline/index.d.ts +3 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +3 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/pipeline.d.ts +263 -0
- package/dist/pipeline/pipeline.d.ts.map +1 -0
- package/dist/pipeline/pipeline.js +783 -0
- package/dist/pipeline/pipeline.js.map +1 -0
- package/dist/public/ScaleBunFacade.d.ts +436 -0
- package/dist/public/ScaleBunFacade.d.ts.map +1 -0
- package/dist/public/ScaleBunFacade.js +857 -0
- package/dist/public/ScaleBunFacade.js.map +1 -0
- package/dist/public/index.d.ts +5 -0
- package/dist/public/index.d.ts.map +1 -0
- package/dist/public/index.js +4 -0
- package/dist/public/index.js.map +1 -0
- package/dist/public/typedTracker.d.ts +91 -0
- package/dist/public/typedTracker.d.ts.map +1 -0
- package/dist/public/typedTracker.js +60 -0
- package/dist/public/typedTracker.js.map +1 -0
- package/dist/scalebun-push-sw.js +236 -0
- package/dist/scalebun.min.js +717 -0
- package/dist/scalebun.min.js.map +7 -0
- package/dist/storage/idb.d.ts +16 -0
- package/dist/storage/idb.d.ts.map +1 -0
- package/dist/storage/idb.js +76 -0
- package/dist/storage/idb.js.map +1 -0
- package/dist/storage/index.d.ts +3 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +3 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/transport/gzip.d.ts +2 -0
- package/dist/transport/gzip.d.ts.map +1 -0
- package/dist/transport/gzip.js +20 -0
- package/dist/transport/gzip.js.map +1 -0
- package/dist/transport/httpClient.d.ts +156 -0
- package/dist/transport/httpClient.d.ts.map +1 -0
- package/dist/transport/httpClient.js +277 -0
- package/dist/transport/httpClient.js.map +1 -0
- package/dist/transport/index.d.ts +3 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +3 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/sign.d.ts +25 -0
- package/dist/transport/sign.d.ts.map +1 -0
- package/dist/transport/sign.js +58 -0
- package/dist/transport/sign.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeltaBatcher — the single packaging point for DOM-shaped delta ops (mutations, CSSOM, iframe
|
|
3
|
+
* mutations). Producers keep their own capture cadence (MutationRecorder serializes per rAF so node
|
|
4
|
+
* state is read close to the change; CssomRecorder coalesces per microtask) but no longer decide
|
|
5
|
+
* frame boundaries: they APPEND ops here, and one frame ships per `windowMs` window.
|
|
6
|
+
*
|
|
7
|
+
* Why: a frame is the unit of meaningful replay state, not the unit of browser scheduling. Before
|
|
8
|
+
* this, every rAF with DOM activity produced its own frame — a 60fps DOM animation became 60
|
|
9
|
+
* frames/sec, and a CSSOM change in the same tick as a DOM change shipped as a second envelope.
|
|
10
|
+
* Batching here caps the DOM lane at ~1000/windowMs frames/sec while losing NO ops — only the
|
|
11
|
+
* packaging changes. Ordering is preserved (ops are appended in arrival order and applied in order
|
|
12
|
+
* by the player), which is also what lets DOM and CSSOM ops share one frame safely.
|
|
13
|
+
*
|
|
14
|
+
* `flush()` is synchronous for the moments that need a hard boundary: before a checkpoint snapshot
|
|
15
|
+
* (pending ops must ship as deltas against the OLD keyframe) and before an immediate interaction
|
|
16
|
+
* frame (a click on a just-added node must not precede the mutation that adds it).
|
|
17
|
+
*/
|
|
18
|
+
import type { Mutation } from '../engine/types.js';
|
|
19
|
+
export declare class DeltaBatcher {
|
|
20
|
+
private readonly windowMs;
|
|
21
|
+
private readonly emit;
|
|
22
|
+
private pending;
|
|
23
|
+
private timer;
|
|
24
|
+
constructor(windowMs: number, emit: (mutations: Mutation[]) => void);
|
|
25
|
+
append(muts: Mutation[]): void;
|
|
26
|
+
/** Synchronously package everything pending into one frame (no-op when empty). */
|
|
27
|
+
flush(): void;
|
|
28
|
+
/** Flush the tail and stop — captured ops are never dropped on pause/teardown. */
|
|
29
|
+
dispose(): void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=deltaBatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deltaBatcher.d.ts","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/deltaBatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,qBAAa,YAAY;IAKrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IALvB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,KAAK,CAA8C;gBAGxC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,IAAI;IAGxD,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI;IAM9B,kFAAkF;IAClF,KAAK,IAAI,IAAI;IAWb,kFAAkF;IAClF,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export class DeltaBatcher {
|
|
2
|
+
constructor(windowMs, emit) {
|
|
3
|
+
this.windowMs = windowMs;
|
|
4
|
+
this.emit = emit;
|
|
5
|
+
this.pending = [];
|
|
6
|
+
this.timer = null;
|
|
7
|
+
}
|
|
8
|
+
append(muts) {
|
|
9
|
+
if (!muts.length)
|
|
10
|
+
return;
|
|
11
|
+
this.pending.push(...muts);
|
|
12
|
+
if (this.timer == null)
|
|
13
|
+
this.timer = setTimeout(() => this.flush(), this.windowMs);
|
|
14
|
+
}
|
|
15
|
+
/** Synchronously package everything pending into one frame (no-op when empty). */
|
|
16
|
+
flush() {
|
|
17
|
+
if (this.timer != null) {
|
|
18
|
+
clearTimeout(this.timer);
|
|
19
|
+
this.timer = null;
|
|
20
|
+
}
|
|
21
|
+
if (!this.pending.length)
|
|
22
|
+
return;
|
|
23
|
+
const batch = this.pending;
|
|
24
|
+
this.pending = [];
|
|
25
|
+
this.emit(batch);
|
|
26
|
+
}
|
|
27
|
+
/** Flush the tail and stop — captured ops are never dropped on pause/teardown. */
|
|
28
|
+
dispose() {
|
|
29
|
+
this.flush();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=deltaBatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deltaBatcher.js","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/deltaBatcher.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,YAAY;IAIvB,YACmB,QAAgB,EAChB,IAAqC;QADrC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,SAAI,GAAJ,IAAI,CAAiC;QALhD,YAAO,GAAe,EAAE,CAAC;QACzB,UAAK,GAAyC,IAAI,CAAC;IAKxD,CAAC;IAEJ,MAAM,CAAC,IAAgB;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrF,CAAC;IAED,kFAAkF;IAClF,KAAK;QACH,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED,kFAAkF;IAClF,OAAO;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cost/capability signals for replay egress decisions — all feature-detected + SSR-safe.
|
|
3
|
+
*
|
|
4
|
+
* Best-practice: respect the user's Save-Data preference (and slow / ultra-low-memory devices) by NOT
|
|
5
|
+
* streaming replay live over the network. Capture itself is NOT disabled — the session still records
|
|
6
|
+
* into the buffered pre-roll and flushes on signal (error/crash), so incident replay is preserved;
|
|
7
|
+
* only the continuous, bandwidth-heavy live upload is deferred.
|
|
8
|
+
*
|
|
9
|
+
* These are the ONLY device signals a browser exposes (battery/thermal are gone or never existed), so
|
|
10
|
+
* this is the web analog of the native SDK's SyncDecisionEngine.
|
|
11
|
+
*/
|
|
12
|
+
export interface NetworkHint {
|
|
13
|
+
/** The user turned on data-saver (Save-Data: on) — honor it. */
|
|
14
|
+
saveData: boolean;
|
|
15
|
+
/** effectiveType is 2g / slow-2g. */
|
|
16
|
+
slow: boolean;
|
|
17
|
+
effectiveType?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function networkHint(): NetworkHint;
|
|
20
|
+
/**
|
|
21
|
+
* True when the user is signalling "do not track / do not sell-or-share" via **Global Privacy
|
|
22
|
+
* Control** (`navigator.globalPrivacyControl === true`) or legacy **Do-Not-Track**
|
|
23
|
+
* (`navigator.doNotTrack === '1'` / `'yes'`, or `window.doNotTrack === '1'`). Feature-detected +
|
|
24
|
+
* SSR-safe. Consulted only when the host opts in via `privacy.respectDnt`.
|
|
25
|
+
*/
|
|
26
|
+
export declare function userOptedOutOfTracking(): boolean;
|
|
27
|
+
/** Approximate device RAM in GB (Chromium `navigator.deviceMemory`), or undefined when unsupported. */
|
|
28
|
+
export declare function deviceMemoryGB(): number | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* True when continuous live replay streaming should be deferred to buffered-only capture: the user
|
|
31
|
+
* asked to save data, the link is 2g/slow-2g, or the device is ultra-low-memory (≤1 GB). Returns
|
|
32
|
+
* false when no signal is available (feature-detect miss) — never over-restricts by default.
|
|
33
|
+
*/
|
|
34
|
+
export declare function shouldDeferHeavyEgress(): boolean;
|
|
35
|
+
//# sourceMappingURL=deviceSignals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceSignals.d.ts","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/deviceSignals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,MAAM,WAAW,WAAW;IAC1B,gEAAgE;IAChE,QAAQ,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,WAAW,IAAI,WAAW,CAQzC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAQhD;AAED,uGAAuG;AACvG,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAInD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAKhD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cost/capability signals for replay egress decisions — all feature-detected + SSR-safe.
|
|
3
|
+
*
|
|
4
|
+
* Best-practice: respect the user's Save-Data preference (and slow / ultra-low-memory devices) by NOT
|
|
5
|
+
* streaming replay live over the network. Capture itself is NOT disabled — the session still records
|
|
6
|
+
* into the buffered pre-roll and flushes on signal (error/crash), so incident replay is preserved;
|
|
7
|
+
* only the continuous, bandwidth-heavy live upload is deferred.
|
|
8
|
+
*
|
|
9
|
+
* These are the ONLY device signals a browser exposes (battery/thermal are gone or never existed), so
|
|
10
|
+
* this is the web analog of the native SDK's SyncDecisionEngine.
|
|
11
|
+
*/
|
|
12
|
+
function connection() {
|
|
13
|
+
if (typeof navigator === 'undefined')
|
|
14
|
+
return undefined;
|
|
15
|
+
return navigator.connection;
|
|
16
|
+
}
|
|
17
|
+
export function networkHint() {
|
|
18
|
+
const c = connection();
|
|
19
|
+
const effectiveType = typeof c?.effectiveType === 'string' ? c.effectiveType : undefined;
|
|
20
|
+
return {
|
|
21
|
+
saveData: c?.saveData === true,
|
|
22
|
+
slow: effectiveType === '2g' || effectiveType === 'slow-2g',
|
|
23
|
+
effectiveType,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* True when the user is signalling "do not track / do not sell-or-share" via **Global Privacy
|
|
28
|
+
* Control** (`navigator.globalPrivacyControl === true`) or legacy **Do-Not-Track**
|
|
29
|
+
* (`navigator.doNotTrack === '1'` / `'yes'`, or `window.doNotTrack === '1'`). Feature-detected +
|
|
30
|
+
* SSR-safe. Consulted only when the host opts in via `privacy.respectDnt`.
|
|
31
|
+
*/
|
|
32
|
+
export function userOptedOutOfTracking() {
|
|
33
|
+
if (typeof navigator === 'undefined')
|
|
34
|
+
return false;
|
|
35
|
+
const nav = navigator;
|
|
36
|
+
if (nav.globalPrivacyControl === true)
|
|
37
|
+
return true;
|
|
38
|
+
const dnt = nav.doNotTrack ??
|
|
39
|
+
(typeof window !== 'undefined' ? window.doNotTrack : undefined);
|
|
40
|
+
return dnt === '1' || dnt === 'yes';
|
|
41
|
+
}
|
|
42
|
+
/** Approximate device RAM in GB (Chromium `navigator.deviceMemory`), or undefined when unsupported. */
|
|
43
|
+
export function deviceMemoryGB() {
|
|
44
|
+
if (typeof navigator === 'undefined')
|
|
45
|
+
return undefined;
|
|
46
|
+
const dm = navigator.deviceMemory;
|
|
47
|
+
return typeof dm === 'number' ? dm : undefined;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* True when continuous live replay streaming should be deferred to buffered-only capture: the user
|
|
51
|
+
* asked to save data, the link is 2g/slow-2g, or the device is ultra-low-memory (≤1 GB). Returns
|
|
52
|
+
* false when no signal is available (feature-detect miss) — never over-restricts by default.
|
|
53
|
+
*/
|
|
54
|
+
export function shouldDeferHeavyEgress() {
|
|
55
|
+
const n = networkHint();
|
|
56
|
+
if (n.saveData || n.slow)
|
|
57
|
+
return true;
|
|
58
|
+
const mem = deviceMemoryGB();
|
|
59
|
+
return typeof mem === 'number' && mem <= 1;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=deviceSignals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceSignals.js","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/deviceSignals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,SAAS,UAAU;IACjB,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IACvD,OAAQ,SAAuD,CAAC,UAAU,CAAC;AAC7E,CAAC;AAUD,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,aAAa,GAAG,OAAO,CAAC,EAAE,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,OAAO;QACL,QAAQ,EAAE,CAAC,EAAE,QAAQ,KAAK,IAAI;QAC9B,IAAI,EAAE,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,SAAS;QAC3D,aAAa;KACd,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB;IACpC,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACnD,MAAM,GAAG,GAAG,SAA+E,CAAC;IAC5F,IAAI,GAAG,CAAC,oBAAoB,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,GAAG,GACP,GAAG,CAAC,UAAU;QACd,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAE,MAA6C,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1G,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,KAAK,CAAC;AACtC,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IACvD,MAAM,EAAE,GAAI,SAAkD,CAAC,YAAY,CAAC;IAC5E,OAAO,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upload a DOM frame's payload STRAIGHT to object storage, so it never travels through the API.
|
|
3
|
+
*
|
|
4
|
+
* WHY. Measured on production over 32 hours: 154,235 of 163,644 stored frames are web DOM payloads,
|
|
5
|
+
* and every one arrived inline in the batch envelope and was then PUT to object storage BY THE
|
|
6
|
+
* SERVER, on the request path, at 25–70ms per round trip. That relay is most of a slow ingest
|
|
7
|
+
* request — the database work inside the same request is about 4% of it. React Native has uploaded
|
|
8
|
+
* its screenshots directly for a long time; the web lane could not, because the presign endpoint
|
|
9
|
+
* only signed image keys and the ingest path only read a client-supplied key for images.
|
|
10
|
+
*
|
|
11
|
+
* WHAT IT IS NOT. This does not change what is stored: same object, same key, same row, same
|
|
12
|
+
* `events` copy in Postgres for the heatmap lane. It changes who performs the upload.
|
|
13
|
+
*
|
|
14
|
+
* EVERY FAILURE FALLS BACK TO INLINE. A presign that cannot be reached, a backend with storage
|
|
15
|
+
* switched off, a PUT that is rejected — each leaves the frame exactly as it was, and the server
|
|
16
|
+
* stores it the way it always has. That is the whole safety argument: the old path is not removed,
|
|
17
|
+
* it is simply not used when the fast one works.
|
|
18
|
+
*/
|
|
19
|
+
/** The fields the server assembles into the stored object. MUST match `domObj` in persistFrame. */
|
|
20
|
+
interface DomFrame {
|
|
21
|
+
kind?: string;
|
|
22
|
+
renderer?: string;
|
|
23
|
+
frameId?: string;
|
|
24
|
+
snapshot?: unknown;
|
|
25
|
+
mutations?: unknown[];
|
|
26
|
+
events?: unknown;
|
|
27
|
+
adoptedStyles?: string[];
|
|
28
|
+
viewport?: unknown;
|
|
29
|
+
href?: string;
|
|
30
|
+
domStorageKey?: string;
|
|
31
|
+
sizeBytes?: number;
|
|
32
|
+
}
|
|
33
|
+
export interface OffloadDeps {
|
|
34
|
+
sessionId: string;
|
|
35
|
+
presign: (sessionId: string, frames: Array<{
|
|
36
|
+
frameId: string;
|
|
37
|
+
payloadKind?: string;
|
|
38
|
+
}>, cssIds?: string[]) => Promise<{
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
frames?: Array<{
|
|
41
|
+
frameId: string;
|
|
42
|
+
uploadUrl: string;
|
|
43
|
+
storageKey: string;
|
|
44
|
+
contentType: string;
|
|
45
|
+
}>;
|
|
46
|
+
} | null>;
|
|
47
|
+
put: (url: string, body: BodyInit, contentType: string) => Promise<boolean>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* THE STORED OBJECT'S SHAPE, and the reason it is a named function rather than an inline literal.
|
|
51
|
+
*
|
|
52
|
+
* The server builds exactly this set — snapshot, mutations, events, adoptedStyles, viewport, href —
|
|
53
|
+
* and the reader parses what the server built. If the two ever disagree the upload still succeeds,
|
|
54
|
+
* the row still stores a key, and the replay renders wrong or blank with nothing logged at either
|
|
55
|
+
* end. Keeping it in one exported function is what lets a test pin the field set.
|
|
56
|
+
*/
|
|
57
|
+
export declare function domPayloadOf(f: DomFrame): Record<string, unknown>;
|
|
58
|
+
/**
|
|
59
|
+
* Offload what can be offloaded, in place, and leave everything else untouched.
|
|
60
|
+
*
|
|
61
|
+
* Mutates the items rather than returning copies, deliberately: when a batch fails to send it is
|
|
62
|
+
* put back on the queue, and a frame whose bytes are ALREADY in storage should stay that way. A
|
|
63
|
+
* copy would upload the same payload again on every retry.
|
|
64
|
+
*
|
|
65
|
+
* Returns how many frames were offloaded, for the caller's diagnostics — never throws.
|
|
66
|
+
*/
|
|
67
|
+
export declare function offloadDomFrames(items: readonly unknown[], deps: OffloadDeps): Promise<number>;
|
|
68
|
+
export {};
|
|
69
|
+
//# sourceMappingURL=offloadDomFrames.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offloadDomFrames.d.ts","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/offloadDomFrames.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,mGAAmG;AACnG,UAAU,QAAQ;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CACP,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACxD,MAAM,CAAC,EAAE,MAAM,EAAE,KACd,OAAO,CAAC;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjG,GAAG,IAAI,CAAC,CAAC;IACV,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7E;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASjE;AAgBD;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,MAAM,CAAC,CAqDjB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upload a DOM frame's payload STRAIGHT to object storage, so it never travels through the API.
|
|
3
|
+
*
|
|
4
|
+
* WHY. Measured on production over 32 hours: 154,235 of 163,644 stored frames are web DOM payloads,
|
|
5
|
+
* and every one arrived inline in the batch envelope and was then PUT to object storage BY THE
|
|
6
|
+
* SERVER, on the request path, at 25–70ms per round trip. That relay is most of a slow ingest
|
|
7
|
+
* request — the database work inside the same request is about 4% of it. React Native has uploaded
|
|
8
|
+
* its screenshots directly for a long time; the web lane could not, because the presign endpoint
|
|
9
|
+
* only signed image keys and the ingest path only read a client-supplied key for images.
|
|
10
|
+
*
|
|
11
|
+
* WHAT IT IS NOT. This does not change what is stored: same object, same key, same row, same
|
|
12
|
+
* `events` copy in Postgres for the heatmap lane. It changes who performs the upload.
|
|
13
|
+
*
|
|
14
|
+
* EVERY FAILURE FALLS BACK TO INLINE. A presign that cannot be reached, a backend with storage
|
|
15
|
+
* switched off, a PUT that is rejected — each leaves the frame exactly as it was, and the server
|
|
16
|
+
* stores it the way it always has. That is the whole safety argument: the old path is not removed,
|
|
17
|
+
* it is simply not used when the fast one works.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* THE STORED OBJECT'S SHAPE, and the reason it is a named function rather than an inline literal.
|
|
21
|
+
*
|
|
22
|
+
* The server builds exactly this set — snapshot, mutations, events, adoptedStyles, viewport, href —
|
|
23
|
+
* and the reader parses what the server built. If the two ever disagree the upload still succeeds,
|
|
24
|
+
* the row still stores a key, and the replay renders wrong or blank with nothing logged at either
|
|
25
|
+
* end. Keeping it in one exported function is what lets a test pin the field set.
|
|
26
|
+
*/
|
|
27
|
+
export function domPayloadOf(f) {
|
|
28
|
+
return {
|
|
29
|
+
snapshot: f.snapshot ?? null,
|
|
30
|
+
mutations: f.mutations ?? null,
|
|
31
|
+
events: f.events ?? null,
|
|
32
|
+
adoptedStyles: f.adoptedStyles ?? null,
|
|
33
|
+
viewport: f.viewport ?? null,
|
|
34
|
+
href: f.href ?? null,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/** True for a DOM frame that still carries its payload and has not been offloaded yet. */
|
|
38
|
+
function isOffloadable(it) {
|
|
39
|
+
const f = it;
|
|
40
|
+
return (!!f &&
|
|
41
|
+
f.kind === 'frame' &&
|
|
42
|
+
f.renderer === 'dom' &&
|
|
43
|
+
!f.domStorageKey &&
|
|
44
|
+
(f.snapshot != null || (f.mutations != null && f.mutations.length > 0)) &&
|
|
45
|
+
typeof f.frameId === 'string' &&
|
|
46
|
+
!!f.frameId);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Offload what can be offloaded, in place, and leave everything else untouched.
|
|
50
|
+
*
|
|
51
|
+
* Mutates the items rather than returning copies, deliberately: when a batch fails to send it is
|
|
52
|
+
* put back on the queue, and a frame whose bytes are ALREADY in storage should stay that way. A
|
|
53
|
+
* copy would upload the same payload again on every retry.
|
|
54
|
+
*
|
|
55
|
+
* Returns how many frames were offloaded, for the caller's diagnostics — never throws.
|
|
56
|
+
*/
|
|
57
|
+
export async function offloadDomFrames(items, deps) {
|
|
58
|
+
const targets = items.filter(isOffloadable);
|
|
59
|
+
if (targets.length === 0)
|
|
60
|
+
return 0;
|
|
61
|
+
let signed;
|
|
62
|
+
try {
|
|
63
|
+
signed = await deps.presign(deps.sessionId, targets.map((f) => ({ frameId: f.frameId, payloadKind: 'dom' })));
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return 0; // inline, exactly as before
|
|
67
|
+
}
|
|
68
|
+
if (!signed || !signed.enabled || !signed.frames?.length)
|
|
69
|
+
return 0;
|
|
70
|
+
const byId = new Map(signed.frames.map((s) => [s.frameId, s]));
|
|
71
|
+
let done = 0;
|
|
72
|
+
await Promise.all(targets.map(async (f) => {
|
|
73
|
+
const slot = byId.get(f.frameId);
|
|
74
|
+
if (!slot)
|
|
75
|
+
return; // the server declined this one; it stays inline
|
|
76
|
+
let body;
|
|
77
|
+
try {
|
|
78
|
+
body = JSON.stringify(domPayloadOf(f));
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return; // unserializable — the server's own path would have failed the same way
|
|
82
|
+
}
|
|
83
|
+
const ok = await deps.put(slot.uploadUrl, body, slot.contentType);
|
|
84
|
+
if (!ok)
|
|
85
|
+
return; // PUT refused → inline
|
|
86
|
+
/**
|
|
87
|
+
* ONLY NOW is the payload removed from the item. Doing it before the PUT resolved would turn
|
|
88
|
+
* a failed upload into a frame with neither bytes nor a key — the one outcome worse than
|
|
89
|
+
* sending it inline.
|
|
90
|
+
*
|
|
91
|
+
* `events` is deliberately KEPT: the server reads it off the item to fill `domEvents`, the
|
|
92
|
+
* slim Postgres copy the click-heatmap scans, and that must land whether or not the payload
|
|
93
|
+
* travelled through the server.
|
|
94
|
+
*
|
|
95
|
+
* `sizeBytes` is set because the server measures it from the inline payload it can no longer
|
|
96
|
+
* see. Sending it keeps "how big is this session" answerable for web.
|
|
97
|
+
*/
|
|
98
|
+
f.domStorageKey = slot.storageKey;
|
|
99
|
+
f.sizeBytes = body.length;
|
|
100
|
+
delete f.snapshot;
|
|
101
|
+
delete f.mutations;
|
|
102
|
+
delete f.adoptedStyles;
|
|
103
|
+
done += 1;
|
|
104
|
+
}));
|
|
105
|
+
return done;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=offloadDomFrames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offloadDomFrames.js","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/offloadDomFrames.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heuristic PII redaction for replay text — the 'strict' privacy tier. Mask-all-text (default) already
|
|
3
|
+
* removes PII at capture; this is the safety net for UNMASKED replay (internal/dev apps that opt out
|
|
4
|
+
* of masking but still must not ship emails / card numbers / SSNs). Runs in the recorder, in MY lane:
|
|
5
|
+
* it scrubs the serialized SNode snapshot + delta mutation values BEFORE they're buffered/encoded, so
|
|
6
|
+
* no PII reaches the wire — without touching the engine's capture path.
|
|
7
|
+
*
|
|
8
|
+
* Heuristic by nature (regex): in strict mode we err toward over-redaction (privacy-first).
|
|
9
|
+
*/
|
|
10
|
+
import type { FrameItem } from '@scalebun/protocol';
|
|
11
|
+
export declare function redactText(s: string): string;
|
|
12
|
+
/** Mutate a frame in place, scrubbing PII from its snapshot (keyframe) or mutations (delta). */
|
|
13
|
+
export declare function redactFrame(frame: FrameItem): void;
|
|
14
|
+
//# sourceMappingURL=pii.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pii.d.ts","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/pii.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAepD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI5C;AAED,gGAAgG;AAChG,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAKlD"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const MASK = '[redacted]';
|
|
2
|
+
// Order matters: alpha-prefixed (IBAN) and dashed (SSN) forms BEFORE the broad digit-runs so they
|
|
3
|
+
// aren't half-eaten; phone (structured, shorter) after the card run so a card isn't caught as a phone.
|
|
4
|
+
const PATTERNS = [
|
|
5
|
+
/\b[\w.+-]+@[\w-]+\.[\w.-]+\b/g, // email
|
|
6
|
+
/\b[A-Z]{2}\d{2}[A-Z0-9]{10,30}\b/g, // IBAN (country + check digits + BBAN)
|
|
7
|
+
/\b\d{3}-\d{2}-\d{4}\b/g, // US SSN
|
|
8
|
+
/\b(?:\d[ -]?){13,18}\d\b/g, // card-like 14–19 digit run (optionally spaced/dashed)
|
|
9
|
+
// Phone: an optional + country code / parenthesized area code, then ≥3 separated digit groups, so a
|
|
10
|
+
// real phone is caught but a plain two-token number ("42 items") is not.
|
|
11
|
+
/(?:\+\d{1,3}[\s.-]?)?\(?\d{2,4}\)?[\s.-]\d{2,4}[\s.-]\d{2,4}(?:[\s.-]\d{2,4})?/g,
|
|
12
|
+
];
|
|
13
|
+
export function redactText(s) {
|
|
14
|
+
let out = s;
|
|
15
|
+
for (const re of PATTERNS)
|
|
16
|
+
out = out.replace(re, MASK);
|
|
17
|
+
return out;
|
|
18
|
+
}
|
|
19
|
+
/** Mutate a frame in place, scrubbing PII from its snapshot (keyframe) or mutations (delta). */
|
|
20
|
+
export function redactFrame(frame) {
|
|
21
|
+
const snap = frame.snapshot;
|
|
22
|
+
if (snap && typeof snap === 'object')
|
|
23
|
+
redactSNode(snap);
|
|
24
|
+
const muts = frame.mutations;
|
|
25
|
+
if (Array.isArray(muts))
|
|
26
|
+
for (const m of muts)
|
|
27
|
+
redactMutation(m);
|
|
28
|
+
}
|
|
29
|
+
function redactSNode(n) {
|
|
30
|
+
if (n.t === 'tx' || n.t === 'cm') {
|
|
31
|
+
if (typeof n.value === 'string')
|
|
32
|
+
n.value = redactText(n.value);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (n.attrs)
|
|
36
|
+
for (const k in n.attrs)
|
|
37
|
+
if (typeof n.attrs[k] === 'string')
|
|
38
|
+
n.attrs[k] = redactText(n.attrs[k]);
|
|
39
|
+
if (Array.isArray(n.children))
|
|
40
|
+
for (const c of n.children)
|
|
41
|
+
redactSNode(c);
|
|
42
|
+
if (n.shadow?.children)
|
|
43
|
+
for (const c of n.shadow.children)
|
|
44
|
+
redactSNode(c);
|
|
45
|
+
}
|
|
46
|
+
function redactMutation(m) {
|
|
47
|
+
if ((m.op === 'text' || m.op === 'attr') && typeof m.value === 'string')
|
|
48
|
+
m.value = redactText(m.value);
|
|
49
|
+
if (m.op === 'add' && m.node)
|
|
50
|
+
redactSNode(m.node);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=pii.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pii.js","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/pii.ts"],"names":[],"mappings":"AAWA,MAAM,IAAI,GAAG,YAAY,CAAC;AAC1B,kGAAkG;AAClG,uGAAuG;AACvG,MAAM,QAAQ,GAAa;IACzB,+BAA+B,EAAE,QAAQ;IACzC,mCAAmC,EAAE,uCAAuC;IAC5E,wBAAwB,EAAE,SAAS;IACnC,2BAA2B,EAAE,uDAAuD;IACpF,oGAAoG;IACpG,yEAAyE;IACzE,iFAAiF;CAClF,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,EAAE,IAAI,QAAQ;QAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,WAAW,CAAC,KAAgB;IAC1C,MAAM,IAAI,GAAI,KAAgC,CAAC,QAAQ,CAAC;IACxD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,WAAW,CAAC,IAAgB,CAAC,CAAC;IACpE,MAAM,IAAI,GAAI,KAAuC,CAAC,SAAS,CAAC;IAChE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAgBD,SAAS,WAAW,CAAC,CAAW;IAC9B,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;YAAE,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IACD,IAAI,CAAC,CAAC,KAAK;QAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;YAAE,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;gBAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;YAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ;QAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ;YAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,cAAc,CAAC,CAAc;IACpC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;QAAE,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvG,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI;QAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RecorderController — the entire DOM-replay recording lifecycle, lazy-loaded by the thin
|
|
3
|
+
* `ReplayFeature` shell only for a SAMPLED session. Keeping this out of the eager feature class
|
|
4
|
+
* means none of the orchestration (segments, checkpoints, cadence, wiring) weighs down the core
|
|
5
|
+
* bundle — the shell in core is ~a dozen lines.
|
|
6
|
+
*
|
|
7
|
+
* Owns: keyframe snapshot (worker-compressed) → mutation/CSSOM/interaction/iframe/canvas deltas →
|
|
8
|
+
* the SegmentBuffer pre-roll → capture-on-signal flush → re-keyframe checkpoints (segment-full /
|
|
9
|
+
* time / visibility / URL). In 'sampled'/'always' mode it streams from the first frame instead.
|
|
10
|
+
*/
|
|
11
|
+
import type { FeatureContext } from '@scalebun/sdk-contracts';
|
|
12
|
+
import type { SampleDecision } from './sampling.js';
|
|
13
|
+
/** Diagnostics surfaced via ScaleBun.replay.stats() + the Dev Panel. */
|
|
14
|
+
export interface ReplayStats {
|
|
15
|
+
recording: boolean;
|
|
16
|
+
paused: boolean;
|
|
17
|
+
streaming: boolean;
|
|
18
|
+
sampleReason: string;
|
|
19
|
+
sampleBucket: number;
|
|
20
|
+
qualityLevel: number;
|
|
21
|
+
segments: number;
|
|
22
|
+
/**
|
|
23
|
+
* Frames currently held in the SEGMENT BUFFER — not a cumulative total.
|
|
24
|
+
*
|
|
25
|
+
* Named here because it reads like one and is not: while streaming, frames leave the buffer as they
|
|
26
|
+
* ship, so a perfectly healthy session reports 0. The P1b first-frame watchdog originally tested
|
|
27
|
+
* this and fired on every healthy streaming session, which would have poisoned the exact metric it
|
|
28
|
+
* exists to feed. Use `captured` to ask "did this session ever produce a frame".
|
|
29
|
+
*/
|
|
30
|
+
frames: number;
|
|
31
|
+
/**
|
|
32
|
+
* Has a keyframe EVER been produced in this session? Cumulative and monotonic.
|
|
33
|
+
*
|
|
34
|
+
* Derived from `keyframeId`, which is assigned when the first snapshot is taken and thereafter only
|
|
35
|
+
* reassigned (every delta references it as `baseFrameId`), so it is never cleared back to null while
|
|
36
|
+
* recording. That makes it the honest answer to "did capture actually happen", independent of what
|
|
37
|
+
* the buffer holds right now or whether the session streams or buffers.
|
|
38
|
+
*/
|
|
39
|
+
captured: boolean;
|
|
40
|
+
bufferBytes: number;
|
|
41
|
+
droppedSegments: number;
|
|
42
|
+
shedFrames: number;
|
|
43
|
+
/**
|
|
44
|
+
* Cumulative per-producer frame/byte counters for THIS session (what actually shipped or was
|
|
45
|
+
* buffered — adaptive-shed frames are excluded; they're in `shedFrames`). Bytes are approxBytes
|
|
46
|
+
* at push time, i.e. pre-gzip for keyframes. The point is attribution, not accounting: "62% of
|
|
47
|
+
* frames were cursor moves" is the measurement the flush-policy tuning is judged against.
|
|
48
|
+
* Producers: keyframe | mutation (DOM+CSSOM lane) | canvas | interaction (click/deadclick/input)
|
|
49
|
+
* | scroll (scroll/viewport) | move.
|
|
50
|
+
*/
|
|
51
|
+
producers: Record<string, {
|
|
52
|
+
frames: number;
|
|
53
|
+
bytes: number;
|
|
54
|
+
}>;
|
|
55
|
+
}
|
|
56
|
+
export declare function createRecorder(ctx: FeatureContext, decision: SampleDecision): Promise<RecorderController>;
|
|
57
|
+
export declare class RecorderController {
|
|
58
|
+
private readonly ctx;
|
|
59
|
+
private readonly decision;
|
|
60
|
+
/**
|
|
61
|
+
* Take the next sequence number and persist the advance (survives reload / shared tabs).
|
|
62
|
+
*
|
|
63
|
+
* CALLED FROM push(), AFTER every decision that can discard the frame — never from the builders.
|
|
64
|
+
*
|
|
65
|
+
* It used to be called while constructing the frame object, which push() could then drop outright:
|
|
66
|
+
* adaptive quality shedding a cursor-move frame, or SegmentBuffer refusing a delta that has no open
|
|
67
|
+
* segment. The number was never reused, so a deliberate shed and a frame genuinely lost in transit
|
|
68
|
+
* left the SAME hole in the stored sequence. That made our own reliability figure unprovable —
|
|
69
|
+
* production measures 1.16% of numbered frames missing, and nobody could say how much of it was
|
|
70
|
+
* intentional. Assigning at emission makes a gap mean exactly one thing: a frame that left the
|
|
71
|
+
* recorder and did not arrive.
|
|
72
|
+
*/
|
|
73
|
+
private nextSeq;
|
|
74
|
+
private active;
|
|
75
|
+
private streaming;
|
|
76
|
+
/**
|
|
77
|
+
* Replay frame sequence, PER SESSION rather than per document.
|
|
78
|
+
*
|
|
79
|
+
* A session now survives a refresh (features/session/sessionStore), and the backend both orders
|
|
80
|
+
* frames by this number and resolves a keyframe's deltas as the frames in [seq, nextSeq). A
|
|
81
|
+
* counter that restarted at 0 on each page load would therefore emit a second frame 0, 1, 2…
|
|
82
|
+
* that sorts BEFORE the first load's later frames and scrambles the replay. Seed from the store
|
|
83
|
+
* so a resumed session keeps counting.
|
|
84
|
+
*/
|
|
85
|
+
private seq;
|
|
86
|
+
private keyframeId;
|
|
87
|
+
private checkpointing;
|
|
88
|
+
private dirtySinceKeyframe;
|
|
89
|
+
private lastKeyframeAt;
|
|
90
|
+
private streamChainBytes;
|
|
91
|
+
private streamChainFrames;
|
|
92
|
+
/** Last `egressDropped` reading — a RISE means the pipeline shed a chain (see push()). */
|
|
93
|
+
private lastShed;
|
|
94
|
+
private segBuf?;
|
|
95
|
+
private reg?;
|
|
96
|
+
private snapOpts?;
|
|
97
|
+
private takeSnapshotFn?;
|
|
98
|
+
private mutationRec?;
|
|
99
|
+
private cssomRec?;
|
|
100
|
+
private encoder?;
|
|
101
|
+
private readonly pendingEncodes;
|
|
102
|
+
private adaptive?;
|
|
103
|
+
private shed;
|
|
104
|
+
private deltaBatcher?;
|
|
105
|
+
private readonly producerCounts;
|
|
106
|
+
private readonly persistBuffer;
|
|
107
|
+
private replayStore?;
|
|
108
|
+
private onPageHide?;
|
|
109
|
+
private onVisHidden?;
|
|
110
|
+
private redactPII;
|
|
111
|
+
private paused;
|
|
112
|
+
private maskText;
|
|
113
|
+
private disconnectRecorder?;
|
|
114
|
+
private disconnectInteractions?;
|
|
115
|
+
private disconnectCssom?;
|
|
116
|
+
private disconnectCanvas?;
|
|
117
|
+
private disconnectIframes?;
|
|
118
|
+
private disposeEncoder?;
|
|
119
|
+
private unsubSignal?;
|
|
120
|
+
private disconnectCadence?;
|
|
121
|
+
private childSatelliteStop?;
|
|
122
|
+
constructor(ctx: FeatureContext, decision: SampleDecision);
|
|
123
|
+
get isActive(): boolean;
|
|
124
|
+
/** Live diagnostics. */
|
|
125
|
+
stats(): ReplayStats;
|
|
126
|
+
/** Force a re-keyframe (e.g. ScaleBun.replay.checkpoint() before a risky flow). */
|
|
127
|
+
forceCheckpoint(reason: string): void;
|
|
128
|
+
/** One-time bring-up: segment buffer + crash-survival mirror + encoder (survive pause/resume), then
|
|
129
|
+
* ARM the capture pipeline (observers + first keyframe). The re-armable part lives in `arm()`. */
|
|
130
|
+
init(): Promise<void>;
|
|
131
|
+
/**
|
|
132
|
+
* ARM the capture pipeline: fresh NodeRegistry + a keyframe of the CURRENT DOM, then wire + observe
|
|
133
|
+
* the mutation/interaction/CSSOM/iframe/canvas recorders, adaptive quality, and checkpoint cadence.
|
|
134
|
+
* Idempotent-safe to call after `disarm()` — this is exactly what resume()/setPrivacy() do, and why a
|
|
135
|
+
* resume takes a fresh keyframe (the DOM changed while paused, so old deltas can't rebase).
|
|
136
|
+
*/
|
|
137
|
+
private arm;
|
|
138
|
+
/** DISARM the capture pipeline: stop every observer + adaptive + cadence and drop the capture-scoped
|
|
139
|
+
* state, WITHOUT touching the segment buffer / crash-mirror / encoder / session (those survive a
|
|
140
|
+
* pause). The inverse of `arm()`; shared by pause() and teardown(). Idempotent. */
|
|
141
|
+
private disarm;
|
|
142
|
+
/** Pause capture (stop observers) while keeping the session + buffered pre-roll intact. No-op when
|
|
143
|
+
* not recording or already paused. */
|
|
144
|
+
pause(): void;
|
|
145
|
+
/** Resume capture after pause(): re-arm with a FRESH keyframe of the current DOM (the DOM changed
|
|
146
|
+
* while paused, so a new base is required). No-op when not recording or not paused. */
|
|
147
|
+
resume(): void;
|
|
148
|
+
/** Change replay masking at runtime (e.g. entering a sensitive screen). Re-arms with a fresh keyframe
|
|
149
|
+
* so the new masking takes effect from here on; the already-captured pre-roll keeps its old masking. */
|
|
150
|
+
setPrivacy(policy: {
|
|
151
|
+
maskAllText?: boolean;
|
|
152
|
+
}): void;
|
|
153
|
+
/** Build a delta frame against the current keyframe. `seq` is assigned in push(), not here — see
|
|
154
|
+
* the note on nextSeq(). */
|
|
155
|
+
private delta;
|
|
156
|
+
private push;
|
|
157
|
+
/** Re-keyframe: drain queued records onto the OLD keyframe, snapshot the live DOM, open a new
|
|
158
|
+
* segment with the keyframe (raw → gzip in-place). Subsequent deltas auto-rebase via `keyframeId`. */
|
|
159
|
+
private checkpoint;
|
|
160
|
+
private recoverPriorPreRoll;
|
|
161
|
+
/** Mirror the current pre-roll to IDB (byte-capped). A crash retains it; a clean close clears it.
|
|
162
|
+
* Every item here IS a frame, so `isHeavy` is constant — the predicates exist to tell capBytes
|
|
163
|
+
* which of them is a base, so a trimmed pre-roll starts at a keyframe instead of at deltas that
|
|
164
|
+
* reconstruct against a snapshot no longer present. */
|
|
165
|
+
private persistPreRoll;
|
|
166
|
+
private installPersistGuards;
|
|
167
|
+
/**
|
|
168
|
+
* Upgrade a keyframe's already-emitted RAW snapshot to gzip in-place as the worker finishes. The
|
|
169
|
+
* frame object is shared with the SegmentBuffer / pipeline queue, so filling `.snapshot` swaps the
|
|
170
|
+
* payload before egress IF the encode wins the race; otherwise the valid raw payload ships. No
|
|
171
|
+
* await, no ordering hazard — correctness over a few uncompressed bytes on a lost race.
|
|
172
|
+
*/
|
|
173
|
+
private compressInPlace;
|
|
174
|
+
/** Capture-on-signal: drain pending records, flush the pre-roll segments, then stream live. */
|
|
175
|
+
flush(): void;
|
|
176
|
+
teardown(): void;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=recorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/recorder.ts"],"names":[],"mappings":"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"}
|