@scalebun/web 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +59 -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 +248 -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 +81 -0
- package/dist/browser.js.map +1 -0
- package/dist/config/schema.d.ts +108 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +95 -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 +15 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +15 -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 +73 -0
- package/dist/core/pageContext.js.map +1 -0
- package/dist/core/prune.d.ts +7 -0
- package/dist/core/prune.d.ts.map +1 -0
- package/dist/core/prune.js +31 -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 +50 -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/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 +122 -0
- package/dist/features/analytics/AnalyticsFeature.d.ts.map +1 -0
- package/dist/features/analytics/AnalyticsFeature.js +757 -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 +398 -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 +38 -0
- package/dist/features/analytics/revenue.d.ts.map +1 -0
- package/dist/features/analytics/revenue.js +26 -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 +25 -0
- package/dist/features/analytics/subscription.d.ts.map +1 -0
- package/dist/features/analytics/subscription.js +51 -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 +36 -0
- package/dist/features/bugreport/BugReportFeature.d.ts.map +1 -0
- package/dist/features/bugreport/BugReportFeature.js +55 -0
- package/dist/features/bugreport/BugReportFeature.js.map +1 -0
- package/dist/features/bugreport/collect.d.ts +21 -0
- package/dist/features/bugreport/collect.d.ts.map +1 -0
- package/dist/features/bugreport/collect.js +27 -0
- package/dist/features/bugreport/collect.js.map +1 -0
- package/dist/features/bugreport/widget.d.ts +21 -0
- package/dist/features/bugreport/widget.d.ts.map +1 -0
- package/dist/features/bugreport/widget.js +111 -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 +183 -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 +61 -0
- package/dist/features/engage/EngageFeature.d.ts.map +1 -0
- package/dist/features/engage/EngageFeature.js +221 -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 +203 -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 +78 -0
- package/dist/features/engage/runtime.d.ts.map +1 -0
- package/dist/features/engage/runtime.js +349 -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 +31 -0
- package/dist/features/engage/throttle.d.ts.map +1 -0
- package/dist/features/engage/throttle.js +130 -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 +265 -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 +136 -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 +546 -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 +43 -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 +127 -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 +198 -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 +194 -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 +70 -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 +239 -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 +58 -0
- package/dist/features/inapp/core/targeting.d.ts.map +1 -0
- package/dist/features/inapp/core/targeting.js +181 -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 +219 -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 +92 -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 +88 -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 +72 -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 +66 -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 +52 -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 +186 -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 +62 -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 +199 -0
- package/dist/features/inapp/surfaces/tour.js.map +1 -0
- package/dist/features/inapp/types.d.ts +163 -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 +608 -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 +34 -0
- package/dist/features/journey/InteractionTracker.d.ts.map +1 -0
- package/dist/features/journey/InteractionTracker.js +125 -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 +57 -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 +29 -0
- package/dist/features/journey/friction.d.ts.map +1 -0
- package/dist/features/journey/friction.js +65 -0
- package/dist/features/journey/friction.js.map +1 -0
- package/dist/features/manifest.d.ts +20 -0
- package/dist/features/manifest.d.ts.map +1 -0
- package/dist/features/manifest.js +76 -0
- package/dist/features/manifest.js.map +1 -0
- package/dist/features/network/NetworkFeature.d.ts +56 -0
- package/dist/features/network/NetworkFeature.d.ts.map +1 -0
- package/dist/features/network/NetworkFeature.js +235 -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/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 +141 -0
- package/dist/features/push/softAsk.js.map +1 -0
- package/dist/features/replay/ReplayFeature.d.ts +32 -0
- package/dist/features/replay/ReplayFeature.d.ts.map +1 -0
- package/dist/features/replay/ReplayFeature.js +132 -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 +142 -0
- package/dist/features/replay/engine/interactions.d.ts.map +1 -0
- package/dist/features/replay/engine/interactions.js +371 -0
- package/dist/features/replay/engine/interactions.js.map +1 -0
- package/dist/features/replay/engine/mutations.d.ts +49 -0
- package/dist/features/replay/engine/mutations.d.ts.map +1 -0
- package/dist/features/replay/engine/mutations.js +261 -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 +409 -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 +137 -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 +20 -0
- package/dist/features/replay/lifecycle/cadence.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/cadence.js +62 -0
- package/dist/features/replay/lifecycle/cadence.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/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 +129 -0
- package/dist/features/replay/lifecycle/recorder.d.ts.map +1 -0
- package/dist/features/replay/lifecycle/recorder.js +509 -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 +31 -0
- package/dist/features/scroll/index.d.ts.map +1 -0
- package/dist/features/scroll/index.js +102 -0
- package/dist/features/scroll/index.js.map +1 -0
- package/dist/features/session/sessionManager.d.ts +25 -0
- package/dist/features/session/sessionManager.d.ts.map +1 -0
- package/dist/features/session/sessionManager.js +36 -0
- package/dist/features/session/sessionManager.js.map +1 -0
- package/dist/features/session/sessionStore.d.ts +106 -0
- package/dist/features/session/sessionStore.d.ts.map +1 -0
- package/dist/features/session/sessionStore.js +265 -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 +31 -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 +84 -0
- package/dist/pipeline/pipeline.d.ts.map +1 -0
- package/dist/pipeline/pipeline.js +284 -0
- package/dist/pipeline/pipeline.js.map +1 -0
- package/dist/public/ScaleBunFacade.d.ts +382 -0
- package/dist/public/ScaleBunFacade.d.ts.map +1 -0
- package/dist/public/ScaleBunFacade.js +787 -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 +635 -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 +60 -0
- package/dist/transport/httpClient.d.ts.map +1 -0
- package/dist/transport/httpClient.js +154 -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 +60 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/recorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic replay sampling — the differentiator vs every competitor's `Math.random()`.
|
|
3
|
+
*
|
|
4
|
+
* The decision buckets the **sessionId** with the SAME fnv1a32 as flags/experiments/rollouts (and
|
|
5
|
+
* byte-identical to the RN SDK + backend), so:
|
|
6
|
+
* - it's stable for a given session (a retried setup decides the same), and
|
|
7
|
+
* - the backend can RE-DERIVE the bucket from the sessionId and verify "should this session have
|
|
8
|
+
* replay" — no client trust, tamper-evident. (Sentry/Datadog/etc. use unreconcilable random.)
|
|
9
|
+
*
|
|
10
|
+
* A session that isn't sampled installs NOTHING (ReplayFeature returns before loading the engine).
|
|
11
|
+
*/
|
|
12
|
+
import type { ReplayMode } from '@scalebun/sdk-contracts';
|
|
13
|
+
export interface ReplaySampling {
|
|
14
|
+
mode: ReplayMode;
|
|
15
|
+
sampleRate: number;
|
|
16
|
+
onErrorSampleRate: number;
|
|
17
|
+
}
|
|
18
|
+
export interface SampleDecision {
|
|
19
|
+
/** Capture at all? false → install nothing (zero overhead). */
|
|
20
|
+
record: boolean;
|
|
21
|
+
/** Stream from the first frame ('sampled'/'always'), vs buffer + flush-on-signal ('onError'). */
|
|
22
|
+
streamFromStart: boolean;
|
|
23
|
+
/** 0..99 bucket — emitted for diagnostics + server reconciliation. */
|
|
24
|
+
bucket: number;
|
|
25
|
+
reason: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function decideSampling(cfg: Partial<ReplaySampling> | undefined, sessionId: string): SampleDecision;
|
|
28
|
+
//# sourceMappingURL=sampling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sampling.d.ts","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/sampling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAS1D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC;IAChB,iGAAiG;IACjG,eAAe,EAAE,OAAO,CAAC;IACzB,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,cAAc,CAoB1G"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { bucketOf } from '../../config/bucketing';
|
|
2
|
+
/** Immutable salt — changing it re-buckets every session, so treat as versioned + frozen. */
|
|
3
|
+
// NOTE: keeps the legacy `wzb-` prefix on purpose. This salt is a bucketing input, not
|
|
4
|
+
// branding — nobody ever sees it, and changing the string reshuffles which sessions are
|
|
5
|
+
// sampled. It was left untouched by the ScaleBun rebrand for that reason.
|
|
6
|
+
const SALT = 'wzb-replay-v1';
|
|
7
|
+
// Default = record EVERY session from the first frame (parity with the mobile SDK, whose default
|
|
8
|
+
// captureMode records throughout the session). `sampleRate` still applies, so a cost-conscious host
|
|
9
|
+
// can dial it down without changing mode; `onError` (buffer + flush-on-signal) is opt-in.
|
|
10
|
+
const DEFAULTS = { mode: 'sampled', sampleRate: 1, onErrorSampleRate: 1 };
|
|
11
|
+
export function decideSampling(cfg, sessionId) {
|
|
12
|
+
const c = { ...DEFAULTS, ...cfg };
|
|
13
|
+
const bucket = bucketOf(sessionId, SALT); // 0..99, deterministic
|
|
14
|
+
const inRate = (r) => bucket < Math.max(0, Math.min(1, r)) * 100;
|
|
15
|
+
switch (c.mode) {
|
|
16
|
+
case 'off':
|
|
17
|
+
return { record: false, streamFromStart: false, bucket, reason: 'off' };
|
|
18
|
+
case 'always':
|
|
19
|
+
return { record: true, streamFromStart: true, bucket, reason: 'always' };
|
|
20
|
+
case 'sampled':
|
|
21
|
+
return inRate(c.sampleRate)
|
|
22
|
+
? { record: true, streamFromStart: true, bucket, reason: 'sampled-in' }
|
|
23
|
+
: { record: false, streamFromStart: false, bucket, reason: 'sampled-out' };
|
|
24
|
+
case 'onError':
|
|
25
|
+
default:
|
|
26
|
+
return inRate(c.onErrorSampleRate)
|
|
27
|
+
? { record: true, streamFromStart: false, bucket, reason: 'onerror-armed' }
|
|
28
|
+
: { record: false, streamFromStart: false, bucket, reason: 'onerror-out' };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=sampling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sampling.js","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/sampling.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,6FAA6F;AAC7F,uFAAuF;AACvF,wFAAwF;AACxF,0EAA0E;AAC1E,MAAM,IAAI,GAAG,eAAe,CAAC;AAkB7B,iGAAiG;AACjG,oGAAoG;AACpG,0FAA0F;AAC1F,MAAM,QAAQ,GAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;AAE1F,MAAM,UAAU,cAAc,CAAC,GAAwC,EAAE,SAAiB;IACxF,MAAM,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,GAAG,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB;IACjE,MAAM,MAAM,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAElF,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,KAAK;YACR,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC1E,KAAK,QAAQ;YACX,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC3E,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;gBACzB,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE;gBACvE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QAC/E,KAAK,SAAS,CAAC;QACf;YACE,OAAO,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC;gBAChC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE;gBAC3E,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACjF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SegmentBuffer — the pre-roll buffer as a ring of self-consistent **Segments**.
|
|
3
|
+
*
|
|
4
|
+
* A Segment is `[keyframe, ...deltas]`: a checkpoint snapshot plus the incremental deltas captured
|
|
5
|
+
* against it. Because deltas form a strict chain from their keyframe, a segment is the smallest unit
|
|
6
|
+
* that replays correctly on its own.
|
|
7
|
+
*
|
|
8
|
+
* This replaces the previous flat frame buffer, whose overflow handling dropped the *oldest delta*
|
|
9
|
+
* (`ReplayFeature` v1) — which silently corrupted replay: every later delta then applied onto a DOM
|
|
10
|
+
* state that never existed. Here we ONLY ever drop **whole oldest sealed segments**, so every
|
|
11
|
+
* retained frame is still part of an intact keyframe→delta chain. Correctness is structural, not a
|
|
12
|
+
* runtime check.
|
|
13
|
+
*
|
|
14
|
+
* M0 bounds the ring by segment count (cheap). M1 adds a byte budget (see `bytes` accounting hook).
|
|
15
|
+
* Pure data structure: no DOM, no I/O — unit-tested in isolation; `ReplayFeature` (M0b) drives it.
|
|
16
|
+
*/
|
|
17
|
+
import type { FrameItem } from '@scalebun/protocol';
|
|
18
|
+
export interface Segment {
|
|
19
|
+
/** The keyframe id every delta in this segment is based on. */
|
|
20
|
+
readonly keyframeId: string;
|
|
21
|
+
/** `[keyframe, ...deltas]` in capture (seq) order. Index 0 is always the keyframe. */
|
|
22
|
+
readonly frames: FrameItem[];
|
|
23
|
+
/** Approx serialized bytes — tracked for M1's byte budget; M0 ignores it. */
|
|
24
|
+
bytes: number;
|
|
25
|
+
}
|
|
26
|
+
export declare class SegmentBuffer {
|
|
27
|
+
private readonly maxSegments;
|
|
28
|
+
private readonly maxBytes;
|
|
29
|
+
private sealed;
|
|
30
|
+
private current;
|
|
31
|
+
private droppedSegments;
|
|
32
|
+
private accumBytes;
|
|
33
|
+
/**
|
|
34
|
+
* @param maxSegments ring capacity by segment count.
|
|
35
|
+
* @param maxBytes ring capacity by bytes (a few large frames can blow memory long before the
|
|
36
|
+
* segment count cap — bytes is the real budget). Either bound triggers eviction.
|
|
37
|
+
*/
|
|
38
|
+
constructor(maxSegments: number, maxBytes?: number);
|
|
39
|
+
/**
|
|
40
|
+
* Open a new segment from a keyframe frame (a checkpoint). Seals the current segment into the ring
|
|
41
|
+
* first. The keyframe MUST carry a `frameId`; deltas reference it via `baseFrameId`.
|
|
42
|
+
*/
|
|
43
|
+
openSegment(keyframe: FrameItem): void;
|
|
44
|
+
/**
|
|
45
|
+
* Append a delta to the current segment. A delta with no open segment is meaningless (no base) and
|
|
46
|
+
* is dropped — which can't corrupt anything, since it never enters a chain.
|
|
47
|
+
*/
|
|
48
|
+
append(delta: FrameItem): boolean;
|
|
49
|
+
/** Drop whole oldest SEALED segments while over EITHER bound. Never the current segment, and never
|
|
50
|
+
* an interior frame — so the chain invariant always holds. */
|
|
51
|
+
private evict;
|
|
52
|
+
/** All frames (sealed then current), keyframe-first per segment — for flush-on-signal. */
|
|
53
|
+
drainFrames(): FrameItem[];
|
|
54
|
+
/** Reset to empty (e.g. after promoting to live streaming, or teardown). */
|
|
55
|
+
clear(): void;
|
|
56
|
+
get currentFrameCount(): number;
|
|
57
|
+
/** Bytes in the open segment — drives byte-based checkpoint cadence in ReplayFeature. */
|
|
58
|
+
get currentBytes(): number;
|
|
59
|
+
/** Total buffered bytes (sealed + current). */
|
|
60
|
+
get totalBytes(): number;
|
|
61
|
+
get segmentCount(): number;
|
|
62
|
+
get frameCount(): number;
|
|
63
|
+
get dropped(): number;
|
|
64
|
+
get hasOpenSegment(): boolean;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Per-frame size estimate (bytes) for the buffer budget — not exact, but it tracks the real cost
|
|
68
|
+
* drivers cheaply (one pass, no full JSON of hot deltas):
|
|
69
|
+
* - snapshot: a gzipped keyframe is a string (use its length); a raw checkpoint snapshot is an
|
|
70
|
+
* object — stringify it ONCE (keyframes are infrequent, gated by the checkpoint cadence).
|
|
71
|
+
* - mutations: walk once, charging op overhead + the dominant cost (text/attr value + added subtree).
|
|
72
|
+
* - interaction events: small + fixed-shape → flat per-event charge.
|
|
73
|
+
*/
|
|
74
|
+
export declare function approxBytes(f: FrameItem): number;
|
|
75
|
+
//# sourceMappingURL=segmentBuffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmentBuffer.d.ts","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/segmentBuffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,WAAW,OAAO;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IAC7B,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,aAAa;IAYtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAZ3B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,UAAU,CAAK;IAEvB;;;;OAIG;gBAEgB,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,MAAiB;IAG9C;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;IAQtC;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAUjC;mEAC+D;IAC/D,OAAO,CAAC,KAAK;IASb,0FAA0F;IAC1F,WAAW,IAAI,SAAS,EAAE;IAO1B,4EAA4E;IAC5E,KAAK,IAAI,IAAI;IAOb,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IACD,yFAAyF;IACzF,IAAI,YAAY,IAAI,MAAM,CAEzB;IACD,+CAA+C;IAC/C,IAAI,UAAU,IAAI,MAAM,CAEvB;IACD,IAAI,YAAY,IAAI,MAAM,CAEzB;IACD,IAAI,UAAU,IAAI,MAAM,CAEvB;IACD,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,cAAc,IAAI,OAAO,CAE5B;CACF;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAwBhD"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
export class SegmentBuffer {
|
|
2
|
+
/**
|
|
3
|
+
* @param maxSegments ring capacity by segment count.
|
|
4
|
+
* @param maxBytes ring capacity by bytes (a few large frames can blow memory long before the
|
|
5
|
+
* segment count cap — bytes is the real budget). Either bound triggers eviction.
|
|
6
|
+
*/
|
|
7
|
+
constructor(maxSegments, maxBytes = Infinity) {
|
|
8
|
+
this.maxSegments = maxSegments;
|
|
9
|
+
this.maxBytes = maxBytes;
|
|
10
|
+
this.sealed = [];
|
|
11
|
+
this.current = null;
|
|
12
|
+
this.droppedSegments = 0;
|
|
13
|
+
this.accumBytes = 0; // running sum of sealed + current bytes (incremental, no rescans)
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Open a new segment from a keyframe frame (a checkpoint). Seals the current segment into the ring
|
|
17
|
+
* first. The keyframe MUST carry a `frameId`; deltas reference it via `baseFrameId`.
|
|
18
|
+
*/
|
|
19
|
+
openSegment(keyframe) {
|
|
20
|
+
if (this.current)
|
|
21
|
+
this.sealed.push(this.current);
|
|
22
|
+
const bytes = approxBytes(keyframe);
|
|
23
|
+
this.current = { keyframeId: keyframe.frameId ?? '', frames: [keyframe], bytes };
|
|
24
|
+
this.accumBytes += bytes;
|
|
25
|
+
this.evict();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Append a delta to the current segment. A delta with no open segment is meaningless (no base) and
|
|
29
|
+
* is dropped — which can't corrupt anything, since it never enters a chain.
|
|
30
|
+
*/
|
|
31
|
+
append(delta) {
|
|
32
|
+
if (!this.current)
|
|
33
|
+
return false;
|
|
34
|
+
const bytes = approxBytes(delta);
|
|
35
|
+
this.current.frames.push(delta);
|
|
36
|
+
this.current.bytes += bytes;
|
|
37
|
+
this.accumBytes += bytes;
|
|
38
|
+
this.evict();
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
/** Drop whole oldest SEALED segments while over EITHER bound. Never the current segment, and never
|
|
42
|
+
* an interior frame — so the chain invariant always holds. */
|
|
43
|
+
evict() {
|
|
44
|
+
// +1 accounts for the current (open) segment; only SEALED segments are evictable.
|
|
45
|
+
while (this.sealed.length > 0 && (this.sealed.length + 1 > this.maxSegments || this.accumBytes > this.maxBytes)) {
|
|
46
|
+
const dropped = this.sealed.shift();
|
|
47
|
+
this.accumBytes -= dropped.bytes;
|
|
48
|
+
this.droppedSegments++;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/** All frames (sealed then current), keyframe-first per segment — for flush-on-signal. */
|
|
52
|
+
drainFrames() {
|
|
53
|
+
const out = [];
|
|
54
|
+
for (const s of this.sealed)
|
|
55
|
+
out.push(...s.frames);
|
|
56
|
+
if (this.current)
|
|
57
|
+
out.push(...this.current.frames);
|
|
58
|
+
return out;
|
|
59
|
+
}
|
|
60
|
+
/** Reset to empty (e.g. after promoting to live streaming, or teardown). */
|
|
61
|
+
clear() {
|
|
62
|
+
this.sealed = [];
|
|
63
|
+
this.current = null;
|
|
64
|
+
this.accumBytes = 0;
|
|
65
|
+
}
|
|
66
|
+
// ── introspection (feeds replay.stats() in M7) ─────────────────────────────
|
|
67
|
+
get currentFrameCount() {
|
|
68
|
+
return this.current?.frames.length ?? 0;
|
|
69
|
+
}
|
|
70
|
+
/** Bytes in the open segment — drives byte-based checkpoint cadence in ReplayFeature. */
|
|
71
|
+
get currentBytes() {
|
|
72
|
+
return this.current?.bytes ?? 0;
|
|
73
|
+
}
|
|
74
|
+
/** Total buffered bytes (sealed + current). */
|
|
75
|
+
get totalBytes() {
|
|
76
|
+
return this.accumBytes;
|
|
77
|
+
}
|
|
78
|
+
get segmentCount() {
|
|
79
|
+
return this.sealed.length + (this.current ? 1 : 0);
|
|
80
|
+
}
|
|
81
|
+
get frameCount() {
|
|
82
|
+
return this.sealed.reduce((n, s) => n + s.frames.length, 0) + (this.current?.frames.length ?? 0);
|
|
83
|
+
}
|
|
84
|
+
get dropped() {
|
|
85
|
+
return this.droppedSegments;
|
|
86
|
+
}
|
|
87
|
+
get hasOpenSegment() {
|
|
88
|
+
return this.current !== null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Per-frame size estimate (bytes) for the buffer budget — not exact, but it tracks the real cost
|
|
93
|
+
* drivers cheaply (one pass, no full JSON of hot deltas):
|
|
94
|
+
* - snapshot: a gzipped keyframe is a string (use its length); a raw checkpoint snapshot is an
|
|
95
|
+
* object — stringify it ONCE (keyframes are infrequent, gated by the checkpoint cadence).
|
|
96
|
+
* - mutations: walk once, charging op overhead + the dominant cost (text/attr value + added subtree).
|
|
97
|
+
* - interaction events: small + fixed-shape → flat per-event charge.
|
|
98
|
+
*/
|
|
99
|
+
export function approxBytes(f) {
|
|
100
|
+
let n = 64; // envelope overhead
|
|
101
|
+
const snap = f.snapshot;
|
|
102
|
+
if (typeof snap === 'string')
|
|
103
|
+
n += snap.length;
|
|
104
|
+
else if (snap) {
|
|
105
|
+
try {
|
|
106
|
+
n += JSON.stringify(snap).length;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
n += 4096; // unserializable (shouldn't happen for SNode) — coarse fallback
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const muts = f.mutations;
|
|
113
|
+
if (Array.isArray(muts)) {
|
|
114
|
+
for (const m of muts) {
|
|
115
|
+
n += 40; // op overhead
|
|
116
|
+
const v = m.value ?? m.data ?? m.css;
|
|
117
|
+
if (typeof v === 'string')
|
|
118
|
+
n += v.length; // text/attr/sheet payloads are the bloat
|
|
119
|
+
if (m.node || m.doc)
|
|
120
|
+
n += 256; // added subtree / iframe doc — coarse
|
|
121
|
+
if (Array.isArray(m.rules))
|
|
122
|
+
n += m.rules.reduce((a, r) => a + r.length, 0);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const events = f.events;
|
|
126
|
+
if (Array.isArray(events))
|
|
127
|
+
n += events.length * 48;
|
|
128
|
+
return n;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=segmentBuffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmentBuffer.js","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/segmentBuffer.ts"],"names":[],"mappings":"AA2BA,MAAM,OAAO,aAAa;IAMxB;;;;OAIG;IACH,YACmB,WAAmB,EACnB,WAAmB,QAAQ;QAD3B,gBAAW,GAAX,WAAW,CAAQ;QACnB,aAAQ,GAAR,QAAQ,CAAmB;QAZtC,WAAM,GAAc,EAAE,CAAC;QACvB,YAAO,GAAmB,IAAI,CAAC;QAC/B,oBAAe,GAAG,CAAC,CAAC;QACpB,eAAU,GAAG,CAAC,CAAC,CAAC,kEAAkE;IAUvF,CAAC;IAEJ;;;OAGG;IACH,WAAW,CAAC,QAAmB;QAC7B,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;QACjF,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAgB;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAChC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;QAC5B,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED;mEAC+D;IACvD,KAAK;QACX,kFAAkF;QAClF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChH,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG,CAAC;YACrC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,0FAA0F;IAC1F,WAAW;QACT,MAAM,GAAG,GAAgB,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,4EAA4E;IAC5E,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,8EAA8E;IAC9E,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,yFAAyF;IACzF,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,+CAA+C;IAC/C,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IACD,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;IAC/B,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,CAAY;IACtC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,oBAAoB;IAChC,MAAM,IAAI,GAAI,CAA4B,CAAC,QAAQ,CAAC;IACpD,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;SAC1C,IAAI,IAAI,EAAE,CAAC;QACd,IAAI,CAAC;YACH,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,CAAC,IAAI,IAAI,CAAC,CAAC,gEAAgE;QAC7E,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAI,CAAoD,CAAC,SAAS,CAAC;IAC7E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc;YACvB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC;YACrC,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,yCAAyC;YACnF,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG;gBAAE,CAAC,IAAI,GAAG,CAAC,CAAC,sCAAsC;YACrE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,CAAC,IAAK,CAAC,CAAC,KAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAI,CAA4B,CAAC,MAAM,CAAC;IACpD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;IACnD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Stable per-tab id. sessionStorage is per-tab and survives in-tab reload → exactly per-tab identity. */
|
|
2
|
+
export declare function getTabId(): string;
|
|
3
|
+
/** Current route: pathname + search (the frame's location). */
|
|
4
|
+
export declare function getRoute(): string | undefined;
|
|
5
|
+
/** Logical view id — the pathname (SPA route), stable across query changes. */
|
|
6
|
+
export declare function getViewId(): string | undefined;
|
|
7
|
+
//# sourceMappingURL=viewContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewContext.d.ts","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/viewContext.ts"],"names":[],"mappings":"AAgBA,0GAA0G;AAC1G,wBAAgB,QAAQ,IAAI,MAAM,CAcjC;AAGD,+DAA+D;AAC/D,wBAAgB,QAAQ,IAAI,MAAM,GAAG,SAAS,CAM7C;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAM9C"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replay 2.0 — view/tab context (R0.5). Every frame carries WHERE it happened so the streaming spine
|
|
3
|
+
* (R0.1–R0.4) can build a keyframe index, a per-tab timeline lane, and cross-device journeys:
|
|
4
|
+
* • tabId — stable per browser TAB (sessionStorage: unique per tab, survives in-tab reload). The
|
|
5
|
+
* SESSION id is shared across tabs by the bootstrap, so same session + different tabId =
|
|
6
|
+
* multi-tab stitch.
|
|
7
|
+
* • route — the current URL path (+search); the human-facing location of the frame.
|
|
8
|
+
* • viewId — a stable logical-view id (the pathname) so an SPA route is a chapter boundary.
|
|
9
|
+
* (The soft keyframe on SPA navigation is ALREADY handled by `cadence.ts` (`onCheckpoint('url')`), so
|
|
10
|
+
* a cadence-triggered keyframe naturally carries the new route via these getters — no extra watcher.)
|
|
11
|
+
* Zero-dependency; SSR-safe.
|
|
12
|
+
*/
|
|
13
|
+
import { uuid } from '../../../core';
|
|
14
|
+
const TAB_KEY = 'scalebun_replay_tab';
|
|
15
|
+
/** Stable per-tab id. sessionStorage is per-tab and survives in-tab reload → exactly per-tab identity. */
|
|
16
|
+
export function getTabId() {
|
|
17
|
+
try {
|
|
18
|
+
if (typeof sessionStorage !== 'undefined') {
|
|
19
|
+
let id = sessionStorage.getItem(TAB_KEY);
|
|
20
|
+
if (!id) {
|
|
21
|
+
id = `t_${uuid()}`;
|
|
22
|
+
sessionStorage.setItem(TAB_KEY, id);
|
|
23
|
+
}
|
|
24
|
+
return id;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
/* storage disabled */
|
|
29
|
+
}
|
|
30
|
+
return memoTab ?? (memoTab = `t_${uuid()}`);
|
|
31
|
+
}
|
|
32
|
+
let memoTab;
|
|
33
|
+
/** Current route: pathname + search (the frame's location). */
|
|
34
|
+
export function getRoute() {
|
|
35
|
+
try {
|
|
36
|
+
return typeof location !== 'undefined' ? location.pathname + location.search : undefined;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** Logical view id — the pathname (SPA route), stable across query changes. */
|
|
43
|
+
export function getViewId() {
|
|
44
|
+
try {
|
|
45
|
+
return typeof location !== 'undefined' ? location.pathname : undefined;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=viewContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewContext.js","sourceRoot":"","sources":["../../../../src/features/replay/lifecycle/viewContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAEtC,0GAA0G;AAC1G,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC;QACH,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE,CAAC;YAC1C,IAAI,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,EAAE,GAAG,KAAK,IAAI,EAAE,EAAE,CAAC;gBACnB,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IACD,OAAO,OAAO,IAAI,CAAC,OAAO,GAAG,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC;AACD,IAAI,OAA2B,CAAC;AAEhC,+DAA+D;AAC/D,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC;QACH,OAAO,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC;QACH,OAAO,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scroll producer (#13 P3) — hardens the scroll-depth signal for the scroll map.
|
|
3
|
+
*
|
|
4
|
+
* The eager autocapture already keeps a naive `maxScrollPct` (recomputed from `scrollHeight` on every
|
|
5
|
+
* scroll — a layout read, and frozen against the height at one instant, which is wrong on pages that
|
|
6
|
+
* grow: infinite scroll, late-loaded content, virtualized lists). This LAZY module tracks the deepest
|
|
7
|
+
* pixel offset reached plus the document height via a `ResizeObserver` (no per-scroll reflow), and
|
|
8
|
+
* computes the honest depth% at emit time — so a page that doubled in height reports the right number.
|
|
9
|
+
*
|
|
10
|
+
* It is loaded as its OWN chunk from inside the already-lazy autocapture chunk, so the eager core pays
|
|
11
|
+
* ~0 bytes for it. Autocapture calls `summary()` when it emits `$pageleave` (the returned props OVERRIDE
|
|
12
|
+
* the naive scalar) and `reset()` on each SPA pageview. Positions only — never page content.
|
|
13
|
+
*/
|
|
14
|
+
export interface ScrollSummary {
|
|
15
|
+
scroll_depth_pct: number;
|
|
16
|
+
max_scroll_px: number;
|
|
17
|
+
doc_h: number;
|
|
18
|
+
viewport_h: number;
|
|
19
|
+
max_bucket: 0 | 25 | 50 | 75 | 100;
|
|
20
|
+
/** False when the page fits the screen — its 100% depth is geometry, not readership. */
|
|
21
|
+
scrollable: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface ScrollTracker {
|
|
24
|
+
/** Enrichment for `$pageleave` — overrides autocapture's naive `scroll_depth_pct`. */
|
|
25
|
+
summary: () => ScrollSummary;
|
|
26
|
+
/** New pageview (SPA nav): forget the previous page's depth. */
|
|
27
|
+
reset: () => void;
|
|
28
|
+
stop: () => void;
|
|
29
|
+
}
|
|
30
|
+
export declare function installScrollTracker(): ScrollTracker;
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/scroll/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IACnC,wFAAwF;IACxF,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,sFAAsF;IACtF,OAAO,EAAE,MAAM,aAAa,CAAC;IAC7B,gEAAgE;IAChE,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAMD,wBAAgB,oBAAoB,IAAI,aAAa,CAoFpD"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scroll producer (#13 P3) — hardens the scroll-depth signal for the scroll map.
|
|
3
|
+
*
|
|
4
|
+
* The eager autocapture already keeps a naive `maxScrollPct` (recomputed from `scrollHeight` on every
|
|
5
|
+
* scroll — a layout read, and frozen against the height at one instant, which is wrong on pages that
|
|
6
|
+
* grow: infinite scroll, late-loaded content, virtualized lists). This LAZY module tracks the deepest
|
|
7
|
+
* pixel offset reached plus the document height via a `ResizeObserver` (no per-scroll reflow), and
|
|
8
|
+
* computes the honest depth% at emit time — so a page that doubled in height reports the right number.
|
|
9
|
+
*
|
|
10
|
+
* It is loaded as its OWN chunk from inside the already-lazy autocapture chunk, so the eager core pays
|
|
11
|
+
* ~0 bytes for it. Autocapture calls `summary()` when it emits `$pageleave` (the returned props OVERRIDE
|
|
12
|
+
* the naive scalar) and `reset()` on each SPA pageview. Positions only — never page content.
|
|
13
|
+
*/
|
|
14
|
+
// Depth is defined ONCE in core/scrollDepth — see that file for why the previous local formula
|
|
15
|
+
// (`maxPx / (docH - viewportH)`) was wrong in two separate ways.
|
|
16
|
+
import { scrollDepthPct, foldBucketOf, isScrollable } from '../../core/scrollDepth';
|
|
17
|
+
export function installScrollTracker() {
|
|
18
|
+
if (typeof window === 'undefined' || typeof document === 'undefined') {
|
|
19
|
+
// SSR / non-DOM: a no-op that never contributes props (autocapture keeps its own scalar).
|
|
20
|
+
return { summary: () => zero(), reset: () => { }, stop: () => { } };
|
|
21
|
+
}
|
|
22
|
+
let maxPx = 0;
|
|
23
|
+
// Document + viewport height are maintained OUT of the scroll path (ResizeObserver / resize), so the
|
|
24
|
+
// hot scroll handler never touches `scrollHeight`/`clientHeight` — no layout thrash. `0` = not yet
|
|
25
|
+
// measured, in which case summary() reads once as a fallback (covers environments without RO).
|
|
26
|
+
let docH = 0;
|
|
27
|
+
let viewportH = 0;
|
|
28
|
+
const de = () => document.documentElement;
|
|
29
|
+
const readHeights = () => {
|
|
30
|
+
try {
|
|
31
|
+
const el = de();
|
|
32
|
+
docH = Math.max(docH, el.scrollHeight); // keep the tallest the page ever was (growing pages)
|
|
33
|
+
viewportH = window.innerHeight || el.clientHeight || 0;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
/* metrics unavailable */
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const onScroll = () => {
|
|
40
|
+
// Cheap: read scroll offset only. Height is cached; never read here.
|
|
41
|
+
const y = window.scrollY || window.pageYOffset || 0;
|
|
42
|
+
if (y > maxPx)
|
|
43
|
+
maxPx = y;
|
|
44
|
+
};
|
|
45
|
+
let ro;
|
|
46
|
+
if (typeof ResizeObserver !== 'undefined') {
|
|
47
|
+
try {
|
|
48
|
+
ro = new ResizeObserver(() => readHeights());
|
|
49
|
+
ro.observe(de());
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
ro = undefined;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
readHeights(); // initial measure
|
|
56
|
+
window.addEventListener('scroll', onScroll, { passive: true });
|
|
57
|
+
window.addEventListener('resize', readHeights, { passive: true });
|
|
58
|
+
const summary = () => {
|
|
59
|
+
readHeights(); // once, at emit — catches the final height even if a ResizeObserver tick was missed
|
|
60
|
+
const dh = docH || 0;
|
|
61
|
+
const vp = viewportH || 0;
|
|
62
|
+
const pct = scrollDepthPct(maxPx, dh, vp);
|
|
63
|
+
return {
|
|
64
|
+
scroll_depth_pct: pct,
|
|
65
|
+
max_scroll_px: Math.round(maxPx),
|
|
66
|
+
doc_h: Math.round(dh),
|
|
67
|
+
viewport_h: Math.round(vp),
|
|
68
|
+
max_bucket: foldBucketOf(pct),
|
|
69
|
+
scrollable: isScrollable(dh, vp),
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
return {
|
|
73
|
+
summary,
|
|
74
|
+
reset: () => {
|
|
75
|
+
maxPx = 0;
|
|
76
|
+
docH = 0;
|
|
77
|
+
// Viewport is not route-dependent, so it is safe to read right now. The DOCUMENT height is not:
|
|
78
|
+
// autocapture calls reset() from `pageview()`, at which point the OUTGOING route's DOM is still
|
|
79
|
+
// mounted (the framework has not rendered the new one yet). Measuring here captures the wrong
|
|
80
|
+
// page — and because `readHeights` keeps the tallest height ever seen (correct, for pages that
|
|
81
|
+
// legitimately grow via infinite scroll), that stale value is latched for the entire new pageview
|
|
82
|
+
// and can never correct downward.
|
|
83
|
+
//
|
|
84
|
+
// Live data: `/sign-in` is a 958px form, but rows carried doc_h 6,805 and 13,787 inherited from
|
|
85
|
+
// `/`; `/patient/main` (781px) reported a 15,542px document. Depth is a fraction of doc_h, so
|
|
86
|
+
// those pageviews reported single-digit percentages for pages the visitor had seen all of.
|
|
87
|
+
//
|
|
88
|
+
// Leaving docH at 0 is safe: the ResizeObserver fires when the new DOM lands, and summary()
|
|
89
|
+
// re-reads at emit time regardless, so both paths still measure — just not the wrong page.
|
|
90
|
+
viewportH = window.innerHeight || 0;
|
|
91
|
+
},
|
|
92
|
+
stop: () => {
|
|
93
|
+
window.removeEventListener('scroll', onScroll);
|
|
94
|
+
window.removeEventListener('resize', readHeights);
|
|
95
|
+
ro?.disconnect();
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function zero() {
|
|
100
|
+
return { scroll_depth_pct: 0, max_scroll_px: 0, doc_h: 0, viewport_h: 0, max_bucket: 0, scrollable: false };
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/scroll/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owns the session identity + the static client/device/app/context blocks for every envelope.
|
|
3
|
+
*
|
|
4
|
+
* The session id is PERSISTED (see ./sessionStore) rather than minted per document, so a refresh or
|
|
5
|
+
* a second tab continues the same session instead of starting a new one. Boundary rules live in the
|
|
6
|
+
* store; this stays a thin header source.
|
|
7
|
+
*/
|
|
8
|
+
import type { ClientInfo, DeviceInfo, AppInfo, ContextInfo } from '@scalebun/protocol';
|
|
9
|
+
import type { ResolvedConfig } from '../../config/schema';
|
|
10
|
+
export declare class SessionManager {
|
|
11
|
+
private readonly config;
|
|
12
|
+
readonly sessionId: string;
|
|
13
|
+
readonly deviceId: string;
|
|
14
|
+
constructor(config: ResolvedConfig);
|
|
15
|
+
client(): ClientInfo;
|
|
16
|
+
device(): DeviceInfo;
|
|
17
|
+
app(): AppInfo;
|
|
18
|
+
/**
|
|
19
|
+
* Called once per outgoing envelope, which makes it the one hook that runs for EVERY feature
|
|
20
|
+
* without needing a listener of its own — so activity slides the inactivity window even in an
|
|
21
|
+
* SPA that never reloads and never records replay. `touchSession` throttles the write.
|
|
22
|
+
*/
|
|
23
|
+
context(): ContextInfo;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=sessionManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionManager.d.ts","sourceRoot":"","sources":["../../../src/features/session/sessionManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAS1D,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEG,MAAM,EAAE,cAAc;IASnD,MAAM,IAAI,UAAU;IAGpB,MAAM,IAAI,UAAU;IAGpB,GAAG,IAAI,OAAO;IAGd;;;;OAIG;IACH,OAAO,IAAI,WAAW;CAIvB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owns the session identity + the static client/device/app/context blocks for every envelope.
|
|
3
|
+
*
|
|
4
|
+
* The session id is PERSISTED (see ./sessionStore) rather than minted per document, so a refresh or
|
|
5
|
+
* a second tab continues the same session instead of starting a new one. Boundary rules live in the
|
|
6
|
+
* store; this stays a thin header source.
|
|
7
|
+
*/
|
|
8
|
+
import { getOrCreateDeviceId, buildClient, buildDevice, buildApp, buildContext } from '../../core';
|
|
9
|
+
import { resolveSession, touchSession, DEFAULT_SESSION_TIMEOUT_MS, DEFAULT_SESSION_MAX_MS, } from './sessionStore';
|
|
10
|
+
export class SessionManager {
|
|
11
|
+
constructor(config) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
const record = resolveSession(config.sessionTimeoutMs ?? DEFAULT_SESSION_TIMEOUT_MS, config.sessionMaxDurationMs ?? DEFAULT_SESSION_MAX_MS);
|
|
14
|
+
this.sessionId = record.id;
|
|
15
|
+
this.deviceId = getOrCreateDeviceId();
|
|
16
|
+
}
|
|
17
|
+
client() {
|
|
18
|
+
return buildClient();
|
|
19
|
+
}
|
|
20
|
+
device() {
|
|
21
|
+
return buildDevice(this.deviceId);
|
|
22
|
+
}
|
|
23
|
+
app() {
|
|
24
|
+
return buildApp(this.config);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Called once per outgoing envelope, which makes it the one hook that runs for EVERY feature
|
|
28
|
+
* without needing a listener of its own — so activity slides the inactivity window even in an
|
|
29
|
+
* SPA that never reloads and never records replay. `touchSession` throttles the write.
|
|
30
|
+
*/
|
|
31
|
+
context() {
|
|
32
|
+
touchSession();
|
|
33
|
+
return buildContext();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=sessionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionManager.js","sourceRoot":"","sources":["../../../src/features/session/sessionManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACnG,OAAO,EACL,cAAc,EACd,YAAY,EACZ,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB,MAAM,OAAO,cAAc;IAIzB,YAA6B,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;QACjD,MAAM,MAAM,GAAG,cAAc,CAC3B,MAAM,CAAC,gBAAgB,IAAI,0BAA0B,EACrD,MAAM,CAAC,oBAAoB,IAAI,sBAAsB,CACtD,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACxC,CAAC;IAED,MAAM;QACJ,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IACD,MAAM;QACJ,OAAO,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IACD,GAAG;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IACD;;;;OAIG;IACH,OAAO;QACL,YAAY,EAAE,CAAC;QACf,OAAO,YAAY,EAAE,CAAC;IACxB,CAAC;CACF"}
|